当前位置:   article > 正文

Python:串口通信_python 串口通讯

python 串口通讯

1.安装pyserial

    pip install pyserial

2.查看端口

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

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

3.实例化串口

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

4.串口发送

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

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

5.串口接收

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

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

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

6.其它常用方法

close(), 关闭串口

open(),    打开串口

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

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

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

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

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

7.简单的串口程序

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/211175
推荐阅读
相关标签
  

闽ICP备14008679号