![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
YouROK |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.7.2011 Репутация: нет Всего: нет |
Есть устройство с gps, данные приходят на ком порт,
под windows-ом данные приходят в виде строк по протоколу nmea, все нормально читается и парсится, открываю так
под linux-ом (rhel 5.5) половина данных пропадают, заменяются символами открываю так
вот такие данные приходят на линуксе
пробовал менять четность, parity, маскирование, стоповые биты. Как биты нужно выставить в настройках что бы было как в винде? Это сообщение отредактировал(а) YouROK - 9.12.2011, 16:19 |
||||||
|
|||||||
kuzulis |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Попробуй просто cfmakeraw вместо этого:
барахла. И что за ужас:
в моем Linux-е ? ![]() Это сообщение отредактировал(а) kuzulis - 9.12.2011, 17:17 |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Начни с этого:
|
|||
|
||||
YouROK |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.7.2011 Репутация: нет Всего: нет |
для кроскомпиляции проект еще идет под wince Добавлено через 13 минут и 6 секунд bsa, сделал так
выдает на экран
добавил после этих строк cfmakeraw(&newtio); выдает примерно тоже самое, такое чувство что перезаписывается буфер, не успевая прочитаться программой. п.с. данные gps приемник посылает раз в секунду одну строку, в ком порт, может какие таймауты надо выставить |
||||||
|
|||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
cfmakeraw(&newtio); надо делать вместо memset. И перед настройкой флагов!
|
|||
|
||||
svlary |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
При разглядывании этих саммых данных, прихожу к выводу :
В связи с этим у меня возникло несколько вопросов :
Ну и мои сответы, соответственно :
Во всяком случае, в том ПО, которое я разаработал для городского автохозяйства сделано именно так. И все работает на сотнях мащин уже без малого год... ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Это где?!? |
|||
|
||||
svlary |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
Я имею в виду вот это :
В man-е написано :
Я как раз и гворил о "библиотеке для работы с терминалом" Добавлено через 5 минут и 29 секунд Но дело не в установке скорости, однозначно ! Если бы скорость СОМ-порта была настроена неправильно, то Вы бы увидели полную кашу. Это я Вам гарантирую ! ![]() |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
а без нее только через ioctl можно поменять настройки порта. А кроме скорости есть еще и четность и количество стопов. Кстати, надо бы посмотреть, что за байты скрыты за вопросиками. Если это \377 и \0, то явно проблема с четностью. Кстати, у кого-то были проблемы с ком-портом на встроенном линуксе. Там все работало при низкой загрузке системы. А при высокой переставало. |
|||
|
||||
svlary |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
Более внимательно посмотрел на принимаемый текст... Возьмем самые ходовые сообщения - GPRMC. Вот что мы видим :
Смотрим, что написано в доке :
Получается, что дело не в неправильной кодировке, а в том, что пропадают целые КУСКИ сообщений ! В обоих примерах отсутствует время и флаг актуальности. В первом сообщениее совсем нет широты, но присутствует долгота. Во втором есть обрывок широты. В обоих отсутствует скорость и все, что за ней, включая контрольную сумму. Вы уверены, что Ваша железяка действительно работает ? СОМ-порт и операционка здесь явно - непричем... Добавлено через 3 минуты и 32 секунды
|
||||||
|
|||||||
1oid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 31.1.2012 Репутация: нет Всего: нет |
int fd;
struct termios options; fd = open( U2_NAME, O_RDWR | O_NOCTTY ); // |O_NONBLOCK - removed from open() SNK if (fd == -1) wxPrintf( "Open_port: Unable to open %s\n", U2_NAME ); else { tcgetattr( fd, &options ); cfsetispeed( &options, B9600 ); cfsetospeed( &options, B9600 ); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cc[VMIN] = 1; // minimum bytes options.c_cc[VTIME] = 10; // interval in 1/10 sec options.c_lflag = ICANON; // enable canonical input options.c_oflag = 0; // raw output tcflush( fd, TCIFLUSH ); tcsetattr( fd, TCSANOW, &options ); } |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |