Страница 1 из 1
Передача последовательности байт через UART
Добавлено: 03 дек 2017, 21:55
rusland57
Здравствуйте!
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно отправить ему последовательность из 8 байт в шестнадцатеричном виде. В частности, чтобы оно выдало звуковой сигнал, необходимо отправить ему вот такую последовательность байт: FF 02 F9 01 02 14 0A 03. Скорость передачи 38400.
Подскажите, как в FLProg реализовать передачу такой последовательности байт через UART?
Передача последовательности байт через UART
Добавлено: 03 дек 2017, 22:36
eugeneb
Наверное придётся перевести все байты в десятичный вид, преобразовать каждый из них в char, всё это сложить в строку и выдать её в UART.
Примерно так:
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 01:23
rusland57
eugeneb,
Спасибо большое, получилось. По крайней мере в монитор SerialPort выводит то, что нужно. Вот только устройство не отвечает (нет сигнала). То ли данные до него не доходят, то ли проблемы в самом устройстве (хотя напрямую с компьютера всё получается).
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 08:01
eugeneb
Может скорости портов не согласованы? Или, например, байты надо передавать с паузами.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 08:43
Sancho
rusland57 писал(а):У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно
Вы пытаетесь соединить два ВЕДОМЫХ УСТРОЙСТВА ПО USB !!!!!!
USB это совсем не uart!!!!
P.S. Слова "драйвера" Вы наверняка слышали. Попробуйте немного подумать над Вашей задумкой с этой точки зрения.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 08:54
eugeneb
Sancho - Yes!
У Arduino Due есть порт, который может работать как USB Host.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 10:29
Van
Есть такая рекомендация от Автора.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 14:30
eugeneb
Van, в приведённой Вами цитате Автор говорит о передаче переменных. Это кульная внутрифлпроговская фича.
Но в этом топике речь просто о передаче сырых данных.
Если Вы посмотрите в библиотеке блоков - это разные блоки.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 16:39
rusland57
eugeneb,
Скорости вроде согласованы, 38400 выставляю в FLProg, а устройство изначально на такой скорости работает.
Sancho,
Да, драйверы для устройства на компьютере установлены, и даже загорается светодиод при соединении с USB (чего не происходит при подключении к микроконтроллеру). Я думал об этом, но вот как это связать с контроллером не знаю. Если подскажете чего не хватает и что нужно сделать - буду благодарен.
Когда я подключаю устройство к микроконтроллеру, то оно активируется и на ЖК индикаторе устройства отображаются некоторые его параметры (пока не подключишь индикации нет).
Для устройства есть описание в котором сказано, чтобы активировать его для передачи данных необходимо отправить на него первый байт FF, а все остальные за ним. Это я и пытаюсь сделать.
Arduino Due у меня есть - попробую. Но хотелось бы на Nano реализовать задуманное. Как я понял, для этого необходимо иметь USB-host (есть для этого платы расширений), подойдёт ли это мне для реализации в FLProg?
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 16:49
pan
rusland57 писал(а):но хотелось бы на Nano реализовать
чудненько )
ну значит на то устройство которое подключаете ставьте драйвера от нано
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 18:18
eugeneb
А если попробовать обойти USB приёмопередатчики. На стороне Nano просто подключайтесь к выводам 0 и 1 (и GND). А на стороне устройства найдите точки, куда подпаяться, где тамошний UART. Только проверьте, что там TTL уровни.
Получится трёхпроводное соединение, так сказать USBless

.
Передача последовательности байт через UART
Добавлено: 04 дек 2017, 21:49
rusland57
Подпаяться к UART устройства в принципе можно, но не хочется, т.к. корпус герметичный, да и таких устройств может использоваться несколько и каждый раз разных.
С портом USB Host Arduino Due пока ничего не получилось, даже данные не получается туда отправить (и считать монитором порта, соответственно). Там, скорее всего, нужны дополнительные библиотеки, но я пока с С++ плохо дружу.
Устройство - это специальная станция системы хронометража, в которой идёт время. Я хотел использовать эту станцию для синхронизации часов на соревнованиях (автономно без компьютера). Но, т.к. сама станция периодически вручную синхронизируется посредством компьютера, получается, что в данном случае проще синхронизировать часы одновременно со станцией от того же компьютера.
Спасибо всем за помощь!