Python 使用pyserial检查奇偶校验错误
我目前正在用python编写一个小实用程序来监视串行线路上的通信。这是用来调试一些通过rs232连接的硬件,因此能够准确地看到线路上发生了什么是非常重要的。如何使用pyserial检查奇偶校验错误Python 使用pyserial检查奇偶校验错误,python,serial-port,pyserial,Python,Serial Port,Pyserial,我目前正在用python编写一个小实用程序来监视串行线路上的通信。这是用来调试一些通过rs232连接的硬件,因此能够准确地看到线路上发生了什么是非常重要的。如何使用pyserial检查奇偶校验错误 具体来说,我想知道是否有一种平台无关的方法可以使用pyserial查找奇偶校验位的值。我强烈希望不需要termios来执行此操作,因为这在某些windows机器上使用。我在Pi上用GPIO4逐位监控奇偶校验 灵感 我的解决方案是在第二个字节中输出奇偶校验位,并将其全部写入文件: import time
具体来说,我想知道是否有一种平台无关的方法可以使用pyserial查找奇偶校验位的值。我强烈希望不需要termios来执行此操作,因为这在某些windows机器上使用。我在Pi上用GPIO4逐位监控奇偶校验 灵感 我的解决方案是在第二个字节中输出奇偶校验位,并将其全部写入文件:
import time
import pigpio # http://abyz.me.uk/rpi/pigpio/python.html
RXD=4 # number of GPIO pin
pi = pigpio.pi()
if not pi.connected:
exit(0)
pigpio.exceptions = False # Ignore error if already set as bit bang read.
handle = pi.file_open("/home/pi/Documents/bit_bang_output.txt",pigpio.FILE_WRITE) #assuming that the file /opt/pigpio/access (yes without extension) contains a line /home/pi/Domcuments/* w
pi.bb_serial_read_open(RXD, 9600,9) # Set baud rate and number of data bits here. Reading 9 data bits will read the parity bit.
pigpio.exceptions = True
stop = time.time() + 5.0 # recording 5.0 seconds
while time.time() < stop:
(count, data) = pi.bb_serial_read(RXD)
if count:
#print(data.hex(),end="")
pi.file_write(handle, data.hex())
pi.bb_serial_read_close(RXD)
pi.stop()
导入时间
进口pigpio#http://abyz.me.uk/rpi/pigpio/python.html
RXD=4#GPIO引脚数
pi=pigpio.pi()
如果未连接pi,则:
出口(0)
pigpio.exceptions=False#如果已设置为bit bang read,则忽略错误。
handle=pi.file_open(“/home/pi/Documents/bit_bang_output.txt”,pigpio.file_WRITE)#假设文件/opt/pigpio/access(是,无扩展名)包含一行/home/pi/Domcuments/*w
pi.bb_serial_read_open(RXD,9600,9)#在此设置波特率和数据位数。读取9个数据位将读取奇偶校验位。
pigpio.exceptions=True
停止=时间。时间()+5.0#记录5.0秒
while time.time()<停止:
(计数,数据)=pi.bb_串行_读取(RXD)
如果计算:
#打印(data.hex(),end=”“)
pi.file_write(句柄,data.hex())
pi.bb_串行_读取_关闭(RXD)
pi.stop()
如何定义“奇偶校验错误”?到目前为止,您尝试了什么?@DanLenski,我特别想看看串行帧中奇偶校验位的值。我不确定您的硬件设置到底是什么样的,但我相信在标准PC串行端口中,奇偶校验是在硬件级别进行的,因此软件不会看到。如果您希望实现一个“”串行端口,它可以让您检查线路上的各个位,那么您可能必须使用不同的硬件。。。制作某种GPIO接口?我可以设置一个微控制器来接收串行数据,然后将其与奇偶校验位和任何帧错误信息一起发送到计算机,每接收一个字节发送2个字节。然后,脚本将解析该输出。然而,这正是我想要避免的努力,只需使用两个usb到串行转换器以及pyserial。我想如果不可能的话,我会再次研究基于微控制器的方法。我发现了一些其他的线索可能会帮助你。这些讨论了从串行端口读取原始数据的各种复杂性:,