Проблемы с отправкой команд через pySerial - PullRequest
0 голосов
/ 25 июня 2010

Я пытаюсь поговорить с самодельной картой через последовательный порт, и поэтому использую pySerial. В Гипертерминале все отлично работает. Я могу написать:

$ audio on

и звук включен, но если я использую

ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")

ничего не происходит. Тем не менее, я могу читать входящие данные, так что в этом нет ничего плохого. Я не помогу, если я изменю \ r \ n на \ n или \ r.

РЕДАКТИРОВАТЬ: Иногда я действительно получаю обратную связь: нет такой команды при отправке точно такой же команды, как работает от HyperTerminal. Настройка также такая же, как в HyperTerminal.

Решено: Чтобы это сработало, мне нужно было отправить один и один символ и завершить передачу \ r.

Ответы [ 3 ]

2 голосов
/ 25 июня 2010

Получите осциллограф (у вас есть один, верно?) И наблюдайте за последовательной линией.Посылайте через него один символ в секунду и смотрите, что происходит в области (установите его для запуска на стартовом бите).Биты последовательного порта расположены в следующем порядке: начало, LSB .. MSB, четность, останов.

Проверьте, есть ли символы, которые не проходят, или есть шаблон.Другая возможность состоит в том, что все фактически делает это из порта, и ваша доска сбрасывает символы.

0 голосов
/ 13 апреля 2014

Отправка символов через Гипертерминал доставляет символы со скоростью, с которой вы их набираете.Отправляя символы через pyserial, они доставляются в виде непрерывного потока.Получатель (особенно на высоких скоростях) может отбрасывать их в зависимости от характера получателя.

Кроме того, когда вы отправляете команды интерпретатору, вам нужен только терминатор \ r (без \ n)(это все, что отправлено по гипертерму, обычно).ОДНАКО, если вы просто отображаете значения, вам может понадобиться \ n для генерации новой строки.

0 голосов
/ 25 июня 2010
  1. Тройная проверка, что скорость передачи устройства действительно 38400
  2. Тройная проверка четности, стоп-биты и т. Д.
  3. Помните об ухудшении сигнала при последовательной передаче на большие расстояния (вероятно, это не ваша проблема)

Если все вышеперечисленное извлечено, попробуйте поместить строку в байтовый массив и отправить ее через команду записи. Просто предположение.

...