深入了解 Pyserial——Python 串口通信库

一、Pyserial 安装

Pyserial 是 Python 中使用串口通信的一个第三方库,使用它可以方便地与设备进行数据交互。在进行 Pyserial 的安装之前,需要确保 Python 已经安装了 Pip 包管理工具,如果没有安装,需要进行安装。

   $pip install pyserial

使用上述命令即可快速地完成 Pyserial 的安装。

二、串口 Pyserial 教程

下面我们将介绍 Pyserial 的基础使用方法。在使用 Pyserial 进行串口通信之前,需要先创建一个串口对象。可以通过类似下面的方式创建一个串口对象:

   import serial
   serialPort = serial.Serial(port, baudrate, bytesize, parity, stopbits, timeout)
参数说明:
  • port: 端口号。例如 Linux 下的 “/dev/ttyUSB0″。 Windows 下的 “COM1″。
  • baudrate: 波特率,可以设置为每秒传输的位数的数量。例如 9600、 115200。
  • bytesize: 每个字节的位数。增加时序字节时,字节大小通常为 7 或 8 位。
  • parity: 检验位,用于确定发送的数据是否被修改。
  • stopbits: 每个信号结束以后的停止位的数量。通常为 1 位或 2 位。
  • timeout: 超时时间,如果没有数据可用,等待时间的秒数。

完成创建串口对象以后,就可以通过 write() 函数实现数据的写入。例如下面的代码先向串口写入一串字节数据,然后从串口读取同样长度的数据。

   import serial
   
   serialPort = serial.Serial("/dev/ttyUSB0", 115200)
   
   data = bytes("Hello", 'utf-8')
   serialPort.write(data)
   
   data = serialPort.read(5)
   print(data)

三、Pyserial 和 Serial 的区别

对于 Python 用户而言,有时会混淆 Pyserial 和 Serial。实际上,Pyserial 是一个 Python 库,而 Serial 是一个单独的串口通信程序。虽然二者都可以用于串口通信,但 Pyserial 与 Python 紧密集成,因此在某些情况下使用 Pyserial 更为方便。

Pyserial 支持多个操作系统,包括 Windows、Linux 和 Mac OS X 等,而 Serial 仅支持 Windows 操作系统。对于仅在 Windows 上运行的应用程序,Serial 可能是更好的选择。

四、Pyserial Gui

Pyserial 还可以与一些图形化界面结合使用,例如 Tkinter。下面的示例演示了如何在 Tkinter 窗口中显示串口接收到的数据。

   from tkinter import *
   import serial
   
   class SerialGui(Frame):
       def __init__(self, parent):
           Frame.__init__(self, parent)
           self.parent = parent
           self.serialPort = serial.Serial('/dev/ttyUSB0', 9600)
           self.parent.after(10, self.update)
   
       def update(self):
           s = self.serialPort.read(1)
           if s:
               print(s.decode('utf-8'), end='')
           self.parent.after(10, self.update)
           
   if __name__ == '__main__':
       root = Tk()
       app = SerialGui(root)
       app.mainloop()

五、Pyserial Write

Pyserial 不仅可以读取串口设备中的数据,还可以向串口设备写入数据。下面的示例演示了如何使用 Pyserial 向串口设备发送数据。这里需要注意的是,如果要发送字符串数据,需要先进行编码,将字符串转换为字节数组。

   import serial
   
   s = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
   s.write(b'Hello, World!')

六、Python Serial

Python Serial 是 Pyserial 的一个分支项目,提供了更多的功能和灵活性。如果在使用 Pyserial 的过程中需要更多的功能,建议使用 Python Serial。

七、Pyserial Write 写入大量数据

如果要向串口写入大量数据,在使用 Pyserial 的 write() 函数时需要注意一些问题。当写入大量数据时,需要调用多次 write() 函数来实现。然而,如果两个 write() 函数的调用间隔过短,会导致写入的数据无法被设备完全接收。在调用 write() 函数之前,我们需要知道缓冲区的状态。可以通过 in_waiting 属性获取到当前缓冲区剩余可用字节数。

   import serial
   
   serialPort = serial.Serial("/dev/ttyUSB0", 115200)
   
   # 获取缓冲区剩余可用字节数
   buffer_size = serialPort.in_waiting
   
   # 检查缓冲区是否已满
   if buffer_size > 256:
       time.sleep(0.5)
   
   # 向串口发送大量数据
   for i in range(10000):
       data = bytes(str(i) + '\n', 'utf-8')
       serialPort.write(data)

在写入数据之前,需要检查缓冲区的状态,并在必要时等待缓冲区可用。通过这种方式可以确保写入的数据得到了设备的完整接收。

原创文章,作者:AWXU,如若转载,请注明出处:https://www.506064.com/n/148349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AWXUAWXU
上一篇 2024-11-03 15:15
下一篇 2024-11-03 15:15

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论