我正在尝试通过AlphaLabs GM-2 Gaussmeter (https://www.alphalabinc.com/product/gm2/)的串口与python进行通信。高斯计是一种非常简单的设备,它只在前面板上显示所测量磁场的数字值。我们希望能达到这一点,因为我们可以读取测量结果,并绘制它与时间的关系图。
目前,我们在与设备的通信中遇到了问题,希望能得到一些帮助!我一直在尝试遵循他们的系统数据采集手册(https://www.alphalabinc.com/wp-content/uploads/2018/02/alphaapp_comm_protocol.pdf)...但是,我们肯定遇到了一个很大的障碍。
根据手册,如果我想向设备发送ID_METER_PROP命令,我需要向设备提供命令字节: 0x01,后跟“其内容无关紧要的5个字节”。这应该会给我们一个ASCII块,后跟一个终止字节或一个字节,表示有更多的数据。
从我们的代码中,我们可以得到一个ASCII块,后跟这个“确认字节”(表示它们是从高斯测量仪发送的更多数据……)但是我们似乎不能通过程序来接收这些数据。一旦我们调用这个程序它就会冻结高斯计。就像它试图发送更多数据,但就是不能。
谢谢你的建议!
我试着联系了Alpha实验室的技术支持,但遗憾的是,除了他们预制的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设置,并且我们绝对不期望设备会崩溃
发布于 2019-07-02 10:40:29
首先,我认为你应该在调用write之后调用sleep 。
文档说,如果你得到了那个“确认字节”,你应该重复这个过程。
因此,您发送命令,读取,如果收到确认字节,则重复。
https://stackoverflow.com/questions/56844522
复制相似问题