Я новичок в 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?)**