python - 如何通过 pyserial 与 24 字节的 Vacom VAX 控制器通信?
问题描述
我必须从 Vacom VAX 控制器获取压力信息。手册中有一个获取通道2压力的例子,你可以在Vacom的主页上下载。该示例不适用于 python 中的 pyserial。
我已经下载了 Vacom VVD.exe,一个小演示程序。有用。所以我知道控制器的波特率,我看到了通道 2 的压力。
import serial.tools.list_ports as serial_ports
from serial import Serial
ports = serial_ports.comports()
for each in ports:
if each.manufacturer[:12] == 'VACOM Vakuum':
ser = Serial(port=each.device, baudrate=19200, timeout=1, bytesize=8, parity='N', stopbits=1)
print(each)
command='A5500000200802000000000000000000000000000000357A'
ser.write(command.encode())
print(ser.readline())
#answer:
#COM3 - VaX Serial Port (COM3)
#b''
我想得到压力,但我什么也没得到,我不知道如何转换命令。除了 encode() 还有其他选择吗?或者是什么错误?谢谢您的帮助!
解决方案
我不能给你一个完整的答案(我没有任何压力控制器,我从来没有使用过这个协议),但这可能会让你走上正确的道路。
此 VVD.exe 软件似乎在端口上发送此帧:
0a30313a32383a20a550000002000000000000000000000000000000000099ab
也许您可以尝试一下,看看会发生什么。乍一看,这对我来说毫无意义,至少它不像手册中所说的那样。
为了得到它,我使用了这个程序。您可能想在连接设备的情况下试一试,并尝试弄清楚到底发生了什么。
编辑:重新阅读我刚刚加入点的答案,框架似乎有一个前缀:
{0a30313a32383a20}{a550000002000000000000000000000000000000000099ab}
我不知道该前缀是否被仪器丢弃。我在手册中没有看到任何提及类似的内容,但它没有仔细阅读。