ИЗМЕНИТЬ
Я узнал, в чем проблема, и ответил на свой вопрос.
Исходный вопрос под этой строкой
У меня есть последовательный мост между COM4
и COM5
, реализованный в программном обеспечении (в частности, утилита Free Virtual Serial Configuration Utility жесткого диска)
У меня есть два разных скрипта Python, запускаемых в двух разных экземплярах Powershell, сначала получите:
import serial
receive = serial.Serial(port = 'COM5', baudrate = 9600)
text = receive.read(100)
receive.close()
print text
Затем отправитель:
import serial
send = serial.Serial(port = 'COM4', baudrate = 9600, timeout = 0)
send.write("Hello")
send.close()
При запуске скрипта-отправителя скрипт-получатель получает отправленное сообщение (Так что связь явно установлена), но скрипт-отправитель сразу же завершается с ошибкой:
Traceback (most recent call last):
File ".\sending.py", line 3, in <module>
send.writelines("Hello")
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 270, in write
raise writeTimeoutError
serial.serialutil.SerialTimeoutException: Write timeout
Я получаю ту же ошибку, когда меняю сценарий отправителя на
send = serial.Serial(port = 'COM4', baudrate = 9600)
Итак, мой вопрос: что именно тайм-аут? Как предотвратить это? Я имею в виду, что данные отправляются, поэтому я, вероятно, мог бы просто поместить все это в блок try/except(and do nothing)
, но в долгосрочной перспективе это кажется плохим решением.