AIS oczytanie zapisanego tekstu

0

AIS (Automatic Identification System) system ten generuje postać znaków począwszy od !AIVDM:

!AIVDM,2,1,2,B,8030ojA?0@=DE3@?BDPA3onQiUFttP1Wh01DE3<1EJ?>0onlkUG0e01I,0*3D

w których zapisane są dane takie jak:

// 1)Message ID, 6 bits 1-6
// 2)Repeat Indicator, 2 bits 7-8
// 3)User ID, 30 bits 9-38
// 4)Navigation status, 4 bits 39-42
// 5)Rate of turn, 8 bits 43-50
// 6)SOG, 10 bits 51-60
// 7)Position accuracy, 1 bit 61
// 8)Longitude, 28 bits 62-89
// 9)Latitude, 27 bits 90-116
// 10) COG, 12 bits 117-128
// 11) True Heading, 9 bits 129-137
// 12) UTC second when report generated, 6 bits 138-143
// 13) Regional Application, 4 bits 144-147
// 14) Spare, 1 bit 148
// 15) RAIM Flag, 1 bit 149
// 16) Communications State, 19 bits 150-168

muszę oczywiście odkodować te dane i pogrupować. Proszę o pomoc jak do tego mam się zabrać, wybrałem delphi bo jedynie z nim miałem kiedykolwiek doczynienia w "programowaniu". Z góry dziękuję za pomoc.

Pozdrawiam
Kamil 'ident' C.

0

Inaczej mówiąc chciałbym napisać parser wiadomości AIS.

0

Sprawdzałeś tutaj?
http://www.bosunsmate.org/ais/#bitvector

In the NMEA encoding for AIS - each ASCII character corresponds to 6 binary bits (unlike normal ASCII which uses 8 bits) so you need to step through each character and subtract 48 from the ASCII - then if it's still a decimal number > 40 subtract another 8 - then convert to binary: this guarantees a 6 bit number. Looking at our data (just the first few characters)

Zamieniasz kodowanie na 8 bitach na kodowanie na 6 - ciu. Następnie pobierasz paczki danych wg rozpiski, którą sam załączyłeś i rozkodowujesz co poszczególny zestaw bitów oznacza.

Możesz sprawdzić prawidłowość działania swojej funkcji dekodującej tu:
http://rl.se/aivdm

0

Na stronie, którą podałem
http://www.bosunsmate.org/ais/#bitvector
jest błąd. Chodzi o numer MMSI. Konwersja znaków ASCII na kod 6-cio bitowy, nie jest dokonana prawidłowo dla bitów zawierających numer MMSI. Dalej jeszcze nie doszedłem.

0

jeszcze jeden przydatny link
http://gpsd.berlios.de/AIVDM.html#_aivdm_aivdo_six_bit_ascii
Ja mam rozwiązaną zamianę ASCII na kod 6-cio bitowy. Teraz grupuję ciąg bitów na poszczególne ciągi zawierające poszczególne informacje. Potem trzeba to zamienić na liczby dziesiętne (w przypadku np. MMSI to wystarczy) i rozkodować w/g tabel podanych na stronie.
Swoją drogą ciekawe dlaczego te informacje nie idą po prostu jako ASCII...

1 użytkowników online, w tym zalogowanych: 0, gości: 1