场景:多个电路板串口通讯,由于 电路不稳定,会有误码。人工使用串口助手发送指定测试指令耗时且枯燥。
借用@ColinFred的串口工具,实现简单统计串口误码率。
一、数据从哪里来再回哪里去
# coding=utf-8
import serial
import time
import binascii
serialPort = serial.Serial('COM3', 9600)
def myloop():
while True:
time.sleep(1)
while serialPort.inWaiting() > 0:
n = serialPort.inWaiting()
data = serialPort.read(n)[0:]
strData = str(binascii.b2a_hex(data))
print('serial receive data:' + strData)
serialPort.write(data)
if __name__ == '__main__':
myloop()
二、读取文件发送、处理。
# 处理误码率
def caculate_scale(self):
send = self.str_send.split(' ')
recv = self.str_recv.split(' ')
send_len = len(send)
recv_len = len(recv)
if send_len != recv_len:
self.s2__receive_text.insertPlainText('数据丢失:%s个字节,请人工处理误码率。' % (send_len - recv_len) + '\r\n')
else:
err_cnt: int = 0
for index in send_len:
if send[index] != recv[index]:
err_cnt += 1
self.s2__receive_text.insertPlainText('误码:%s %s' % send[index], recv[index] + '\r\n')
self.s2__receive_text.insertPlainText('误码:%s个字节,误码率%d' % (send_len - recv_len), err_cnt / send_len + '\r\n')