Отправка файла через qextserialport

Я использую классы qextserialport в Qt для реализации последовательной передачи между устройствами. Теперь мне нужно отправить файл между устройствами, подключенными через USB, используя последовательный порт. В последние недели я использовал серийный порт для различных функций, но понятия не имею, с чего начать. Я думал о чтении данных, управляемых событиями, пока не осталось больше данных для чтения, определил размер (число байтов) файла перед отправкой и отправил его вместе с данными, чтобы было ясно, пропадут ли данные. У меня также есть правильная функция, которая вычисляет 16-битную контрольную сумму CCIITT, так что я могу использовать ее и для проверки. Поэтому мой вопрос:

Может кто-нибудь отправить мне ссылку на сайт, который мог бы помочь решить мою проблему и объяснить мне, каков был бы самый простой и эффективный способ отправить файл и получить файл через класс qextserialport в Qt. Любая помощь будет огромной!

0

Решение

Вам нужен протокол. Простой может быть:

  • отправить длину имени файла в виде необработанного двоичного числа, например 2 байта в сетевом порядке байтов
    (максимальная длина имени 65535 байт)

  • отправить столько байтов имени файла, закодированного в UTF-8

  • отправьте размер файла в виде необработанного двоичного числа, например 4 байта в сетевом порядке (максимальный размер файла 4 гигабайта)

  • отправить столько байтов содержимого файла

Вы можете добавить информацию, такую ​​как дата файла и контрольная сумма. Более продвинутым было бы разделить файл на куски, поэтому в случае ошибки передачи вам не нужно пересылать все заново. И т.п.

Кроме того, изучите протоколы, такие как Kermit, xmodem, zmodem, чтобы увидеть, как это было сделано в эпоху модемов и BBS. Может быть, использовать такой протокол вместо того, чтобы создавать свой собственный.

Примечание: пока вы могли бы использовать QDataStreamТребуется надежный канал, поэтому это не так просто, как может показаться на первый взгляд (требуется дополнительная буферизация).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]