Прием данных по RS-232

AVR версия программы

Re: Прием данных по RS-232

Сообщение Taska (Максим) » 12 дек 2012, 10:15

1. Я делал так: подаю команду с передатчика, приемники по прерыванию настраиваются на прием, далее шлю адрес приемника, нужный приемник ждет данных второй выходит с прерывания и выполняет свои действия,
дальше посылау данные в приемник и байт контрольной суммы, приемник в ответ если сумма совпала отправляет данные об успешной или проблемной передачи. Вот как то так.
3.На старом форуме есть ссылки на сайт матриксов и литературу.UDP
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе

Re: Прием данных по RS-232

Сообщение mitrich (demon) » 12 дек 2012, 13:06

Я сразу попробовал "создать" навороченный протокол :) мастер шлет команду чтоб все слушали потом передает адрес слэйва и ждет. если приходит в ответ тот же адрес это означает что слэйв готов, потом передает адрес параметра и слушает в ответ подтверждение и байт данных. пока глухо..... но надежда есть что победю...
а что по поводу Этернет и Вебсервера? в фловкоде возможно ? и еще посоветуйте из практики микросхемы интерфейса 232/485 и 232/этернет, оптимальные по цене и возможностям. от железа я отстал, давно не играл в эти кубики...
Аватар пользователя
Ник: mitrich
Имя: demon
(Kaliningrad)
Продвинутый
Продвинутый
Информация о пользователе

Re: Прием данных по RS-232

Сообщение Taska (Максим) » 12 дек 2012, 13:12

Ничего не подскажу, я сам с этим не сталкивался.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение mitrich (demon) » 12 дек 2012, 13:26

ссылку читаю, спасибо :!)
Аватар пользователя
Ник: mitrich
Имя: demon
(Kaliningrad)
Продвинутый
Продвинутый
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение saho (Саша) » 03 янв 2013, 11:00

mitrich писал(а):а что по поводу Этернет и Вебсервера? в фловкоде возможно ? ...

Начал новую тему. Там можно обсудить .
Аватар пользователя
Ник: saho
Имя: Саша
(Ровно)
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение vlad145 (Владимир) » 03 мар 2013, 06:05

Доброго времени суток всем. Есть такой вопрос. Пытаюсь отследить данные получаемые по RS232, конкретно на контроллер приходят данные с GPS модуля в таком формате:

$GPGGA,143132.785,5527.6678,N,06520.3700,E,1,05,02.3,74.0,M,-20.1,M,,*76
$GPGSA,A,3,02,12,25,29,31,,,,,,,,4.6,2.3,4.0*3A
$GPGSV,3,1,09,2,71,092,28,4,26,063,,5,32,149,,12,53,189,45*4E
$GPGSV,3,2,09,13,12,196,,23,09,020,,25,60,263,57,29,37,280,31*77
$GPGSV,3,3,09,31,21,313,39,,,,,,,,,,,,*4A
$GPRMC,143132.785,A,5527.6678,N,06520.3700,E,0.00,120.07,010811,,,A*60
$GPVTG,120.07,T,,,0.00,N,0.00,K,A*74

Принять по прерыванию получается, но вопрос в том, что из всех данных нужна только строка $GPRMC....., то есть 6-я, причем не вся а отдельные её чести. Как разделить строку тоже понятно, можно использовать Mid$, Right$, Left$ и получить тот кусок который интересует. Вопрос как разделить весь блок на строки?
Ник: vlad145
Имя: Владимир
(Курган)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение mim (mim) » 03 мар 2013, 13:18

Внимательно читаем описание протокола..."Все команды и сообщения передаются в формате ASCII . Сообщения, которые относятся к GPS части протокола начинаются с префикса $GP. В последнем поле сообщения может быть указана контрольная сумма текущего сообщения, начинающаяся с разделителя *. Контрольная сумма представляет собой 8 – ми битную последовательность - сумму (исключающее ИЛИ) всех символов сообщения, включая пробелы, расположенных между разделителями $ и *, не включая последних." Кроме того, как правило в конце сообщения стоит последовательность <CR><LF>. Таким образом есть начало и есть конец.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение vlad145 (Владимир) » 03 мар 2013, 16:05

mim писал(а):Внимательно читаем описание протокола..."Все команды и сообщения передаются в формате ASCII . Сообщения, которые относятся к GPS части протокола начинаются с префикса $GP. В последнем поле сообщения может быть указана контрольная сумма текущего сообщения, начинающаяся с разделителя *. Контрольная сумма представляет собой 8 – ми битную последовательность - сумму (исключающее ИЛИ) всех символов сообщения, включая пробелы, расположенных между разделителями $ и *, не включая последних." Кроме того, как правило в конце сообщения стоит последовательность <CR><LF>. Таким образом есть начало и есть конец.

Спасибо за разъяснение, я тоже уже нашёл описание данного протокола, оказывается для того чтобы модуль отправлял данные ему нужно отправлять контрольные суммы строк(между символами $ и *), в противном случае будет отправлять данные типа:

\0\0\0...\0\0\0$PNMRX600,0,NemeriX NS1030A, SW Release Version 4.0.13_PROD, Welcome On Board! *06\r\n
$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52\r\n
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30\r\n
$GPRMC,000000.000,V,0000.0000,S,00000.0000,W,0.00,0.00,220899,,,A*7E\r\n
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70\r\n

то есть одни нули. Буду пробовать вырезать CRC из строк, параллельно читаю ветку по работе со строками, были бы ещё строки одинаковой длинны.
Ник: vlad145
Имя: Владимир
(Курган)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение vlad145 (Владимир) » 03 мар 2013, 18:51

Как по Вашему мнению лучше сделать прием данных, по прерыванию или оставить непрерывное сканирование? Пакет данных передаётся раз в секунду. С прерыванием у меня получается принять только первую и последнюю строку(пока не понял почему).
Ник: vlad145
Имя: Владимир
(Курган)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Прием данных по RS-232

Сообщение mim (mim) » 03 мар 2013, 19:07

vlad145 писал(а):1. Как по Вашему мнению лучше сделать прием данных, по прерыванию или оставить непрерывное сканирование?
2. С прерыванием .......пока не понял почему.

1. Лучше - это когда правильно - когда нет потери данных. И тот и другой способ это позволяют сделать. Но выбор зависит от задачи. В этой теме мы это и пытаемся понять...
2. Вот этим и займись...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей