发送数据后,Python串行连接丢失

时间:2016-11-02 16:29:03

标签: python arduino python-multithreading pyserial

我正在使用串行模块开发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”符号,我得到了正确的响应。

0 个答案:

没有答案