首页 > 解决方案 > 如何通过 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() 还有其他选择吗?或者是什么错误?谢谢您的帮助!

标签: pythondecodeencodepyserial

解决方案


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

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

0a30313a32383a20a550000002000000000000000000000000000000000099ab

也许您可以尝试一下,看看会发生什么。乍一看,这对我来说毫无意义,至少它不像手册中所说的那样。

在串口上嗅探屏幕截图

为了得到它,我使用了这个程序。您可能想在连接设备的情况下试一试,并尝试弄清楚到底发生了什么。

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

    {0a30313a32383a20}{a550000002000000000000000000000000000000000099ab}

我不知道该前缀是否被仪器丢弃。我在手册中没有看到任何提及类似的内容,但它没有仔细阅读。


推荐阅读