FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Понедельник, 11.12.2017, 12:15
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей, Anydy, Олег 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Передача последовательности байт через UART
Передача последовательности байт через UART
rusland57 Дата: Воскресенье, 03.12.2017, 21:55 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
Здравствуйте!
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно отправить ему последовательность из 8 байт в шестнадцатеричном виде. В частности, чтобы оно выдало звуковой сигнал, необходимо отправить ему вот такую последовательность байт: FF 02 F9 01 02 14 0A 03. Скорость передачи 38400.

Подскажите, как в FLProg реализовать передачу такой последовательности байт через UART?
 
eugeneb Дата: Воскресенье, 03.12.2017, 22:36 | Сообщение # 2
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Наверное придётся перевести все байты в десятичный вид, преобразовать каждый из них в char, всё это сложить в строку и выдать её в UART.
Примерно так:
Прикрепления: 4754008.png(11Kb)
 
rusland57 Дата: Понедельник, 04.12.2017, 01:23 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
eugeneb,
Спасибо большое, получилось. По крайней мере в монитор SerialPort выводит то, что нужно. Вот только устройство не отвечает (нет сигнала). То ли данные до него не доходят, то ли проблемы в самом устройстве (хотя напрямую с компьютера всё получается).


Сообщение отредактировал rusland57 - Понедельник, 04.12.2017, 01:24
 
eugeneb Дата: Понедельник, 04.12.2017, 08:01 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Может скорости портов не согласованы?  Или, например, байты надо передавать с паузами.

Сообщение отредактировал eugeneb - Понедельник, 04.12.2017, 08:03
 
Sancho Дата: Понедельник, 04.12.2017, 08:43 | Сообщение # 5
Генерал-майор
Группа: Проверенные
Сообщений: 546
Награды: 15
Репутация: 17
Статус: Offline
Цитата rusland57 ()
У меня есть USB устройство, которое я подключаю к USB разъёму Ардуино. Чтобы устройство выполнило определённые функции нужно
Вы пытаетесь соединить два ВЕДОМЫХ УСТРОЙСТВА ПО USB !!!!!!
USB это совсем не uart!!!!
P.S. Слова "драйвера" Вы наверняка слышали. Попробуйте немного подумать над Вашей задумкой с этой точки зрения.


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Понедельник, 04.12.2017, 08:46
 
eugeneb Дата: Понедельник, 04.12.2017, 08:54 | Сообщение # 6
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Sancho - Yes!
У Arduino Due есть порт, который может работать как USB Host.


Сообщение отредактировал eugeneb - Понедельник, 04.12.2017, 08:58
 
Van Дата: Понедельник, 04.12.2017, 10:29 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
Есть такая рекомендация от Автора.

Цитата support ()
Я просто посоветую Вам почитать хелп к блоку приёма\передачи переменных из UART (http://flprogwiki.ru/flphelp/rus/ressiveVariableFromUart.html). Думаю всё станет понятно. Там добавляется служебная информация.


Сообщение отредактировал Van - Понедельник, 04.12.2017, 10:30
 
eugeneb Дата: Понедельник, 04.12.2017, 14:30 | Сообщение # 8
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Van, в приведённой Вами цитате Автор говорит о передаче переменных. Это кульная внутрифлпроговская фича.
Но в этом топике речь просто о передаче сырых данных.
Если Вы посмотрите в библиотеке блоков - это разные блоки.


Сообщение отредактировал eugeneb - Понедельник, 04.12.2017, 14:33
 
rusland57 Дата: Понедельник, 04.12.2017, 16:39 | Сообщение # 9
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
eugeneb,
Скорости вроде согласованы, 38400 выставляю в FLProg, а устройство изначально на такой скорости работает.

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

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

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


Сообщение отредактировал rusland57 - Понедельник, 04.12.2017, 16:54
 
pan Дата: Понедельник, 04.12.2017, 16:49 | Сообщение # 10
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
Цитата rusland57 ()
но хотелось бы на Nano реализовать
 чудненько ) 
ну значит на то устройство которое подключаете ставьте драйвера от нано  yes
 
eugeneb Дата: Понедельник, 04.12.2017, 18:18 | Сообщение # 11
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
А если попробовать обойти USB приёмопередатчики. На стороне Nano просто подключайтесь к выводам 0 и 1 (и GND). А на стороне устройства найдите точки, куда подпаяться, где тамошний UART. Только проверьте, что там TTL уровни.
Получится трёхпроводное соединение, так сказать USBless :).
 
rusland57 Дата: Понедельник, 04.12.2017, 21:49 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
Подпаяться к UART устройства в принципе можно, но не хочется, т.к. корпус герметичный, да и таких устройств может использоваться несколько и каждый раз разных.

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

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

Спасибо всем за помощь!


Сообщение отредактировал rusland57 - Понедельник, 04.12.2017, 21:50
 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Передача последовательности байт через UART
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика