Python脚本接受串口数据并写入文本文档中

        最近对产品进行某项压力测试时,需要分析产品打印的串口数据,这就需要将串口数据保存到一个文本文档中供我们分析与查看,这项保存数据到文本文档中的功能一般的串口助手(如sscom)是支持的,但是这类调试助手保存的数据一般不带时间戳,如果出现问题,很难去确认问题出现的时间以及及进一步分析问题原因。比较简单的方案便是使用Python来编写一个测试脚本,帮助我们将接收到的串口数据及时间戳保存到我们要求的文本文档中来。

一、安装pyserial模块

        在使用串口前,首先需要安装pyserial串口通信模块,以提供serial module给我们的脚本使用。pyserial支持Windows、Linux和MAC系统,Windows系统可以直接在pycharm这个IDE上对工程的Python解释器进行操作,安装pyserial软件包。Linux可以在终端中依次输入如下命令:

sudo apt install python-pip    //Python2

sudo apt install python3-pip  //Python3

        如果已经安装了pip,则不需要上一步,直接输入如下命令即可:

pip install pyserial    //Python2

pip3 install pyserial    //Python3

二、编写测试脚本

        在安装好pyserial模块后,便可以编写我们的测试脚本了,思路如下:1、上电确定串口参数和文件存储名称;2、配置串口;3、在while(1)中循环接收串口数据;3、接受到数据后,将时间及串口数据写入到文本文档中。

        代码如下:

import serial
import datatime
import serial.tools.list_ports



def recvive_data(serial_channel)

        while 1 ==1 :

                data = serial.readline()

                if data == '' :

                        continue

                else :

                        break
        return data


if __name__ == '__main__' :

    comlist = serial.tools.list_ports.comports()
    i = 0
    for i in range(len(comlist))
   
    com = input('Please enter com number to select com,such as COM1\r\n')

    if com:

        baudrate = ('Pleasr enter baudrate,such as 115200\r\n')
        file_name = ('Please enter the name of the file to be stored\r\n')

        if baydrate:
            serial = serial.Serial(com,  int(baudrate),  time out = 0.005)

            if serial.isOpen():
                print("serial open success")
            else:
                print("serial open failed")

            while 1 == 1:
                if serial.in_waiting > 0 :
                    data = receive_data(serial)
                    print(datatime.datatime.now())
                    print(data.hex(' '))
                    
                    if file_name:
                        fw = open('./' + file_name + '.TXT', 'a' ,encoding = 'UTF-8')
                        fw.write(str(datatime.datatime.now()))
                        fw.write('\r\n')
                        fw.write(data.hex(' '))
                        fw.write('\r\n')
                        fw.close()


 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值