roboforum.ru

Технический форум по робототехнике.
Текущее время: 06 май 2025, 12:28

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 21 июн 2011, 20:26 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
olegsem, вы по ссылке сходить вообще поленились? там чётко и ясно написано как использовать на ардуине. и вообще учитесь пользоваться поисковиками, сверхспособностей для этого не нужно. вбиваете в гуглю "regex" первая же ссылка указвает на вики, где разжевано что такое регулярные выражения и как оно относится к парсингу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 21 июн 2011, 22:57 
Не в сети

Зарегистрирован: 05 дек 2008, 13:40
Сообщения: 63
Откуда: Смоленск
по вашей ссылке скачал для ардуины Regexp, установил, пробовал примеры, получилось выполнить только замену символов.
парсинга в ардуиновских примерах нет, я даже не знаю с чего начать...
комманды разрешенные для ардуины:
MatchState
Match
Target
GetMatch
GetCapture
GetResult
MatchCount
GlobalMatch
GlobalReplace
какая из них применяется для поиска\парсинга хоть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 21 июн 2011, 23:21 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
там на странице прям примеры есть. и вообще не заморачивайтесь сейчас с этим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 21 июн 2011, 23:31 
Не в сети

Зарегистрирован: 05 дек 2008, 13:40
Сообщения: 63
Откуда: Смоленск
^[-+]?[0-9]\d{0,2}(\.\d{1,2})?%?$ это выражение вроде бы разобрал, примеры вроде бы понятны, но пока не соображу как привести строку к двум переменным, как? :o


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 21 июн 2011, 23:51 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
там всё легко, но это со временем, не заморачивайтесь. имхо единственное, что вас вообще сейчас должно заботить - тренировка в написании алгоритмов, изучение азов языка си и хоть немного желания тренироваться искать сначала ответы в поисковиках/книгах/справочниках/...
вот вам еще вариант реализации. корявенький слегка и не факт, что адекватно рабочий ( :D дабл однако, как минимум). но сам алгоритм, если я нигде не тупанул должен работать.
Код:
int sign = 1, i = 1;
bool dot = false;
double f = 0, f1 = 0, f2 = 0;
char c;
while(true)
{
    c = Serial1.read();
    if ('0' <= c && '9' >= c)
    {
        if (!dot)
            f = f * 10 + c - 48;
        else
        {
            i *= 10;
            f = (double)(f + (double)((double)(c - 48) / (double)i));
        }
    }
    else
        switch(c)
        {
            case '-':
                sign = -1;
                break;
            case 'H':
                f1 = f * sign;
                goto default;
                break;
            case 'S':
                f2 = f * sign;
                goto default;
                break;
            case '.':
                dot = true;
                break;
            case '#':
                break;
            default:
                f = 0;
                sign = 1;
                dot = false;
                i = 1;
                break;
        }
}


Последний раз редактировалось Angel71 22 июн 2011, 00:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 22 июн 2011, 00:04 
Не в сети

Зарегистрирован: 05 дек 2008, 13:40
Сообщения: 63
Откуда: Смоленск
Спасибо за пример, да, видимо рановато с Регулярными выражениями и парсингом))) Буду читать теорию и пробовать чтонть попроще. Маловато знаний пока.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Mega+Nano работа с сериал портом
СообщениеДобавлено: 23 июн 2011, 16:07 
Не в сети

Зарегистрирован: 05 дек 2008, 13:40
Сообщения: 63
Откуда: Смоленск
Значится так:

Serial.println(inByte);
String message= inByte;
int commaPosition = message.indexOf(',');
Serial.println( message.substring(0,commaPosition-1));
message = message.substring(commaPosition+1, message.length());
Serial.println( message.substring(0, message.length()-2));

получается вот что:
26.19H,-127.00#P
26.19
-127.00

В принципе уже близко)))


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

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