首页 > Python资料 博客日记
Python中的串口通信库pyserial(基础)
2024-10-13 00:00:07Python资料围观86次
文章Python中的串口通信库pyserial(基础)分享给大家,欢迎收藏Python资料网,专注分享技术知识
概要
pyserial是一个Python库,它提供了与串口通信相关的功能。它可以让我们在Python程序中直接与串口设备进行通信,如读取和写入串口数据。pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。
pip install pyserial
基础知识
1初始化串口
import serial
# 创建Serial对象,初始化串口
ser = serial.Serial('COM1', 9600, timeout=1) # Windows示例,COM1是串口号,9600是波特率,timeout是读超时时间
# 或
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # Linux示例,/dev/ttyUSB0是串口号
参数解释:
- port:串口号,Windows上通常以COM开头,Linux上通常以/dev/tty开头。
- baudrate:波特率,数据传输的速率。
- timeout:读操作的超时时间,单位秒。如果在指定时间内没有读取到数据,将返回空。
2. 写入数据
ser.write(b'Hello, Serial Port!') # 向串口写入数据
**解释:**write方法用于向串口发送数据。注意,发送的数据必须是字节类型(bytes),因此字符串前需要加b前缀
3. 读取数据
data = ser.read(10) # 读取10个字节的数据
line = ser.readline() # 读取一行数据,以换行符结束
解释:readline方法用于读取一行数据,直到遇到换行符(\n)。如果没有设置超时,且没有接收到换行符,则会一直等待。
4. 关闭串口
ser.close() # 关闭串口连接
解释:close方法用于关闭串口连接,释放系统资源。
5. 设置和获取串口参数
# 设置波特率
ser.baudrate = 115200
# 获取波特率
print(ser.baudrate)
# 设置数据位、校验位和停止位
ser.bytesize = serial.EIGHTBITS # 8位数据位
ser.parity = serial.PARITY_NONE # 无校验位
ser.stopbits = serial.STOPBITS_ONE # 1位停止位
# 检查串口是否已打开
print(ser.isOpen()) # 或使用 ser.is_open(注意:在较新版本的PySerial中,推荐使用is_open)
解释:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。
6. 清除缓冲区
ser.flushInput() # 清除输入缓冲区
ser.flushOutput() # 清除输出缓冲区
解释:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。这可以在某些情况下用于重置串口状态或确保数据的准确性。
7. 发送中断信号
ser.sendBreak(duration=0.25) # 发送BREAK信号,持续0.25秒
解释:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。duration参数指定了BREAK信号的持续时间。
小结
1. serial.Serial(): 用于打开、关闭和配置串行设备。
2. serial.Serial(port, baudrate=9600, timeout=0.5): 用于打开串行设备,并指定波特率、数据位和停止位。
3. serial.CommPortIdentifier(): 用于获取指定名称的串行设备的标识符。
4. serial.DataReceived(): 用于在串行设备上接收数据。
5. serial.DataAvailable(): 用于检查串行设备上是否有数据可用。
6. serial.OpenPort(): 用于打开指定名称的串行设备。
7. serial.ClosePort(): 用于关闭指定名称的串行设备。
8. serial.ParityError(): 用于检查在读取数据时是否出现了奇偶校验错误。
9. serial.ReadTimeout(): 用于检查在读取数据时是否超时。
10. serial.StopIteration(): 用于终止迭代器对象。
11. serial.DataReceived(bytes): 用于在读取数据时接收数据。
12. serial.RegisterApp(app_callable): 用于注册一个应用程序到串行设备上。
13. serial.UnregisterApp(app_callable): 用于从串行设备上注册的应用程序中移除指定的应用程序。
14. serial.Read(size): 用于从串行设备上读取指定数量的数据。
15. serial.Write(data[, offset[, count]]): 用于向串行设备上写入指定数量的数据。
16. serial.FlushInput(): 用于将输入缓冲区中的数据立即写入到串行设备上。
17. serial.FlushOutput(): 用于将输出缓冲区中的数据立即写入到串行设备上。
18. serial.SendBreak(): 用于发送一个破折号,以便等待接收方回复。
19. serial.SetWriteHandler(handler): 用于注册一个回调函数,以便在数据写入时进行处理。
20. serial.SetReadHandler(handler): 用于注册一个回调函数,以便在数据读取时进行处理。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程