python检测串口误码率

场景:多个电路板串口通讯,由于 电路不稳定,会有误码。人工使用串口助手发送指定测试指令耗时且枯燥。

借用@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')

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python中,你可以使用OpenCV库来处理彩色图像并计算误码率。下面是一个示例代码: ```python import cv2 import numpy as np def calculate_error_rate(original_image, received_image, threshold): # 加载原始图像和接收图像 original = cv2.imread(original_image) received = cv2.imread(received_image) # 将图像转换为灰度图像 original_gray = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY) received_gray = cv2.cvtColor(received, cv2.COLOR_BGR2GRAY) # 计算差异图像 diff = cv2.absdiff(original_gray, received_gray) # 将差异图像二值化,大于阈值的像素置为255,小于等于阈值的像素置为0 _, binary_diff = cv2.threshold(diff, threshold, 255, cv2.THRESH_BINARY) # 统计误码像素数量 error_pixels = np.count_nonzero(binary_diff) # 计算误码率 total_pixels = original_gray.size error_rate = error_pixels / total_pixels return error_rate # 示例用法 original_image = 'original.jpg' received_image = 'received.jpg' threshold = 10 error_rate = calculate_error_rate(original_image, received_image, threshold) print(f"误码率:{error_rate}") ``` 以上代码假设原始图像和接收图像是彩色图像,分别保存在`original.jpg`和`received.jpg`文件中。函数`calculate_error_rate`将原始图像和接收图像转换为灰度图像,并计算差异图像。然后,根据设定的阈值将差异图像二值化,统计误码像素数量并计算误码率。最后,打印误码率。 请注意,此代码仅供参考,具体实现可能会根据你的需求和图像处理库的不同而有所调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值