Перейти к содержанию
    

Как правильно принимать пакеты с ZMODEM

Может кто поделиться описанием протокола zmodem? Не смог найти нормальный документ. Нахожу только научно популярные статьи. А охота чтобы было объяснино как передавать и принимать файлы. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите, не удержался) Вот, подобная тема) Там в доках должен быть и ZModem.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пытаюсь изучить протокол Zmodem. 

Терминал teraterm. 

передача файла по zmodem. Терминал "72 7A 0D" отвечаю "0" --получаю--> "2A 2A 18 42 30 30 30 30 30 30 30 30 30 30 30 30 30 30 8D 8A 11".   Не понимаю где символы "CR LF"? Символ "XON" в конце есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После получения пакета ZFILE сразу получаю пакет в котором содержится название файла -?- конец + CRC16

|68 65 6C 6F 75 57 6F 72 6C 64 2E 74 78 74 2E 74 78 74 |  00 31 36 20 31 33 37 33 34 32 35 34 35 30 35 20 31 30 30 36 34 34 00   |   18 6B 3B 64 

Название файла                                                                                                              Что эта заданные ?                                                           конец + CRC16 

Может кто подскажет что это за данные ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Классическое описание протокола: http://gallium.inria.fr/~doligez/zmodem/zmodem.txt

Пользовался им в те времена, когда ваял свою терминалку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мучает меня вопрос как правильно принимать пакеты, решений много, но какое правильное не понятно . 

Начну с примера:

Есть такой пакет называется ZFILE ---> "68 65 6C 6C 6F 77 6F 72 6C 64 2E 74 78 74 00 31 37 20 31 33 37 33 36 37 33 36 32 35 34 20 31 30 30 36 34 34 00 18 6B 18 51 4A" который несет в себе названия файла и в конце контрольную сумму.  Как мы понимаем название файла может быть и малым и большим длина получается разная. Привязываться к "ZCRCW" в пакете тоже без мысленно так как он равен 'j' и в названии файла тоже может присутствовать 'j'. Как вариант заводить таймер и отчитывать временные интервалы между приходом байтов. Если временной интервал больше "30 секунд" то считаем что данные не пришли и начинай сначала. А концом пакета будет контрольная сумма. Как получили нуль после подсчета crc то сразу пошли раскладывать пакет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Автор, не надо на каждый возникающий вопрос создавать новую тему. Соединил с предыдущей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто посмотрите готовые реализации и выберете ту, которая вас устраивает для вашей же программы. Ну вот хотя бы этот вариант с GitHub - см функции zmodem_rx и ниже, а лучше вообще весь исходник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это я все уже смотрел.

Меня интересует как правильно сделать, по времени и ждать конца по контрольной сумме (в вашем примере время тоже используется)? Или как-то еще ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...