python serial模块

python serial模块文章目录 pythonserial 模块 serial 模块简介 serial 模块使用方法 1 打开串口 设置相关属性 2 发送数据 3 接收数据 pythonserial 模块 serial 模块简介串口 seria

大家好,欢迎来到IT知识分享网。

python serial模块详细教程

1. 串口通信简介

  • 串口Uart操作是嵌入式最基础,最简单,也是使用最广范的一种通信协议
  • 串口(serial),全称串行通信接口或串行通讯接口,是一种常用于电子设备间通讯的全双工扩展接口
  • 串行通信:串口通讯的技术基础,指一位一位地按顺序传送数据。其特点是线路简单,只需一对传输线,即可实现双向通信,大大降低成本。适用于远距离通信,但速度较慢;
  • 如果你对串口通信不是很熟悉,点击学习:你真的了解串口通信吗?

2. pyserial模块简介

  • pyserial是python中处理串口通讯的一个模块名,操做简单高效
  • 官网链接如下:

https://pythonhosted.org/pyserial/

  • 模块安装下载:pip install pyserial

3. serial模块使用方法

学会操做串口十分简单,学会如何打开一个串口并设置其相关属性,然后能使用该串口接受发送数据,就彻底掌握了串口的操做使用。

3.1 打开串口,设置相关属性

  • 使用Serial()方法,即可新建打开一个serial实例
  • 参数属性设置如下表
属性 示例 含义
port port = ‘COM1’ 读或者写端口
baudrate baudrate = 波特率
bytesize bytesize = 8 字节大小
parity parity = ‘N’ 校验位
stopbit stopbits = 1 停止位
timeout timeout = None 超时设置
xonxoff xonxoff = False 软件流控
rtscts rtscts = False 硬件流控
dsrdtr dsrdtr = False 硬件流控
  • 代码示例如下:
import serial if __name__ == '__main__': ser = serial.Serial() ser.port = 'COM1' ser.baudrate =  print(ser) ''' # 打印内容如下: Serial<id=0x1c695f0d340, open=True> (port='COM1', -> 读或者写端口 baudrate=, -> 波特率 bytesize=8, -> 字节大小 parity='N', -> 校验位 stopbits=1, -> 停止位 timeout=None, -> 超时设置 xonxoff=False, -> 软件流控 rtscts=False, -> 硬件流控 dsrdtr=False) -> 硬件流控 ''' 
  • 串口操做的常用方法汇总如下表:
方法 说明
ser.isOpen() 查看端口是否被打开
ser.open() 打开端口
ser.close() 关闭端口
ser.read() 从端口读字节数据。默认1个字节。
ser.read_all() 从端口接收全部数据。
ser.write(“hello”) 向端口写数据。
ser.readline() 读一行数据。
ser.readlines() 读多行数据。
in_waiting() 返回接收缓存中的字节数。
flush() 等待所有数据写出。
flushInput() 丢弃接收缓存中的所有数据。
flushOutput() 终止当前写操作,并丢弃发送缓存中的数据。

3. 2 发送数据

  • 发送数据十分简单,直接使用方法:write()即可
  • 示例代码:
import serial if __name__ == '__main__': ser = serial.Serial('COM1', ) success_bytes = ser.write(b'This is data for test\r\n') # b表示bytes类型, 直接发送字符串报错 print(success_bytes) # 发送数据长度 

3.3 接收数据

  • read方法接收
    • read(size),接收size单位的字符,默认接收一个字节
    • 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
    • 如果设置了超时时间,时间未到则一直等待
import serial if __name__ == '__main__': ser = serial.Serial('COM1', ) data = ser.read(11) # 读取11字符 print(data) # 打印格式 :b'hello world' 
  • readline方法接收
    • readline()是按行读取,即读到换行符是停止读取
    • 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
    • 如果设置了超时时间,时间未到则一直等待
import serial if __name__ == '__main__': ser = serial.Serial('COM1', ) data = ser.readline() # 读取到换行符为止 print(data) # 打印格式 :b'hello world\n' 

感谢阅读 若有错误 欢迎指正 !!!


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113117.html

(0)
上一篇 2026-01-14 10:26
下一篇 2026-01-14 10:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信