【发布时间】:2021-02-06 01:04:10
【问题描述】:
我正在将一些 C++ 代码移植到 Python 中,并且我花了很长时间弄清楚如何为串行字节设置 onReceive 处理程序。我正在使用
import serial_asyncio
class Arduino: #comms is with an Arduino in serial mode)
async def connect(self, serial_port):
(self.serial_reader, self.serial_writer) = await
serial_asyncio.open_serial_connection(url=serial_port, baudrate=115200)
print("serial opened:", serial_port)
self.buffer = b""
async def recv(self, data):
self.buffer += data
self.process_buffer(self.buffer)
if __name__ == '__main__':
ardunio = Arduino("/dev/ttyS0")
loop = asyncio.get_event_loop()
loop.run_until_complete(ardunio.connect())
loop.run_forever()
但是我不知道如何将 recv 处理程序修补到读取中。 我 Qt,我可以:
connect(&QAbstractSocket::readyRead, &Arduino::handleBytes);
在节点中:
arduino.on('data', line => console.log(line))
在 Python 中,似乎没有任何明显的答案?如何将到达的串口字节传递给 Arduino.receive(self, data)?
【问题讨论】: