我正在使用串行模块开发python应用程序。我使用此库中的线程实现,而不是通常的阻塞实现。此外,实际上我与Arduino交换数据并希望从中接收一个数据字节包,因此我使用Packetizer对象来异步处理来自arduino的数据包。现在我遇到了一个问题:当我向串口发送数据时 - 连接丢失了。
class Keyboard:
port = None
transport = None
protocol = None
def __init__(self):
self.connect()
def connect(self):
for port in list(serial.tools.list_ports.comports()):
if "VID:PID=2341:8037" in port[2]:
self.port = serial.Serial(port[0], 115200)
class SerialConnector(serial.threaded.Packetizer):
TERMINATOR = 0x04
def handle_packet(self, packet):
print(packet)
def connection_made(self, transport):
print("Connection established")
def connection_lost(self, exc):
print("Connection lost")
connector = serial.threaded.ReaderThread(self.port, SerialConnector)
connector.start()
self.transport, self.protocol = connector.connect()
def load(self):
self.transport.write(b"C")
首先,我创建了这个对象的一个实例。接下来,我调用它的load()方法,然后在控制台中收到“Connection lost”消息。而不是这个,Arduino必须向我发送响应的字节包。 Arduino工作正常,我试图在arduino串口终端发送“C”符号,我得到了正确的响应。