python多线程串口通信
时间: 2023-08-04 15:03:14 浏览: 185
在Python中使用多线程进行串口通信的代码示例如下:
```python
import serial
import threading
import time
def receive():
while True:
# 这里stm32发送信息以什么为结尾?回车吗
tran_data1 = ord(serial_port.read())
if tran_data1 == 90:
tran_data2 = ord(serial_port.read())
if tran_data2 == 90:
ring = ord(serial_port.read())
task = ord(serial_port.read())
power = ord(serial_port.read())
print("data receive success!")
def send(mark, result):
while True:
data = bytearray([0x5a, 0x5a, mark, result, 0xb3])
print(data)
serial_port.write(data)
time.sleep(1)
if __name__ == '__main__':
serial_port = serial.Serial(
port="COM5",
baudrate=115200,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
)
# 等待串口初始化
time.sleep(0.5)
mark = 0
result = 1
t1 = threading.Thread(target=receive)
t2 = threading.Thread(target=send, args=[mark, result])
t1.start()
t2.start()
t1.join()
t2.join()
```
这段代码使用了Python的`serial`库来进行串口通信。其中,`receive`函数用于接收串口数据,`send`函数用于发送串口数据。在`main`函数中,创建了两个线程`t1`和`t2`,分别用于接收和发送数据。通过调用`start`方法启动线程,然后使用`join`方法等待线程结束。
需要注意的是,在Python中的多线程并不是真正的并行执行,因为Python的全局解释器锁(GIL)机制限制了多线程的并行性。因此,虽然使用多线程可以实现串口的收发数据,但实际上是假全双工的。[1]
阅读全文