找回密码
 会员注册
查看: 17|回复: 0

Python中的串口通信库pyserial(基础)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71619
发表于 2024-9-6 12:51:33 | 显示全部楼层 |阅读模式
文章目录概要基础知识1初始化串口2.写入数据3.读取数据4.关闭串口5.设置和获取串口参数6.清除缓冲区小结概要pyserial是一个Python库,它提供了与串口通信相关的功能。它可以让我们在Python程序中直接与串口设备进行通信,如读取和写入串口数据。pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。pipinstallpyserial1基础知识1初始化串口importserial#创建Serial对象,初始化串口ser=serial.Serial('COM1',9600,timeout=1)#Windows示例,COM1是串口号,9600是波特率,timeout是读超时时间#或ser=serial.Serial('/dev/ttyUSB0',9600,timeout=1)#Linux示例,/dev/ttyUSB0是串口号1234567参数解释:port:串口号,Windows上通常以COM开头,Linux上通常以/dev/tty开头。baudrate:波特率,数据传输的速率。timeout:读操作的超时时间,单位秒。如果在指定时间内没有读取到数据,将返回空。2.写入数据ser.write(b'Hello,SerialPort!')#向串口写入数据1**解释:**write方法用于向串口发送数据。注意,发送的数据必须是字节类型(bytes),因此字符串前需要加b前缀3.读取数据data=ser.read(10)#读取10个字节的数据1line=ser.readline()#读取一行数据,以换行符结束1解释:readline方法用于读取一行数据,直到遇到换行符(\n)。如果没有设置超时,且没有接收到换行符,则会一直等待。4.关闭串口ser.close()#关闭串口连接1解释: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)12345678910111213解释:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。6.清除缓冲区ser.flushInput()#清除输入缓冲区ser.flushOutput()#清除输出缓冲区12解释:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。这可以在某些情况下用于重置串口状态或确保数据的准确性。7.发送中断信号ser.sendBreak(duration=0.25)#发送BREAK信号,持续0.25秒1解释: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):用于注册一个回调函数,以便在数据读取时进行处理。123456789101112131415161718192021
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 05:21 , Processed in 1.796103 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表