PySerial API считает, что com-порт все еще открыт во время записи (), почему? - PullRequest
0 голосов
/ 01 июня 2011

Я использую PySerial (Python API для последовательной связи) для отправки AT-команд на телефон Nokia через Bluetooth.

import serial
com = serial.Serial()
com.port = 19
com.timeout = 0 #also tried a timeout value greater than 0.
try:
    com.open()
    # at this point I turn off the phone.
    com.write("AT\r\n")
    print com.readlines()
except SerialException, e:
    print e

Сразу после открытия () ком, я выключаю телефон. Затем я пишу ("AT \ r \ n"). На этом этапе функциональные блоки и среда выполнения зависают.

Есть ли у вас решение?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2013

На самом деле, вы ищете именно writeTimeout, а не аргумент timeout.Поздний ответ, я знаю, но я все еще нуждался в этом, и я предполагаю, что я не единственный.

0 голосов
/ 01 июня 2011

Если для тайм-аута установлено значение 0, вы деактивируете параметр тайм-аута, read()/readlines() становится блокирующим вызовом. Звонящий будет заблокирован, пока устройство не ответит. Попробуйте установить ненулевое значение тайм-аута для вашего последовательного соединения com = serial.Serial(timeout=0.5).

Если он все еще зависает, проблема должна быть в стеке Bluetooth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...