如何通过pyserial与24字节的Vacom VAX控制器通信?

2024-09-30 00:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我得从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()还有其他选择吗?或者错误是什么? 谢谢你的帮助


Tags: import信息serial控制器portscommandserencode
1条回答
网友
1楼 · 发布于 2024-09-30 00:25:49

我不能给你一个完整的答案(我没有任何压力控制器,我从来没有使用过这个协议),但这可能会带你走上正确的道路

此VVD.exe软件似乎正在端口上发送此帧:

0a30313a32383a20a550000002000000000000000000000000000000000099ab

也许你可以试试看会发生什么。乍一看,这对我来说毫无意义,至少它和说明书上说的不一样

screenshot sniffing on the serial port

为了得到它,我用了this procedure。您可能希望在连接设备的情况下尝试一下,并尝试找出到底发生了什么

编辑:重读我的答案我刚刚加入了点,似乎有一个前缀的框架:

    {0a30313a32383a20}{a550000002000000000000000000000000000000000099ab}

我不知道这个前缀是否被仪器丢弃了。我没有看到手册中提到过类似的内容,但它没有仔细阅读

相关问题 更多 >

    热门问题