环境

  • python 3.8

  • pyserial 3.5

前言

串口使用是做嵌入式系统开发的必备技能,一般都会使用诸如 securecrtputty 这样的工具来发送和接收数据。本文就来介绍在 python 环境中,如何使用第三方库 pyserial 来进行串口数据操作。

安装

使用 pip 安装,执行命令

pip install pyserial

使用示例

首先,接上串口线,在 设备管理器 中找到该设备,如我这里的 COM11,这会在后面的代码中用到

9ac6369e329c4e8528ff9522052adc23.png

除了端口号,我们还需要设置一下串口的其它几个属性,比如波特率、数据位、奇偶校验位、停止位、DTR/DSRRTS/CTSXON/XOFF

5ca3a218b6e757f1f92f0d58d7ce692a.png

理清了这些后,就可以看下面的代码了

import serial

if __name__ == '__main__':

    # 如果不清楚当前的串口设备,pyserial 也提供了相应的 api
    import serial.tools.list_ports
    ports = list(serial.tools.list_ports.comports(include_links=False))
    for port in ports:
        print(port)

    # 创建串口对象
    ser = serial.Serial(port="COM11", baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1, rtscts=False)

    # 判断串口是否打开
    if ser.isOpen():
        print('open success.')

        # 发送数据,这里只支持 bytes 类型的数据,需要对字符串进行 encode 编码
        send_len = ser.write(b'usb start')
        print('send data length: {}'.format(send_len))

        # 读取数据,读取的内容也是 bytes 类型
        read_msg = ser.read(30)
        print('read_msg: {}'.format(read_msg))

    else:
        print('open failed.')

    # 关闭串口
    ser.close()

更多内容,可以参考官方的文档 https://pyserial.readthedocs.io/en/latest/

Python实用模块专题

更多有用的 python 模块,请移步

https://xugaoxiang.com/category/python/modules/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐