![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Actionman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
Всем привет. Юзаю GPS модуль. Он рисылает данные в виде NMEA к примеру: $GPGGA,165113.000,5601.0318,N,01211.3503,E,1,07,1.2,22.4,M,41.6,M,,0000*60
здесь: время UTC:165113.000 (16часов 51 мин 13 сек) долгота: 5601.0318 N(северная или S- южная) широта: 01211.3503 E(восточная или W-западная) высота:41.6, М - метры Необходимо эти данные из строки вытащить. Возможно сделать маску строки или еще какие способы есть. Прошу помочь., может кто-то уже сталкивался. Присоединённый файл ( Кол-во скачиваний: 3 )
NMEA_protocol.F4A140F269024530B614546A5527978C.pdf 266,07 Kb |
|||
|
||||
| iff |
|
||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
В VB6 нет встроенной поддержки регулярных выражений.
Можно воспользоваться функцие split, она разделит строку на массив. например:
Результат будет:
А затем уже можно обрабатывать каждый элемент массива по отдельности. П.С. все элементы такого массива - строки. Что-бы получить число можно использовать функцию val. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||
|
|||||
| Actionman |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
Да , попробывал тоже етим методом, вроде получилось, но есть какойто кося, ругается, что размер массива выходит за границы.
код:
Это сообщение отредактировал(а) Akina - 7.8.2011, 21:03 |
||||
|
|||||
| iff |
|
||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
1. используйте тег "код"
2. buffer должен быть не string(), а variant.
GPS_recieve.Split - может в этом модуле уже есть функция Split какая-то своя... New [Char]() {","c} Добавлено через 2 минуты и 37 секунд Если mySerialPort.ReadExisting возвращает строку результата, то:
А buffer можно, как сказано выше, объявит variant или вообще не объявлять (он по умолчанию будет variant) -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||
|
|||||
| Actionman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
оу извиняюсь, не VB6 , в студии пишу 2010. Попробывал еще раз, все равно то же(((
Вот весь код:
скрин ошибке приложен. Это сообщение отредактировал(а) Actionman - 7.8.2011, 19:08 Присоединённый файл ( Кол-во скачиваний: 5 )
______1.JPG 198,98 Kb |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Перемещено в VB .NET.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Actionman, Я весь код не смотрел, но судя по картинке результат вполне закономерен. Массивы индексируются с нуля, стало быть в них не может быть индекса равного длине массива, то есть последний индекс равен длине, уменьшенной на единицу.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| krewin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 27.8.2009 Репутация: 1 Всего: 1 |
замени строку n = SplitString.Length на строку n = SplitString.Length-1 все будет работать. SplitString.Length показывает количество строк в масиве а не последнию строку в масиве. Массив начинается с нуля
|
|||
|
||||
| Actionman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
Впринципе так тоже делал, но все же попробывал еще раз)))
теперь другая ошибка блин
ниже скрин Присоединённый файл ( Кол-во скачиваний: 7 )
______.JPG 193,98 Kb |
|||
|
||||
| krewin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 27.8.2009 Репутация: 1 Всего: 1 |
поменяй Dim buffer As VariantType() на Dim buffer() As String
|
|||
|
||||
| Actionman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
то же самое( |
|||
|
||||
| krewin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 27.8.2009 Репутация: 1 Всего: 1 |
добавь размер массива Dim buffer(100) As String вот так
|
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
А зачем в данном случае вообще копировать массив поэлементно, когда метод Сплит возвращает готовый строковый массив? Вместо вот этого
Можно просто написать
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Actionman |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.4.2011 Репутация: нет Всего: нет |
Блин уже как тока не делал, все равно какая нить ошибка вылазит!!!
Вот например не и спользую если массив дополнительный(скрин ниже) Код:
при создании прототипа вообще в текстовых окнах ничего нету! Добавлено через 11 минут и 2 секунды
немного подправил щас, как и ты писал сделать, снова ошибка, при внесении параметра в текст. окно, Индекс находился вне границ массива. Это сообщение отредактировал(а) Actionman - 9.8.2011, 15:56 Присоединённый файл ( Кол-во скачиваний: 4 )
______.JPG 162,97 Kb |
||||||||
|
|||||||||
| krewin |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 27.8.2009 Репутация: 1 Всего: 1 |
Можешь использовать Function вот простой пример
затем так замени
но а тут так
|
||||||
|
|||||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |