Вверх ↑
Этот топик читают: Гость
Ответов: 1328
Рейтинг: 69
#1: 2008-11-18 05:21:47 ЛС | профиль | цитата
Прием координат с GPS приемника,
сохранение в kml для последующего
отображения метки в Googl Earth

версия 0.001
версия HiAsm 4.0 b 172
компилятор Delphi, FPC
GPS протокол NMEA

ССЫЛКА НА ПУБЛИКАТОР
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#2: 2008-11-18 17:37:51 ЛС | профиль | цитата
Konst,

Add(Math,321850,539,404)
{
Op2=3
link(onResult,7618361:doCompare,[])
}
Add(Math,3728237,623,404)
{
OpType=1
Op2=24
ResultType=0
link(onResult,9198801:doWork2,[])
}
Add(If_else,7618361,581,404)
{
Type=2
Op2=Integer(23)
link(onTrue,3728237:doOperation,[])
link(onFalse,9198801:doWork3,[(676,417)])
}
Add(HubEx,9198801,672,397)
{
link(onEvent,14247562:doConvert,[])
}
Add(Convertor,14247562,686,404)
{
SymbolFill="0"
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#3: 2008-11-18 22:40:08 ЛС | профиль | цитата
А ещё можно кучу StrPart заменить элементами из MT-вкладки...
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#4: 2008-11-19 00:31:32 ЛС | профиль | цитата
iarspider, там много чего можно.
Например эту картинку

заменить на один doData или Memory.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1dol.jpg [9.6KB] [518]
Голосовали:Konst
Ответов: 1328
Рейтинг: 69
#5: 2008-11-19 02:06:22 ЛС | профиль | цитата
iarspider писал(а):
А ещё можно кучу StrPart заменить элементами из MT-вкладки...

Я сначала так и делал, когда брал данные с двух NEMA строк, но потом мне показалось что для одной NEMA строки StrPart не так уж много, разберусь со второй, так и сделаю.
Tad писал(а):
заменить на один doData или Memory

Сделать еще можно многое, данная схема работает, теперь буду улучшать, это только начало. Хочу сделать программу, которая будет сливать координаты с машин на сервер и показывать их на Google Earth.
Есть проблемы и в других местах: через некоторое время работы приемника происходит сбой и данные не идут нормальными NEMA строками, а идут какой то кашей, по этому я и поставил StrList (который у меня был Memo, для просмотра, что получаю с приемника)
Tad, с перещетом временем мозги под утро уже не работали и на тот момент ничего лучше не придумал +
карма: 2

0
Ответов: 5446
Рейтинг: 323
#6: 2008-11-19 02:23:13 ЛС | профиль | цитата
Надо мне как-нибудь достать из архива свою программу для расшифровки NMEA-сообщений (написанную на C++). Она использует все собщения, которые мой приёмник посылает.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#7: 2008-11-19 10:40:42 ЛС | профиль | цитата
Konst писал(а):
через некоторое время работы приемника происходит сбой
Ты читаешь из порта по два байта.
Почему ты уверен, что "0D0A" у тебя всегда приходят вместе ?
Возможны варианты : 0D0A - в яблочко и молоко XX0D или 0A24.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1328
Рейтинг: 69
#8: 2008-11-19 14:42:43 ЛС | профиль | цитата
iarspider писал(а):
Надо мне как-нибудь достать из архива свою программу для расшифровки NMEA-сообщений (написанную на C++). Она использует все собщения, которые мой приёмник посылает.

Расшифровка не проблема, проблема чтения с СОМ порта.
Tad писал(а):
Ты читаешь из порта по два байта.
Почему ты уверен, что "0D0A" у тебя всегда приходят вместе ?
Возможны варианты : 0D0A - в яблочко и молоко XX0D или 0A24

Я не уверен, но ничего лучше не придумал, нужно придумать, как читать побайтно
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#9: 2008-11-20 01:13:41 ЛС | профиль | цитата
Konst писал(а):
как читать побайтно
а может читать по 256 байт, а потом компонентом

Add(BlockFind,4545412,497,77)
{
StartBlock="$GPGGA"
EndBlock="
"
}
вырезать нужный?
Konst, вот соорудил
точность +- километер, но для тестирования должно сойти.

------------ Дoбавленo:

Проверил 256 байт и BlockFind - работает отлично
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1immgps.rar [44.5KB] [209]
Голосовали:Konst
Ответов: 1328
Рейтинг: 69
#10: 2008-11-20 13:56:03 ЛС | профиль | цитата
Tad, так и до программы навигации с картами дойдем
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#11: 2008-11-21 17:29:49 ЛС | профиль | цитата
Похоже...
------------ Дoбавленo:

iarspider писал(а):
А ещё можно кучу StrPart заменить элементами из MT-вкладки...

iarspider, а у меня есть вот такой компонент для строк
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1multimem.rar [1019B] [174]
Голосовали:Konst
Ответов: 1328
Рейтинг: 69
#12: 2008-11-22 02:08:21 ЛС | профиль | цитата
Tad, + компонент хороший, но я сейчас стараюсь использовать только стандартные-меньше проблем при переходе на новую версию
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#13: 2008-11-22 16:21:30 ЛС | профиль | цитата
NESCO, а ты смотрел на компонент (multimem.rar) ? Чё скажешь (нуженненужен) ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#14: 2008-11-22 16:36:47 ЛС | профиль | цитата
Tad писал(а):
а ты смотрел на компонент

Смотрел, но не понял. Скинь пример его использования, где показан его принцип работы, тогда посмотрим
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#15: 2008-11-22 17:18:04 ЛС | профиль | цитата
Вот пример разложения строки с GPS (выдает строку данных - разделитель запятая) и каждое значение, для дальнейшей обработи, идет по своему каналу. Конечно можно поставить 15 штук StrPart - получится ж.д. Москва-Владивосток.
Мне нужно было в небольшом текстовом документе (табличка на 20 колонок) на 5000 строк поменять местами 7 или 8 колонок. Так и родился этот компонент и в паре с FormatStr сделал ту работу мгновенно. Я уже и забыл за него, а когда Konst занялся расшифровкой сигналов GPS, вспомнил и ели нашел.

Add(Button,12317080,63,112)
{
Left=15
Top=15
Data=String($GPGGA,004241.47,5532.8492,N,03729.0987,E,1,04,2.0,-0015,M,,,,*31)
link(onClick,14880075:doEvent1,[])
}
Add(MultiMem,9898212,224,112)
{
Char=","
Count=15
link(onData,799726:doEvent1,[(366,118)(366,299)(149,299)(149,167)])
}
Add(Label,1949808,224,161)
{
Left=150
Top=60
link(Text,9898212:Value1,[])
}
Add(Label,11513507,231,168)
{
Left=150
Top=75
link(Text,9898212:Value2,[])
}
Add(Label,7790563,238,175)
{
Left=150
Top=95
link(Text,9898212:Value3,[])
}
Add(Label,6920568,245,182)
{
Left=150
Top=115
link(Text,9898212:Value4,[])
}
Add(Label,13130245,252,189)
{
Left=150
Top=135
link(Text,9898212:Value5,[])
}
Add(Label,12341243,259,196)
{
Left=150
Top=150
link(Text,9898212:Value6,[])
}
Add(Label,650700,266,203)
{
Left=150
Top=165
link(Text,9898212:Value7,[])
}
Add(Label,10560247,273,210)
{
Left=150
Top=185
link(Text,9898212:Value8,[])
}
Add(Label,2039090,280,217)
{
Left=150
Top=200
link(Text,9898212:Value9,[])
}
Add(Label,5915212,287,224)
{
Left=150
Top=215
link(Text,9898212:Value10,[])
}
Add(Label,16651668,294,231)
{
Left=150
Top=230
link(Text,9898212:Value11,[])
}
Add(Label,444110,301,238)
{
Left=150
Top=245
link(Text,9898212:Value12,[])
}
Add(Label,11231507,308,245)
{
Left=150
Top=260
link(Text,9898212:Value13,[])
}
Add(Label,174371,315,252)
{
Left=150
Top=275
link(Text,9898212:Value14,[])
}
Add(Label,6633718,322,259)
{
Left=150
Top=290
link(Text,9898212:Value15,[])
}
Add(Label,3726760,231,63)
{
Left=85
Top=20
}
Add(Hub,14880075,119,112)
{
link(onEvent1,3726760:doText,[(208,118)(208,69)])
link(onEvent2,9898212:doValue,[])
}
Add(Hub,799726,161,161)
{
OutCount=15
link(onEvent1,1949808:doText,[])
link(onEvent2,11513507:doText,[])
link(onEvent3,7790563:doText,[])
link(onEvent4,6920568:doText,[])
link(onEvent5,13130245:doText,[])
link(onEvent6,12341243:doText,[])
link(onEvent7,650700:doText,[])
link(onEvent8,10560247:doText,[])
link(onEvent9,2039090:doText,[])
link(onEvent10,5915212:doText,[])
link(onEvent11,16651668:doText,[])
link(onEvent12,444110:doText,[])
link(onEvent13,11231507:doText,[])
link(onEvent14,174371:doText,[])
link(onEvent15,6633718:doText,[])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)