欢迎访问宙启技术站
智能推送

在Python中实现串口通信的多线程读取和写入操作

发布时间:2024-01-17 22:58:14

在Python中实现串口通信的多线程读取和写入操作可以使用pySerial库。pySerial是一个用于串口通信的Python库,通过它可以方便地进行串行通信。

下面是一个实现串口通信的多线程读取和写入操作的示例代码:

import serial
import threading

class SerialThread(threading.Thread):
    def __init__(self, port, baud_rate):
        threading.Thread.__init__(self)
        self.serial = serial.Serial(port, baud_rate)
        self.serial.timeout = 1
    
    def run(self):
        while True:
            data = self.serial.readline().decode('utf-8')
            if data:
                print('Received:', data.strip())

    def send_data(self, data):
        self.serial.write(data.encode('utf-8'))

if __name__ == '__main__':
    serial_thread = SerialThread('/dev/ttyUSB0', 9600)
    serial_thread.start()
    
    while True:
        data = input('Enter data to send: ')
        serial_thread.send_data(data)

在这个例子中,我们创建了一个继承自Thread的SerialThread类,用于执行串口读取和写入的操作。在SerialThread的构造函数中,我们使用pySerial打开串口并设置其波特率。在run方法中,我们使用while循环不断地读取串口数据,并在控制台打印出来。在send_data方法中,我们将输入的数据编码成字节并写入到串口。

在主程序中,我们创建了一个SerialThread实例,并启动线程。然后通过输入来发送数据到串口。注意,串口通信是阻塞的,所以在接收数据的时候需要设置超时时间,避免阻塞线程。

通过这种方式,我们可以实现串口通信的多线程读取和写入操作。主线程用于发送数据,而子线程用于接收数据,实现了同时进行的读写操作。

要运行这个例子,需要先安装pySerial库。可以使用以下命令来安装:

pip install pyserial

然后,将代码保存到一个文件(比如serial_thread.py),然后运行该文件:

python serial_thread.py

在控制台中输入要发送的数据,并在另一台设备上监听串口,即可看到接收到的数据。

这是一个简单的实现串口通信的多线程读取和写入操作的示例代码。根据实际需求,可以做更多的扩展和优化。