参考github上nicegui的example里面的pyserial示例
发现有时候报端口不可用,好像是会执行前面的打开串口很多次,然后在主线程关掉串口,读的线程里又没有打开。所以做了一点点修改,可以跑通
import serial
from nicegui import app, run, ui
port = serial.Serial('COM70', baudrate=115200, timeout=0.1)
port.close()
ui.input('Send command').on('keydown.enter', lambda e: (
port.write(f'{e.sender.value}\n'.encode()),
e.sender.set_value(''),
))
log = ui.log()
async def read_loop() -> None:
try:
port.open()
except serial.SerialException as e:
ui.notify(e, type='negative', close_button= True)
while not app.is_stopped:
line = await run.io_bound(port.readline)
if line:
log.push(line.decode())
app.on_startup(read_loop)
ui.run(on_air = True, native=True)