创建两个线程,分别监听串口 COM1 和 COM2。当第一个线程监听到关键字 "hello" 后,它将退出并打印一条消息。然后第二个线程将启动,直到它也监听到关键字 "hi" 后退出。
时间: 2024-03-03 12:50:18 浏览: 95
好的,我来为您解答这个问题。
为了监听串口 COM1 和 COM2,我们需要使用 Python 的 PySerial 库。请确保您已经安装了它。
我们可以使用 threading 库来创建两个线程,分别监听 COM1 和 COM2。当第一个线程监听到关键字 "hello" 后,它将退出并打印一条消息。然后第二个线程将启动,直到它也监听到关键字 "hi" 后退出。
以下是代码示例:
```python
import threading
import serial
def listen_com1():
ser = serial.Serial('COM1', 9600)
while True:
line = ser.readline().decode('utf-8').rstrip()
if 'hello' in line:
print('Thread 1: Found keyword "hello"')
break
def listen_com2():
ser = serial.Serial('COM2', 9600)
while True:
line = ser.readline().decode('utf-8').rstrip()
if 'hi' in line:
print('Thread 2: Found keyword "hi"')
break
t1 = threading.Thread(target=listen_com1)
t2 = threading.Thread(target=listen_com2)
t1.start()
t1.join() # Wait for thread 1 to finish before starting thread 2
t2.start()
t2.join()
```
在这个示例中,我们首先定义了两个函数 `listen_com1()` 和 `listen_com2()`,它们分别监听 COM1 和 COM2 串口。当监听到关键字 "hello" 或 "hi" 后,它们将打印一条消息并退出。注意,我们使用了 `decode('utf-8').rstrip()` 将读取到的字节流转换为字符串,并删除字符串末尾的换行符。
然后,我们使用 `threading.Thread()` 函数创建两个线程 `t1` 和 `t2`,分别调用 `listen_com1()` 和 `listen_com2()` 函数。最后,我们使用 `start()` 方法启动线程,并使用 `join()` 方法等待线程结束。
请注意,此示例中的代码仅供参考,并可能需要根据您的具体需求进行修改。例如,您可能需要添加错误处理代码以处理串口连接错误、超时等情况。
阅读全文