使用自定义EOL用pyserial读写十六进制

时间:2019-12-11 12:33:42

标签: python pyserial

我想通过串行通信(波特率38400,奇偶校验,数据位8,停止位1)与仪器进行通信。 仪器要求STX和ETX围绕消息(STXmessageETX)。 响应也这样设置。 如果我直接发送十六进制值,则通信效果最佳。因此,对于逗号“ A 0x00 0x01”,我发送“ 41 00 01”。 每次发送命令时,都会收到响应(使用ETX或0x03作为终止符)。该响应应被读回并显示。 我该如何实现?

当前我正在做类似的事情,但是它不起作用...

import serial
import time

 def SendHex(HexCommand):
    Timeout = 1

    portname = "COM10"
    Command = str("\x02" + HexCommand + "\x03")
    parity=serial.PARITY_EVEN
    ser = serial.Serial(portname, baudrate = 38400, timeout = 0.1)
    ser.write(Command.encode())    
    time.sleep (0.1)
    response = ""
    response = ser.readline()

    ser.close()
    return(response)

SendHex(74)

编辑: STX和ETX周围有<>,但显示不正确。

0 个答案:

没有答案