2014-11-14 3 views
1

Мне нужно отправить файл через последовательный порт в мою программу, которая работает на встроенном устройстве с использованием протокола HyperTerminal и XMODEM. Последовательная связь в порядке (9600 бод, 1 StopBit, отсутствие контроля четности, 8 бит данных, управление потоком), потому что обе команды отправки и ответы на прием работают правильно.Получение файла через XModem на HyperTerminal

Когда я отправляю команду «загрузить», устройство отвечает, когда оно готово и ждет файл. В HyperTerminal я перейду в Transfer-> Send File ..., выберите файл и XMODEM-протокол, затем нажмите «Отправить». После нажатия кнопки «Отправить» загрузка не начинается и появляется сообщение с таймаутом.

Во время отладки я вижу, что программа не получает никакого байта из последовательного порта, но если я отправлю байт, нажав на клавишу, программа получит его. Могу ли я предположить, что проблема в том, что HyperTerminal ничего не посылает? Почему это?

+0

Возможно, вы захотите переформулировать этот вопрос, чтобы он явно касался разработки программного обеспечения. Если вы разрабатываете код XMODEM встраиваемого устройства, это может быть законным вопросом, но на первый взгляд это вне темы для SO и, вероятно, будет закрыто. – Clifford

+0

Что значит «повторное слово»? –

+0

Я имею в виду переписать его описанным образом, чтобы вопрос подходил под объем StackOverflow. См. Http://stackoverflow.com/help/on-topic и http://stackoverflow.com/help/dont-ask. Пока вы привлекли одно близкое голосование, но этот пользователь бесполезно решил не комментировать, чтобы объяснить свое возражение. – Clifford

ответ

0

Передача XMODEM инициируется приемником, а не отправителем. Передача начинается, когда принимающее устройство отправляет SOH (XMODEM) или «C» (XMODEM-CRC/1K). Если принимающая сторона не инициирует передачу, передача не произойдет.

Вы можете обнаружить, что вам необходимо начать передачу с отправляющего конца, а затем инициировать передачу в приемнике. Альтернативно, в ожидании передачи принимающая сторона может повторно отправить начальный символ, пока не получит ответ (или тайм-аут).

+0

Спасибо. Проблема заключалась в том, что первый «С», отправленный получателем, был слишком ранним, а следующий слишком поздним. –

Смежные вопросы