我的程序中执行到这里时 while (time.time() - start_time <= 40): read_byte = uart_r.read(1) if read_byte != b'': print(".", end="") received_bytes_list.append(read_byte.decode())我的QTimer()停止了直到while执行完,怎么让这个while不影响我的QTimer
时间: 2024-03-13 20:45:22 浏览: 68
UART_Rx.zip_PSOC3 UART_psoc uart程序_uart_rx_uartrx
你可以将这个while循环放在一个单独的线程中运行,这样就不会阻塞主线程,也就不会影响QTimer的执行。下面是一个简单的示例代码:
```python
import threading
import time
def read_uart(uart_r, received_bytes_list):
start_time = time.time()
while (time.time() - start_time <= 40):
read_byte = uart_r.read(1)
if read_byte != b'':
print(".", end="")
received_bytes_list.append(read_byte.decode())
# 在主线程中启动一个QTimer
timer = QTimer()
timer.timeout.connect(my_function)
timer.start(1000)
# 在另一个线程中执行读取串口数据的操作
uart_thread = threading.Thread(target=read_uart, args=(uart_r, received_bytes_list))
uart_thread.start()
```
在上面的代码中,`read_uart`函数会在一个单独的线程中执行,不会阻塞主线程。同时,在主线程中启动了一个QTimer,保证每隔一段时间会执行`my_function`函数。
阅读全文