在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
在控制台中输入要发送的数据,并在另一台设备上监听串口,即可看到接收到的数据。
这是一个简单的实现串口通信的多线程读取和写入操作的示例代码。根据实际需求,可以做更多的扩展和优化。
