|
протоколы передачи данных через Uart, удобные протоколы последовательных интерфейсов |
|
|
|
Jul 8 2016, 12:01
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995

|
здравствуйте. задача связать данные mcu с PC через ком порт тип передачи -полудуплекс поделитесь пожалуйста опытом использования протоколов.
|
|
|
|
|
Jul 8 2016, 12:10
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995

|
Цитата(Kabdim @ Jul 8 2016, 12:03)  А что за данные, скорость и т.д? Раз ничего не указано предложу текстовый. Отлично воспринимается человеком и удобен при отладке/сопряжении скриптов на PC с железом. скорости стандартные для com порта, данные необходимо передавать частями по 64 -128 бит тип данных не текстовый а данны АЦП
|
|
|
|
|
Jul 8 2016, 12:14
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(winniethepooh @ Jul 8 2016, 08:10)  скорости стандартные для com порта, данные необходимо передавать частями по 64 -128 бит тип данных не текстовый а данны АЦП Modbus, например.
--------------------
ASB
|
|
|
|
|
Jul 8 2016, 12:22
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Контроль целостности данных сделать по NMEA - подбному принципу:
$GPMDS,1,0,4245454630303239200000000015002B3F4D761B000010000303040042555242* 6C $GPMDS,1,0,555200ABCDEF*60 $GPMDS,2,0*4F
Сообщение отредактировал Genadi Zawidowski - Jul 8 2016, 12:24
|
|
|
|
|
Jul 8 2016, 12:24
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995

|
Цитата(aaarrr @ Jul 8 2016, 12:19)  Да-да, отлично подходит для 128 бит данных и конфигурации точка-точка.
ТС, придумайте свой протокол, заверните в SLIP - и будет счастье. Придумать свой здорово, но лучше готовый код найти и для PC- ки тоже...
|
|
|
|
|
Jul 8 2016, 12:53
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602

|
Цитата(winniethepooh @ Jul 8 2016, 16:01)  поделитесь пожалуйста опытом использования протоколов. Почитайте форум. Это кладезь опыта.
|
|
|
|
|
Jul 8 2016, 13:06
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995

|
Цитата(AlexandrY @ Jul 8 2016, 12:42)  Так все таки , COM порт или Virtual COM port? com портом Цитата(mcheb @ Jul 8 2016, 12:53)  Почитайте форум. Это кладезь опыта. да конечно кладезь. дочитал до 40 страницы, но пока без результата.., ну спасибо! буду искать дальше. и хорошего настроения!
|
|
|
|
|
Jul 8 2016, 13:17
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(AlexandrY @ Jul 8 2016, 08:42)  Так все таки , COM порт или Virtual COM port? А какая разница-то?
--------------------
|
|
|
|
|
Jul 8 2016, 14:58
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(mantech @ Jul 8 2016, 18:28)  Задержки при 2х стороннем обмене, фрагментация в усб драйвере и еще мелкие нюансы, которых нет в реальном уарте...
По теме - в таких простейших случаях использую hex-передачу, т.е. код 0 передаю как 00 (в ASCII коде) 255 - как FF. прием аналогичен, все символы, кроме диапазона 0-F - ошибка. Конец строки - 0x0A или 0D. Вы пишите о мелких нюансах реализации виртуального COM-порта, а с другой стороны считаете возможным передавать данные простейшим потоком, который и протоколом то назвать язык не поворачивается. Считаю обязательным и по крайней мере очень желательным: 1. Забыть о передаче данных без защиты хотя бы двухбайтной CRC. 2. Не заморачиваться с отдельными реализациями протоколов для Fullduplex и Halfduplex. Всегда есть большая вероятность, что понадобится использовать RS485 или другой полудуплексный интерфейс. 3. Если нет опыта в реализации, то лучше сразу смотрите в сторону стандартного протокола, например Modbus RTU. Избежите детских проблем при разработке своего протокола и не понадобится клиентам/партнерам/коллегам объяснять преимущества своего уникального протокола. 4. Ну а если всё же решите пройти по пути создания своего протокола, рекомендую прочитать про SLIP (как уже советовали), а также поиметь хотя бы малейшее представление о уровнях взаимодействия открытых систем, классификации, которая лежит в основе любых обменов данными.
|
|
|
|
|
Jul 8 2016, 15:35
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995

|
Цитата(amiller @ Jul 8 2016, 14:58)  Вы пишите о мелких нюансах реализации виртуального COM-порта, а с другой стороны считаете возможным передавать данные простейшим потоком, который и протоколом то назвать язык не поворачивается. Считаю обязательным и по крайней мере очень желательным: 1. Забыть о передаче данных без защиты хотя бы двухбайтной CRC. 2. Не заморачиваться с отдельными реализациями протоколов для Fullduplex и Halfduplex. Всегда есть большая вероятность, что понадобится использовать RS485 или другой полудуплексный интерфейс. 3. Если нет опыта в реализации, то лучше сразу смотрите в сторону стандартного протокола, например Modbus RTU. Избежите детских проблем при разработке своего протокола и не понадобится клиентам/партнерам/коллегам объяснять преимущества своего уникального протокола. 4. Ну а если всё же решите пройти по пути создания своего протокола, рекомендую прочитать про SLIP (как уже советовали), а также поиметь хотя бы малейшее представление о уровнях взаимодействия открытых систем, классификации, которая лежит в основе любых обменов данными. спасибо Цитата(mantech @ Jul 8 2016, 14:28)  Задержки при 2х стороннем обмене, фрагментация в усб драйвере и еще мелкие нюансы, которых нет в реальном уарте...
По теме - в таких простейших случаях использую hex-передачу, т.е. код 0 передаю как 00 (в ASCII коде) 255 - как FF. прием аналогичен, все символы, кроме диапазона 0-F - ошибка. Конец строки - 0x0A или 0D. в случае "hex-передачи" есть ли разница с программным flow control X-ON / X-OFF ?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|