写一段python串口接收的代码,具备通讯过程中拔掉串口也不会退出软件的功能
时间: 2024-11-22 11:42:35 浏览: 6
在Python中,你可以使用`pySerial`库来创建一个串口对象,并利用异常处理来确保在串口丢失或关闭时程序不会立即退出。下面是一个示例代码片段,展示了如何在一个独立的线程中持续接收串口数据,并在遇到`OSError`异常时优雅地处理:
```python
import serial
from threading import Thread
class SerialReceiver(Thread):
def __init__(self, port, baudrate):
super().__init__()
self.ser = serial.Serial(port=port, baudrate=baudrate)
self.running = True
def run(self):
while self.running:
try:
data = self.ser.readline().decode('utf-8').strip() # 假设数据是以换行符分隔
print("Received:", data)
except (OSError, serial.SerialException) as e:
print(f"Error occurred: {e}")
self.stop()
def stop(self):
self.running = False
self.ser.close()
print("Closing serial connection...")
# 使用示例
receiver = SerialReceiver('/dev/ttyUSB0', 9600)
receiver.start()
# 程序主体可以做其他事情...
while True:
pass # 这里只是为了演示无限循环,实际应用中可以替换为你想要的任务
# 若要关闭串口接收,调用receiver.stop()
```
在这个例子中,如果用户意外拔掉了串口或者出现了其他通信故障,`run()`方法中的`except`块会捕获异常,关闭串口,并打印错误信息。然后主程序(无限循环处)可以继续运行,直到手动调用`receiver.stop()`来终止接收过程。
阅读全文