gpt4 book ai didi

python - 通过 pyserial 发送十六进制(Modbus 数据包)时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:50 25 4
gpt4 key购买 nike

我在将以下十六进制代码 0x01 0x03 0x00 0x00 0x00 0x01 0x0a 0x84 发送到串行设备(电压传感器)时遇到一些问题,该设备将使用 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 个十六进制字节,以便按照 vb.net 应用程序将其放在一个数据包(Modbus 协议(protocol))中?

用于比较的VB代码:

     ' open the serial port if it is closed
If Me.SerialPort1.IsOpen = False Then
Me.SerialPort1.PortName = ComPort
Me.SerialPort1.BaudRate = "38400" 'Set Baud rate
Me.SerialPort1.RtsEnable = False ' Set RTS
Me.SerialPort1.DtrEnable = False ' Set DTR
Me.SerialPort1.Parity = IO.Ports.Parity.None
Me.SerialPort1.StopBits = IO.Ports.StopBits.Two
Me.SerialPort1.DataBits = 8 ' Set data length
Me.SerialPort1.Handshake = Handshake.XOnXOff
Me.SerialPort1.ReadTimeout = 10000
Me.SerialPort1.WriteTimeout = 10000
Me.SerialPort1.Open()
End If

Try
Dim CommandBlock(7) As Byte
CommandBlock(0) = &H1
CommandBlock(1) = &H3
CommandBlock(2) = &H0
CommandBlock(3) = &H0
CommandBlock(4) = &H0
CommandBlock(5) = &H1
CommandBlock(6) = &HA
CommandBlock(7) = &H84
Me.SerialPort1.Write(CommandBlock, 0, CommandBlock.Length)
Thread.Sleep(100)
Return True
Catch ex As Exception
Return False
End Try

预先感谢您的宝贵时间克里斯

最佳答案

您的 VB 应用程序启用 XON/XOFF 协议(protocol),而您的 Python 应用程序则不启用。如果没有打开 XON/XOFF,我怀疑您的 python 应用程序在发送每个字节之间等待一定的时间,因此接收设备将每个字节视为一个单独的“数据包”。

关于python - 通过 pyserial 发送十六进制(Modbus 数据包)时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com