Передача последовательности байт через UART
Передача последовательности байт через UART
Здравствуйте!
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно отправить ему последовательность из 8 байт в шестнадцатеричном виде. В частности, чтобы оно выдало звуковой сигнал, необходимо отправить ему вот такую последовательность байт: FF 02 F9 01 02 14 0A 03. Скорость передачи 38400.
Подскажите, как в FLProg реализовать передачу такой последовательности байт через UART?
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно отправить ему последовательность из 8 байт в шестнадцатеричном виде. В частности, чтобы оно выдало звуковой сигнал, необходимо отправить ему вот такую последовательность байт: FF 02 F9 01 02 14 0A 03. Скорость передачи 38400.
Подскажите, как в FLProg реализовать передачу такой последовательности байт через UART?
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Передача последовательности байт через UART
Наверное придётся перевести все байты в десятичный вид, преобразовать каждый из них в char, всё это сложить в строку и выдать её в UART.
Примерно так:
Примерно так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Передача последовательности байт через UART
eugeneb,
Спасибо большое, получилось. По крайней мере в монитор SerialPort выводит то, что нужно. Вот только устройство не отвечает (нет сигнала). То ли данные до него не доходят, то ли проблемы в самом устройстве (хотя напрямую с компьютера всё получается).
Спасибо большое, получилось. По крайней мере в монитор SerialPort выводит то, что нужно. Вот только устройство не отвечает (нет сигнала). То ли данные до него не доходят, то ли проблемы в самом устройстве (хотя напрямую с компьютера всё получается).
Последний раз редактировалось rusland57 04 дек 2017, 01:24, всего редактировалось 1 раз.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Передача последовательности байт через UART
Может скорости портов не согласованы? Или, например, байты надо передавать с паузами.
Последний раз редактировалось eugeneb 04 дек 2017, 08:03, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Передача последовательности байт через UART
Вы пытаетесь соединить два ВЕДОМЫХ УСТРОЙСТВА ПО USB !!!!!!rusland57 писал(а):У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно
USB это совсем не uart!!!!
P.S. Слова "драйвера" Вы наверняка слышали. Попробуйте немного подумать над Вашей задумкой с этой точки зрения.
Последний раз редактировалось Sancho 04 дек 2017, 08:46, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Передача последовательности байт через UART
Sancho - Yes!
У Arduino Due есть порт, который может работать как USB Host.
У Arduino Due есть порт, который может работать как USB Host.
Последний раз редактировалось eugeneb 04 дек 2017, 08:58, всего редактировалось 1 раз.
Передача последовательности байт через UART
Есть такая рекомендация от Автора.
support писал(а):Я просто посоветую Вам почитать хелп к блоку приёма\передачи переменных из UART (http://flprogwiki.ru/flphelp/rus/ressiv ... mUart.html). Думаю всё станет понятно. Там добавляется служебная информация.
Последний раз редактировалось Van 04 дек 2017, 10:30, всего редактировалось 1 раз.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Передача последовательности байт через UART
Van, в приведённой Вами цитате Автор говорит о передаче переменных. Это кульная внутрифлпроговская фича.
Но в этом топике речь просто о передаче сырых данных.
Если Вы посмотрите в библиотеке блоков - это разные блоки.
Но в этом топике речь просто о передаче сырых данных.
Если Вы посмотрите в библиотеке блоков - это разные блоки.
Последний раз редактировалось eugeneb 04 дек 2017, 14:33, всего редактировалось 1 раз.
Передача последовательности байт через UART
eugeneb,
Скорости вроде согласованы, 38400 выставляю в FLProg, а устройство изначально на такой скорости работает.
Sancho,
Да, драйверы для устройства на компьютере установлены, и даже загорается светодиод при соединении с USB (чего не происходит при подключении к микроконтроллеру). Я думал об этом, но вот как это связать с контроллером не знаю. Если подскажете чего не хватает и что нужно сделать - буду благодарен.
Когда я подключаю устройство к микроконтроллеру, то оно активируется и на ЖК индикаторе устройства отображаются некоторые его параметры (пока не подключишь индикации нет).
Для устройства есть описание в котором сказано, чтобы активировать его для передачи данных необходимо отправить на него первый байт FF, а все остальные за ним. Это я и пытаюсь сделать.
Arduino Due у меня есть - попробую. Но хотелось бы на Nano реализовать задуманное. Как я понял, для этого необходимо иметь USB-host (есть для этого платы расширений), подойдёт ли это мне для реализации в FLProg?
Скорости вроде согласованы, 38400 выставляю в FLProg, а устройство изначально на такой скорости работает.
Sancho,
Да, драйверы для устройства на компьютере установлены, и даже загорается светодиод при соединении с USB (чего не происходит при подключении к микроконтроллеру). Я думал об этом, но вот как это связать с контроллером не знаю. Если подскажете чего не хватает и что нужно сделать - буду благодарен.
Когда я подключаю устройство к микроконтроллеру, то оно активируется и на ЖК индикаторе устройства отображаются некоторые его параметры (пока не подключишь индикации нет).
Для устройства есть описание в котором сказано, чтобы активировать его для передачи данных необходимо отправить на него первый байт FF, а все остальные за ним. Это я и пытаюсь сделать.
Arduino Due у меня есть - попробую. Но хотелось бы на Nano реализовать задуманное. Как я понял, для этого необходимо иметь USB-host (есть для этого платы расширений), подойдёт ли это мне для реализации в FLProg?
Последний раз редактировалось rusland57 04 дек 2017, 16:54, всего редактировалось 1 раз.
Передача последовательности байт через UART
чудненько )rusland57 писал(а):но хотелось бы на Nano реализовать
ну значит на то устройство которое подключаете ставьте драйвера от нано
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Передача последовательности байт через UART
А если попробовать обойти USB приёмопередатчики. На стороне Nano просто подключайтесь к выводам 0 и 1 (и GND). А на стороне устройства найдите точки, куда подпаяться, где тамошний UART. Только проверьте, что там TTL уровни.
Получится трёхпроводное соединение, так сказать USBless .
Получится трёхпроводное соединение, так сказать USBless .
Передача последовательности байт через UART
Подпаяться к UART устройства в принципе можно, но не хочется, т.к. корпус герметичный, да и таких устройств может использоваться несколько и каждый раз разных.
С портом USB Host Arduino Due пока ничего не получилось, даже данные не получается туда отправить (и считать монитором порта, соответственно). Там, скорее всего, нужны дополнительные библиотеки, но я пока с С++ плохо дружу.
Устройство - это специальная станция системы хронометража, в которой идёт время. Я хотел использовать эту станцию для синхронизации часов на соревнованиях (автономно без компьютера). Но, т.к. сама станция периодически вручную синхронизируется посредством компьютера, получается, что в данном случае проще синхронизировать часы одновременно со станцией от того же компьютера.
Спасибо всем за помощь!
С портом USB Host Arduino Due пока ничего не получилось, даже данные не получается туда отправить (и считать монитором порта, соответственно). Там, скорее всего, нужны дополнительные библиотеки, но я пока с С++ плохо дружу.
Устройство - это специальная станция системы хронометража, в которой идёт время. Я хотел использовать эту станцию для синхронизации часов на соревнованиях (автономно без компьютера). Но, т.к. сама станция периодически вручную синхронизируется посредством компьютера, получается, что в данном случае проще синхронизировать часы одновременно со станцией от того же компьютера.
Спасибо всем за помощь!
Последний раз редактировалось rusland57 04 дек 2017, 21:50, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя