roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 авг 2025, 14:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 02:55 
Не в сети
Аватара пользователя

Зарегистрирован: 04 фев 2014, 13:53
Сообщения: 448
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч
Scorpio, пожалуйста, поясните, что вы подразумеваете под XOR и KC? Я не совсем понимаю о чем идет речь.
XOR это сложение по модулю 2, КС как я понимаю это контрольная сумма. Или не так? Просветите. Может мы говорим об одном и том же только разными словами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 08:33 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2702
Откуда: Где-то в Латинской Америке
Да, все верно. XOR (исключающее ИЛИ) - это последовательное сложение по модулю 2 всех байт строки. Примитивно, но в нашем случае вполне достаточно. Под КС я имел в виду более сложные алгоритмы подсчета контрольной суммы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 11:10 
Не в сети
Аватара пользователя

Зарегистрирован: 04 фев 2014, 13:53
Сообщения: 448
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч
И как используете XOR для передачи данных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 18:48 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2702
Откуда: Где-то в Латинской Америке
В конце пакета вставляется байт XOR всех предыдущих байт. Он проверяется на стороне приемника.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 19:22 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
передача 3х цифр с контроллера на компьютер это детский примитив
в программе на пк принимаются данные из компорта и принятые строки складывается в буфер, размер которого делается с нужным запасом.
из буфера строки берутся по очереди и парсятся на значения, это элементарно, вот так в делфи например:
var
s:string;
list:TStrings;
begin
list :=TStringList.Create;
s :='123;567;1023'; //исходная строка
ExtractStrings([';'], [' '], PChar(s), list); //строка разбивается по разделителю ; или любому другому какой нравится.
end;

в TStrings лежат 3 значения которые преобразуются в число например StrToInt(list[0])

Добавлено спустя 14 минут 14 секунд:
кстати, со стороны контроллера программа передачи значений напряжения данных ещё проще будет
Serial.print(analogRead(analogIn1));
Serial.print(";");
Serial.print(analogRead(analogIn2));
Serial.print(";");
Serial.println(analogRead(analogIn3));

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 19:40 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Myp писал(а):
из буфера строки берутся по очереди и парсятся на значения

Так XOR и есть самый простой парсер :)
Умрешь различать начало и конец чисел без доп. символов. Я так понимаю, в твоем случае, строки - это CR/LF символы? Ну так XOR делает тоже самое, плюс элементарная проверка на корректность. Такшта - XOR - минимально возможный элемент передачи данных по послед. шинам в нашем шумном мире :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 20:44 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2702
Откуда: Где-то в Латинской Америке
А зачем в данном случае передавать в символьном виде? По запросу от ПК передал 6 байт параметров + XOR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 28 фев 2016, 20:56 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Scorpio писал(а):
А зачем в данном случае передавать в символьном виде?

Так многие и не знают что можно передавать не символами, printf же :)
Байты для них - хакерство, вот и непонимание xor-ов и crc.

Добавлено спустя 6 минут 29 секунд:
Scorpio писал(а):
По запросу от ПК передал 6 байт

Ой, забыл, угадай название след. темы? "Как преобразовать двоичный код в десятичный" :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 29 фев 2016, 01:08 
Не в сети
Аватара пользователя

Зарегистрирован: 04 фев 2014, 13:53
Сообщения: 448
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч
Scorpio писал(а):
В конце пакета вставляется байт XOR всех предыдущих байт. Он проверяется на стороне приемника.

Понято, но ведь это то же что и использовать символ окончания пакета, разве что это еще одна дополнительная проверка на правильность передачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 29 фев 2016, 01:19 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
lori писал(а):
Понято, но ведь это то же что и использовать символ окончания пакета

Это еще и увеличение в 2 раза передаваемых байт, т.к. цифра в ASCII занимает байт, а байтом можно передать 2 десятичные цифры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 29 фев 2016, 06:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2702
Откуда: Где-то в Латинской Америке
lori писал(а):
но ведь это то же что и использовать символ окончания пакета

Символ окончания пакета м.б. только в символьном терминале. Он д.б. всегда одинаковый. XOR же всегда разный, т.к. зависит от содержания пакета. Если длина пакета заранее известна, то символ окончания не нужен. А XOR позволяет контролировать, что данные не искажены. UART запросто может передать неверное число, если скорость синхронизации приемника и передатчика разойдуться или линия слишком длинная. Многое зависит от физического уровня. RS232 или 485 или это просто TTL. Будет там скрутка или экранированные провода и т.д и т.п. Это я больше для топикастера пишу, остальные собеседники и так в курсе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 01 мар 2016, 01:39 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
Dmitry__ писал(а):
Умрешь различать начало и конец чисел без доп. символов.

Во многой мудрости много печали.

функция типа serial.read читает строку и кладёт её в буфер. не надо не начало ни конец искать, оно само всё делает, на ардуине делаешь Serial.println и всё.
функция ExtractStrings разбирает эту строку на части, тоже знать ничё не надо, просто поставь ; в нужном месте.

Dmitry__ писал(а):
в нашем шумном мире :)

насколько много шума будет в шине между мегой328 и преобразователем uart->usb которые распаяны на одной ардуине на расстоянии в 1-2 см друг от друга?

ЗЫ
но вобще, у меня на работе, ребята делают свои штуковины в которых процессоры на одной плате по модбасу через 485 общаются, хотя там максимум 10 сантиметров дистанция, задача сводится к отображению текста на символьном экране, а корпус девайса стальной экранированный)))

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 01 мар 2016, 02:29 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Myp писал(а):
хотя там максимум 10 сантиметров дистанция, задача сводится к отображению текста на символьном экране, а корпус девайса стальной экранированный)))

А у ТС - фотоумножитель с 800 вольт. :)
И никто не знает, в том числе и ТС, как у него будут организованы провода :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 01 мар 2016, 08:34 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
у меня для подобных целей свой протокольчик с старт стоп последовательностями и CRC16.. с однйо стороны - гемор, проде все и без этого работает, а с другой - один раз сделал и все стабильно. либо с каналом все ок и данные идут, либо не идут, а неверных данных не бывает.

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Организация передачи данных по COM-порту
СообщениеДобавлено: 01 мар 2016, 10:29 
Не в сети
Аватара пользователя

Зарегистрирован: 24 окт 2011, 23:32
Сообщения: 803
Откуда: Севастополь
прог. языки: асм
+1
Сделать один раз и не заморачиваться более. А применимо, как правило, в 99% всех последующих проектов.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO