我在向串行设备(电压传感器)发送以下十六进制代码0x01 0x03 0x00 0x00 0x00 0x01 0x0a0x84时遇到一些问题,该设备将使用Python和pyserial返回当前电压的int。我的代码如下:
import serial
import time
ser = serial.Serial(
port=1,
baudrate=38400,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.EIGHTBITS,
timeout=0,
xonxoff=0,
rtscts=0)
ByteStringToSend = "\x01\x03\x00\x00\x00\x01\x0a\x84"
ser.write(ByteStringToSend)
time.sleep(1)
RecievedData = ""
while ser.inWaiting() > 0:
RecievedData = ser.read(1)
return RecievedData
问题是Python似乎是将每个字节作为一个单独的数据包发送,请参见下面的图像从串行监视器
见http://www.centralinfo.com.au/images/SerialOutput.png处的图像
前8个字节(00-07)来自python应用程序(注意不同包的颜色不同),接下来的8个字节(08-0f)是一个VB.net版应用程序发送相同的数据工作。在
我的问题是,如何发送上述8个十六进制字节,使其在一个数据包(Modbus协议)中,根据vb.net版应用程序?在
用于比较的VB代码:
^{pr2}$提前谢谢你的时间 克里斯
您的VB应用程序启用XON/XOFF协议,而python应用程序没有。如果没有启用XON/XOFF,我怀疑您的python应用程序在发送之前在每个字节之间等待一定的时间,因此接收设备将每个字节视为一个单独的“包”。在
相关问题 更多 >
编程相关推荐