Я пытаюсь обмениваться данными с гауссметром AlphaLabs GM-2 (https://www.alphalabinc.com/product/gm2/) через его USB-порт с последовательным интерфейсом в python. Гауссметр - довольно простое устройство, которое отображает только цифровое значение измеренного магнитного поля на передняя панель. Мы надеемся добраться до точки, где мы можем прочитать измерение и построить график в зависимости от времени.
На данный момент у нас есть проблемы со связью с устройством, и мы хотели бы помочь! Я пытался следовать их Руководству по сбору данных для их систем (https://www.alphalabinc.com/wp-content/uploads/2018/02/alphaapp_comm_protocol.pdf)..., но, увы, мы определенно столкнулись с большим препятствием.
Согласно руководству, если я хочу отправить устройству команду ID_METER_PROP, мне нужно передать устройству командный байт: 0x01, за которым следует «пять байтов, содержимое которых не имеет значения». Это должно дать нам блок ASCII, за которым следует либо завершающий байт, либо байт, сигнализирующий о наличии дополнительных данных.
Из нашего кода мы можем получить один блок ASCII, за которым следует этот «байт подтверждения» (указывающий, что это больше данных, которые должны быть отправлены с гауссметра ...), но мы не можем получить программу для получения этих данных. Когда мы вызываем эту программу, она замораживает гауссметр ... как будто пытается отправить больше данных, но просто не может.
Спасибо за любой совет!
Я пытался связаться со службой технической поддержки в Alpha Labs, но, к сожалению, они не смогли предложить какую-либо помощь в написании кода за пределами готового графического интерфейса.
'' 'питон
# 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 устройства, как определено в руководстве, и мы определенно не ожидаем, что устройство выйдет из строя