Я пытаюсь использовать USB-модем Conexant из C-программы. Модем находится в /dev/ttyACM0 .

В исходном коде я отправляю AT , затем ATZ для сброса модема. Я получаю ответ:

$ sudo ./modem.exe
Send 2: AT
Read 8: 0x41 0x8 0x20 0x8 0x54 0x8 0x20 0x8
Send 3: ATZ
Read 12: 0x41 0x8 0x20 0x8 0x54 0x8 0x20 0x8  0x5a 0x8 0x20 0x8

У меня проблемы с кодами ответов. Кроме того, коды, похоже, не документированы в Hayes Command Set или в моем старом руководстве US Robotics.

В чем смысл кода ответа?

1 ответ1

1

Читать 8: 0x41 0x8 0x20 0x8 0x54 0x8 0x20 0x8

Расшифровано: A [Backspace] [Пробел] [Backspace] T [Backspace] [Пробел] [Backspace]

Читать 12: 0x41 0x8 0x20 0x8 0x54 0x8 0x20 0x8 0x5a 0x8 0x20 0x8

Расшифровано: A [Backspace] [Пробел] [Backspace] T [Backspace] [Пробел] [Backspace] Z [Backspace] [Пробел] [Backspace]

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

Ответ программы на ваш вопрос указывает, что ваша программа отправляет AT, а затем ATZ. Но исходный код в pastebin отправит AT, затем E0, затем ATZ. Похоже, что ваша программа не соответствует исходному коду, который вы нам показываете.

Также обратите внимание, что в конце каждой отправляемой команды должен быть символ возврата каретки ('\r' или ASCII 0x0d), в противном случае команда будет неполной и модем не будет реагировать на нее.

И отправка только "E0" не является допустимой командой: чтобы отключить команду echo, вам нужно как минимум отправить «ATE0\r».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .