python 自动化测试串口

文章介绍了如何使用Python的serial库进行串口操作,包括打开串口、发送数据、接收响应以及记录日志。两个函数port_log()用于持续监控串口并记录接收到的数据,而port_test()则用于控制串口并验证接收到的回复。
摘要由CSDN通过智能技术生成

1.记录串口日志

import serial,time,re
import serial.tools.list_ports

def port_log():

    # 创建串口对象
    ser = serial.Serial(port="COM4", baudrate=115200,stopbits=1,timeout=0.5)
    # 判断串口是否打开
    if ser.isOpen():
        print('open success.')
        while True:
            if ser.in_waiting:
                # 读数据
                read_msghex = ser.readline()
                str=read_msghex.decode('utf-8')

                 # 打开日志文件
                port_log = open('../opt/port_log.txt', mode='a', encoding='utf-8')
                if (str == "exit"):  # 退出标志
                    break
                else:
                    print("收到数据:",time.strftime('%Y/%m/%d %H:%M:%S   ', time.localtime(time.time())),str,file=port_log)
                    # 切记关闭文件
                    port_log.close()
    else:
        print('open failed.')
    # 关闭串口
    ser.close()

if __name__ == '__main__':
    port_log()

2.控制串口,检查串口回复,记录日志

import serial,time,re
import serial.tools.list_ports

def port_test(send,msg):
    # 创建串口对象
    ser = serial.Serial(port="COM6", baudrate=9600,stopbits=1,timeout=0.5)
    # 判断串口是否打开
    if ser.isOpen():
        # print('open success.')
        while True:
            # 发送数据,这里只支持 bytes 类型的数据
            send_len = ser.write(bytes.fromhex(send))
            # print('send data length: {}'.format(send_len))

            # 读取数据,读取的内容也是 bytes 类型
            read_msghex = ser.readline().hex()
            msg_list = re.findall(".{2}", read_msghex.upper())
            read_msg = " ".join(msg_list)

            # 打开日志文件
            port_check_log = open('../opt/port_check_log.txt', mode='a', encoding='utf-8')
            if read_msg ==msg:
                print(time.strftime('%Y/%m/%d %H:%M:%S   ', time.localtime(time.time()))+'pass')
            else:
                print(time.strftime('%Y/%m/%d %H:%M:%S   ', time.localtime(time.time()))+str(read_msg),file=port_check_log)
                # 切记关闭文件
                port_check_log.close()
            time.sleep(7200)
    else:
        print('open failed.')

    # 关闭串口
    ser.close()
if __name__ == '__main__':

    # 控制空调开关
    port_test('01 06 0F A0 00 01 4B 3C','01 06 0F A0 00 01 4B 3C')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值