Я пытаюсь отправить файлы через полудуплексный интерфейс (RS-485) между коробочным ПК с Debian (4.19) и SBC с im6xDL.
Благодаря этому сообществу я могу успешно передавать простые данные между устройствами, используя picocom или эхо/чтение.
Блочный ПК изначально поддерживает полудуплексный протокол RS-485 и имеет автоматические функции RTS, так что вы можете без проблем считывать/отправлять данные. С другой стороны, SBC необходимо переключить, чтобы перейти в режим RX или TX.
Это оказалось проблемой, когда я попытался отправить файлы с коробочного ПК на SBC.
On the box PC:
picocom /dev/ttyUSB0 -b 9600 -fn
C-a,C-S
***file: /home/user/test.txt
Transfer incomplete
*** exit status: 128
On the SBC
picocom /dev/ttymxc2 -b 9600 -fn -et
C-a,C-r
Terminal ready
�000000
Как вы можете видеть, что-то ужасно неправильно, как будто он не может интерпретировать биты при передаче файла.
Мои вопросы:
Можно ли отправлять файлы из командной строки в полудуплексных системах? (SBC должен все время находиться в режиме RX).
Есть ли другой способ добиться этого, более интуитивный?
Как всегда, спасибо за помощь и поддержку :)
/Вт





Посмотреть здесь:
Pymodbus - чтение входного регистра счетчика энергии через rs485 на uart raspberry pi3
Представленное здесь решение с использованием pylibmodbus должно работать на любом оборудовании с UART и одной или двумя линиями GPIO, доступными из пользовательского пространства в Linux.
Если, с другой стороны, вы хотите использовать что-то вроде picocom или minicom, вы можете взглянуть на аппаратное решение с использованием таймера 555.
Конечно, если прототипирование схем не для вас, всегда можно купить переходник USB на RS485 с поддержкой полудуплекса. У вас есть много доступных, но те, которые основаны на МАКС13487 IC, похоже, работают очень хорошо.
РЕДАКТИРОВАТЬ: Решение с использованием таймера 555 находится не в сообщении, на которое я ссылался выше, а здесь вместе с дополнительными справочными материалами о полудуплексных каналах RS485: RS485: неподходящий ioctl для устройства
Извините за поздний ответ, Маркос. В итоге я сменил аппаратное обеспечение для этой демонстрации на то, что поддерживало автоматическую передачу. Понял идею из вашего примера с таймером 555 (точнее, узнал :-)). Я, вероятно, вернусь к вашему примеру с pymodbus, как только начну этот проект. Еще раз спасибо за помощь!
приятно слышать, что у вас это работает. Всегда проще, когда у вас есть полудуплекс в аппаратном обеспечении, но pylibmodbus вполне надежен, если вы этого не сделаете.
Привет, Маркос, сейчас я начинаю настоящий проект и читаю о Modbus. Мне нужно будет отправить файлы ~ 10-20 МБ, и общая идея на форумах заключается в том, что Modbus - не лучший способ добиться этого? Я рассматривал возможность использования QT с библиотеками для RS-485, есть ли у вас какие-либо мысли?
Привет, Вилли, я не думаю, что Modbus - хороший выбор для отправки такого большого количества данных. Но вы не думаете его использовать, если у вас есть два компьютера, вы можете отправлять файлы через терминал, закодированные в ASCII или двоичном коде. Может быть, будет лучше, если вы напишете новый вопрос, уточнив, что именно вы хотите сделать, хорошо?
может быть больше информации об этом на raspberrypi.stackexchange.com ., но, пожалуйста, не делайте перекрестных сообщений (одного или другого ;-)! Удачи!