Передача последовательности байт через UART

В этом форуме можно обсудить интерфейс программы, работу встроенных блоков, взаимодейсткие с Ардуино IDE и т.д.
Ответить
rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Передача последовательности байт через UART

#1

Сообщение rusland57 » 03.12.2017{, 21:55}

Здравствуйте!
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно отправить ему последовательность из 8 байт в шестнадцатеричном виде. В частности, чтобы оно выдало звуковой сигнал, необходимо отправить ему вот такую последовательность байт: FF 02 F9 01 02 14 0A 03. Скорость передачи 38400.

Подскажите, как в FLProg реализовать передачу такой последовательности байт через UART?

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Передача последовательности байт через UART

#2

Сообщение eugeneb » 03.12.2017{, 22:36}

Наверное придётся перевести все байты в десятичный вид, преобразовать каждый из них в char, всё это сложить в строку и выдать её в UART.
Примерно так:
Вложения
4754008.png

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Передача последовательности байт через UART

#3

Сообщение rusland57 » 04.12.2017{, 01:23}

eugeneb,
Спасибо большое, получилось. По крайней мере в монитор SerialPort выводит то, что нужно. Вот только устройство не отвечает (нет сигнала). То ли данные до него не доходят, то ли проблемы в самом устройстве (хотя напрямую с компьютера всё получается).
Последний раз редактировалось rusland57 04.12.2017{, 01:24}, всего редактировалось 1 раз.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Передача последовательности байт через UART

#4

Сообщение eugeneb » 04.12.2017{, 08:01}

Может скорости портов не согласованы?  Или, например, байты надо передавать с паузами.
Последний раз редактировалось eugeneb 04.12.2017{, 08:03}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Передача последовательности байт через UART

#5

Сообщение Sancho » 04.12.2017{, 08:43}

rusland57 писал(а):У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно
Вы пытаетесь соединить два ВЕДОМЫХ УСТРОЙСТВА ПО USB !!!!!!
USB это совсем не uart!!!!
P.S. Слова "драйвера" Вы наверняка слышали. Попробуйте немного подумать над Вашей задумкой с этой точки зрения.
Последний раз редактировалось Sancho 04.12.2017{, 08:46}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Передача последовательности байт через UART

#6

Сообщение eugeneb » 04.12.2017{, 08:54}

Sancho - Yes!
У Arduino Due есть порт, который может работать как USB Host.
Последний раз редактировалось eugeneb 04.12.2017{, 08:58}, всего редактировалось 1 раз.

Van
Рядовой
Сообщения: 13
Зарегистрирован: 10.10.2017{, 15:56}
Репутация: 0

Передача последовательности байт через UART

#7

Сообщение Van » 04.12.2017{, 10:29}

Есть такая рекомендация от Автора.
support писал(а):Я просто посоветую Вам почитать хелп к блоку приёма\передачи переменных из UART (http://flprogwiki.ru/flphelp/rus/ressiv ... mUart.html). Думаю всё станет понятно. Там добавляется служебная информация.
Последний раз редактировалось Van 04.12.2017{, 10:30}, всего редактировалось 1 раз.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Передача последовательности байт через UART

#8

Сообщение eugeneb » 04.12.2017{, 14:30}

Van, в приведённой Вами цитате Автор говорит о передаче переменных. Это кульная внутрифлпроговская фича.
Но в этом топике речь просто о передаче сырых данных.
Если Вы посмотрите в библиотеке блоков - это разные блоки.
Последний раз редактировалось eugeneb 04.12.2017{, 14:33}, всего редактировалось 1 раз.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Передача последовательности байт через UART

#9

Сообщение rusland57 » 04.12.2017{, 16:39}

eugeneb,
Скорости вроде согласованы, 38400 выставляю в FLProg, а устройство изначально на такой скорости работает.

Sancho,
Да, драйверы для устройства на компьютере установлены, и даже загорается светодиод при соединении с USB (чего не происходит при подключении к микроконтроллеру). Я думал об этом, но вот как это связать с контроллером не знаю. Если подскажете чего не хватает и что нужно сделать - буду благодарен.

Когда я подключаю устройство к микроконтроллеру, то оно активируется и на ЖК индикаторе устройства отображаются некоторые его параметры (пока не подключишь индикации нет).
Для устройства есть описание в котором сказано, чтобы активировать его для передачи данных необходимо отправить на него первый байт FF, а все остальные за ним. Это я и пытаюсь сделать.

Arduino Due у меня есть - попробую. Но хотелось бы на Nano реализовать задуманное. Как я понял, для этого необходимо иметь USB-host (есть для этого платы расширений), подойдёт ли это мне для реализации в FLProg?
Последний раз редактировалось rusland57 04.12.2017{, 16:54}, всего редактировалось 1 раз.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Передача последовательности байт через UART

#10

Сообщение pan » 04.12.2017{, 16:49}

rusland57 писал(а):но хотелось бы на Nano реализовать
 чудненько ) 
ну значит на то устройство которое подключаете ставьте драйвера от нано 

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Передача последовательности байт через UART

#11

Сообщение eugeneb » 04.12.2017{, 18:18}

А если попробовать обойти USB приёмопередатчики. На стороне Nano просто подключайтесь к выводам 0 и 1 (и GND). А на стороне устройства найдите точки, куда подпаяться, где тамошний UART. Только проверьте, что там TTL уровни.
Получится трёхпроводное соединение, так сказать USBless :).

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Передача последовательности байт через UART

#12

Сообщение rusland57 » 04.12.2017{, 21:49}

Подпаяться к UART устройства в принципе можно, но не хочется, т.к. корпус герметичный, да и таких устройств может использоваться несколько и каждый раз разных.

С портом USB Host Arduino Due пока ничего не получилось, даже данные не получается туда отправить (и считать монитором порта, соответственно). Там, скорее всего, нужны дополнительные библиотеки, но я пока с С++ плохо дружу.

Устройство - это специальная станция системы хронометража, в которой идёт время. Я хотел использовать эту станцию для синхронизации часов на соревнованиях (автономно без компьютера). Но, т.к. сама станция периодически вручную синхронизируется посредством компьютера, получается, что в данном случае проще синхронизировать часы одновременно со станцией от того же компьютера.

Спасибо всем за помощь!
Последний раз редактировалось rusland57 04.12.2017{, 21:50}, всего редактировалось 1 раз.

Ответить

Вернуться в «Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!)»