Отправка файлов через полудуплексный интерфейс

Я пытаюсь отправить файлы через полудуплексный интерфейс (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

Как вы можете видеть, что-то ужасно неправильно, как будто он не может интерпретировать биты при передаче файла.

Мои вопросы:

  1. Можно ли отправлять файлы из командной строки в полудуплексных системах? (SBC должен все время находиться в режиме RX).

  2. Есть ли другой способ добиться этого, более интуитивный?

Как всегда, спасибо за помощь и поддержку :)

/Вт

может быть больше информации об этом на raspberrypi.stackexchange.com ., но, пожалуйста, не делайте перекрестных сообщений (одного или другого ;-)! Удачи!

shellter 30.05.2019 14:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
532
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Посмотреть здесь:

Pymodbus - чтение входного регистра счетчика энергии через rs485 на uart raspberry pi3

Представленное здесь решение с использованием pylibmodbus должно работать на любом оборудовании с UART и одной или двумя линиями GPIO, доступными из пользовательского пространства в Linux.

Если, с другой стороны, вы хотите использовать что-то вроде picocom или minicom, вы можете взглянуть на аппаратное решение с использованием таймера 555.

Конечно, если прототипирование схем не для вас, всегда можно купить переходник USB на RS485 с поддержкой полудуплекса. У вас есть много доступных, но те, которые основаны на МАКС13487 IC, похоже, работают очень хорошо.

РЕДАКТИРОВАТЬ: Решение с использованием таймера 555 находится не в сообщении, на которое я ссылался выше, а здесь вместе с дополнительными справочными материалами о полудуплексных каналах RS485: RS485: неподходящий ioctl для устройства

Извините за поздний ответ, Маркос. В итоге я сменил аппаратное обеспечение для этой демонстрации на то, что поддерживало автоматическую передачу. Понял идею из вашего примера с таймером 555 (точнее, узнал :-)). Я, вероятно, вернусь к вашему примеру с pymodbus, как только начну этот проект. Еще раз спасибо за помощь!

wild_w 03.06.2019 13:56

приятно слышать, что у вас это работает. Всегда проще, когда у вас есть полудуплекс в аппаратном обеспечении, но pylibmodbus вполне надежен, если вы этого не сделаете.

Marcos G. 03.06.2019 18:15

Привет, Маркос, сейчас я начинаю настоящий проект и читаю о Modbus. Мне нужно будет отправить файлы ~ 10-20 МБ, и общая идея на форумах заключается в том, что Modbus - не лучший способ добиться этого? Я рассматривал возможность использования QT с библиотеками для RS-485, есть ли у вас какие-либо мысли?

wild_w 12.06.2019 17:04

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

Marcos G. 12.06.2019 17:58

Другие вопросы по теме