使用 pyserial 将串行消息导出到文本文件

Posted

技术标签:

【中文标题】使用 pyserial 将串行消息导出到文本文件【英文标题】:exporting seiral masseges to text file using pyserial 【发布时间】:2018-02-22 14:32:32 【问题描述】:

我是 python 新手,我编写了一个简单的代码,可以从串行端口读取行,然后将这些行写入文本文件。没有发生错误,但连续按摩没有出现在文本中。 代码:

import serial

ser = serial.Serial('COM32', baudrate=115200, parity=serial.PARITY_NONE,    stopbits=serial.STOPBITS_ONE,
                bytesize=serial.EIGHTBITS, xonxoff=1)
text = open("temptext1.txt", "a+")
while 1:
    read_line = ser.readline()
    print read_line
    text.write(read_line)

感谢帮助者,我非常不知道如何调试它。

【问题讨论】:

【参考方案1】:

试试下面的代码。

import serial
import io
def getSerialLogs(comport, fileName='SerialLog.txt', baudrate=115200):
    ser = serial.Serial(comport, baudrate, xonxoff =True, timeout=1)
    sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser, 1), encoding="utf-8")
    with open(fileName, 'a') as f:
        while ser.isOpen():
            datastring = sio.readline()
            f.write(datastring)

【讨论】:

工作正常,直到出现此错误:回溯(最近一次调用最后一次):文件“C:/Users/tc34669/PycharmProjects/untitled/gui 3.py”,第 11 行,在 数据字符串中= sio.readline() File "C:\Python27\lib\encodings\cp1255.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can '不解码位置 0 中的字节 0xff:字符映射到 尝试将参数 encoding="utf-8" 添加到 io.TextIOWrapper。修改了代码

以上是关于使用 pyserial 将串行消息导出到文本文件的主要内容,如果未能解决你的问题,请参考以下文章

使用pyserial测试usb到串口到usb没有输出

使用 pyserial 将数据发送到串行 - 在 Razor 9DOF IMU 上工作

使用 USB 串行电缆时自动将外围设备连接到 PC 的 Pyserial 代码

pyserial,ImportError:没有名为串行的模块

如何使用 PySerial 与 micro:bit 建立串行通信?

在 Windows 上使用 pyserial 将串行数据写入 Arduino