Последовательный порт и помощь в потоке Python - PullRequest
0 голосов
/ 27 марта 2020

Я новичок в python, поэтому у меня возникли проблемы с проектом.

Я переписал код для основной проблемы, которую я имею для простоты.

Фактический код использует многопоточность, потому что мне нужно сканировать последовательный порт для получения новой информации, одновременно сканируя файл dropbox для новой информации. Если я этого не сделаю, кажется, что я просто застреваю в ожидании новой строки вместо того, чтобы пропустить ее.


    import serial
    import threading

    try:
        # check for serial connection to arduino
        ser = serial.Serial('/dev/ttyACM0', 9600)
        print("serial connected")
    except serial.serialutil.SerialException:
        sys.exit("Arduino not connected!")


    def serialprt():
        if '\n' in ser.readline():
            data = float(ser.readline().strip())
            print('{0:0.2f}'.format(data))
            ser.flushInput()


    if __name__ == '__main__':
        while True:
            t = threading.Thread(target=serialprt).start()

У меня есть Arduino, подключенный к порту 'ttyACM0', который отправляет номера на последовательный порт. Обратите внимание, что это прекрасно работает, когда я не использую многопоточность.

Это ошибка:

Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(self.__args, self.__kwargs)
  File "serial_test.py", line 12, in serialpt
    if '\n' in ser.readline():
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 501, in read
    'device reports readiness to read but returned no data '
SerialException:  **device reports readiness to read but returned no data (device disconnected or multiple access on port?)**
...