我正在尝试通过其USB端口与python中的串行端口与AlphaLabs GM-2高斯计(https://www.alphalabinc.com/product/gm2/)通信。高斯计是一种非常简单的设备,仅在前面板上显示被测磁场的数字值。我们希望能够直截了当,我们可以读取测量值并将其与时间作图。
目前,我们在与设备通信方面遇到问题,希望能获得一些帮助!我一直在尝试针对他们的系统(https://www.alphalabinc.com/wp-content/uploads/2018/02/alphaapp_comm_protocol.pdf)遵循他们的《数据采集手册》 ...但是,可惜,我们的确遇到了很大的障碍。
根据手册,如果我想向设备发送ID_METER_PROP命令,则需要向设备提供命令字节:0x01,后跟“内容无关紧要的五个字节”。这应该给我们一个ASCII块,后跟一个终止字节或一个表明有更多数据的字节。
从我们的代码中,我们可以得到一个ASCII块,后跟这个“确认字节”(表明它们是要从高斯计发送的更多数据...),但是我们似乎无法退出程序来接收所述数据。一旦我们调用该程序,它就会冻结高斯计……就像它试图发送更多数据一样,只是不能。
感谢您的任何建议!
我曾尝试与Alpha Labs的技术支持联系,但可悲的是,他们无法在其预制的GUI之外提供任何编码帮助。
'''python
# Define the command to send to the device
command = serial.to_bytes([0x01, 0x03, 0x03, 0x03, 0x03, 0x03])
#print(command)
# Send command to device and save its return
ret=gaussmeter.getIdentification(command)
print(ret) # print return variable
#-----
#Defined Function getIdentification for reference
#-----
def getIdentification(self, command):
time.sleep(self.DEFAULT_SLEEP_TIME)
self.port.write(command)
identification = self.port.read(self.DEFAULT_READ_SIZE)
test = self.port.read(self.DEFAULT_READ_SIZE)
return identification, test
'''
上面的代码输出:(b':METER_NAME = GM2_GAUS \ x08',b'')
“ \ x08”是上面和手册中定义的“确认字节”。 调用此代码将冻结高斯计设备,并且重置它的唯一方法是拔下其插头,然后重新插入。
我们希望看到手册中定义的更多设备ASCII设置,而且我们绝对不希望设备出现故障
答案 0 :(得分:0)
首先,我相信您应该在之后致电write。
文档中说,如果得到了“确认字节”,则应该重复该过程。
因此,您发送命令进行读取,如果收到确认字节,请重复。