Python:串口通信

1.安装pyserial

    pip install pyserial

2.查看端口

可通过list_ports查看当前的各个端口,代码如下:

from serial.tools import list_ports

com_ports = list_ports.comports()    #列出当前所有串口,返回数据类型为列表
for com in com_ports:
    print(com[0])       #com[0],串口号
    #print(com.name)       #同com[0],打印串口号
    print(com[1])       #com[1],对应的端口名

3.实例化串口

import serial
ser = serial.Serial(port = 'COM1',          #串口COM1,windows
                    #port = ‘/dev/ttyS0’,   #Linux
                    baudrate = 9600,        #波特率,默认9600
                    bytesize = 8,           #数据位,默认8位
                    parity = 'N',           #校验位,可选‘N’、‘E’、‘O’,默认‘N’,无校验
                    stopbits = 1,           #停止位,可选1,1.5,2,默认为1位
                    timeout = 1             #超时,单位为秒,默认为NONE,一直等待
                    ) 

4.串口发送

   方法write(),参数需要是字节bytes类型,如果是字符串类型需进行‘utf-8’编码。
   该函数有一个返回值,返回值为发送的数据长度,int型。

1.  ser.write(b'123456')
2.  ser.write('123456'.encode('utf-8'))

5.串口接收

方法read(),参数为size,即接收字符长度,默认为1,如果没接收到指定长度会一直等待,如果设置了超时,会等待到超时时间。
read()接数的数据为字节bytes类型,要字符串类型需要进行‘utf-8’解码。

recv_str = ser.read(6).decode('utf-8')    #接收6个字节,‘utf-8’解码,转换为字符串
recv_hex = ser.read(6).hex()        #转换为hex类型 
print(recv_str)

readline(),读取一行,以\n结束,如果没有\n会一直读,阻塞,需要设定timeout,否则接收不到新行会一直等待。

6.其它常用方法

close(), 关闭串口

open(),    打开串口

isOpen(),   查看串口是否打开

inWaiting(),  返回接收缓存中的字节数

flush(),    等待所有数据写出

flushInput(),    丢弃接收缓存中的所有数据

扫描二维码关注公众号,回复: 17155899 查看本文章

flushOutput(),    终止当前写操作,丢弃发送缓存中的所有数据

7.简单的串口程序

import serial
#实例化串口
ser = serial.Serial('COM13')
#串口发送数据
len = ser.write('123456'.encode('utf-8'))
#串口接收数据
recv = ser.read(len).decode('utf-8')
print(recv)
#关闭串口
ser.close()

猜你喜欢

转载自blog.csdn.net/chn_zx/article/details/132802397