Який найшвидший спосіб надіслати файл через послідовну консоль?


2

Мені потрібно записати двійковий файл на вбудований пристрій через консоль UART. Я знаю про SLIP, PPP та ZModem, але пристрій має мінімальну зайнятість і не має можливості встановлювати додаткові сервіси чи програми.

На даний момент я використовую послідовну бібліотеку Python для запису в пристрій шістнадцяткових байтів:

printf '\x00\x01\x02' >> file.bin

Через великий розмір файлу я не можу надрукувати весь файл одразу, оскільки він перевищує розмір буфера запису, тому мені доводиться це робити шматками. Здається, що мені також доводиться читати вихід консолі після кожного запису (зворотній зв'язок моєї введеної команди), інакше буфер знову стає повним (не впевнений, що це через послідовну бібліотеку Python чи через пристрій).

Все це призводить до того, що потрібно успішно перенести мій файл більше ніж у 4 рази більше, а також читати однакову кількість байтів. Це, очевидно, дуже повільно і неефективно.

Чи є якийсь інший метод, який я міг би використати для швидшого перенесення двійкового файлу за цих обставин?


Чи працює цей метод ?
dirkt

Оскільки я маю справу з двійковими файлами, мені доведеться використовувати метод uuencode у zasedbox. Як я вже говорив раніше, у пристрою є мінімальна зайнята скринька, тому він не має цієї функціональності. Існує також сценарій serio Python, який робить саме те, що я роблю, але не читаючи з пристрою після написання, що призводить до передачі ~ 5000 байт із 64000. Жоден із цих методів не працює.
c0mpute

Отже, у вашій зайнятій скриньці немає busybox rx? Протокол xmodem, який використовується, rxтакож повинен мати справу з бінарними файлами.
dirkt

Так, він не має buxybox rx. Я також намагаюся розробити свій скрипт Python як загальний інструмент, який працює на більшості, якщо не на всіх пристроях. Тому для цього я припускаю, що на пристрої буде встановлено лише мінімальний зайнятий ящик, як той, на якому я тестую свій сценарій.
c0mpute

Якщо це вправа "використовувати лише ті речі, які встановлені на моїй машині, щоб зробити передачу ефективною", відповісти буде важко, не знаючи, що саме встановлено на вашій машині, якщо в ній навіть немає звичайних команд зайнятих.
dirkt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.