NMEA 0183 Cümle Çözücü ve Checksum Hesaplama Aracı (Online)
Bir marine elektronik kurulumunda GPS, sonar, rüzgar aleti veya pusula gibi cihazları debug ederken karşınıza ham NMEA 0183 cümleleri çıkar. Bu cümlelerin doğru olup olmadığını anlamak, hangi alanın neyi ifade ettiğini çözmek ve checksum’ın tutup tutmadığını kontrol etmek elle yapıldığında zaman alır ve hataya açıktır. Aşağıdaki araç bu işi sizin için yapar: bir NMEA 0183 cümlesini yapıştırın, checksum anında doğrulansın, cümle tipi tanınsın ve her alan tek tek anlamıyla birlikte listelensin.
Araç ne yapar?
Aracı kullanmak için elinizdeki NMEA cümlesini (örneğin bir terminal logundan veya cihaz çıktısından kopyaladığınız satırı) metin kutusuna yapıştırmanız yeterlidir. Araç üç işi aynı anda yapar. Birincisi, cümlenin sonundaki checksum değerini hesaplar ve cümledeki değerle karşılaştırarak yeşil (geçerli) veya kırmızı (hatalı) olarak gösterir. İkincisi, cümlenin konuşmacısını (talker) ve tipini tanır; örneğin $GPRMC cümlesinin GPS kaynaklı “önerilen minimum veri” cümlesi olduğunu söyler. Üçüncüsü, virgülle ayrılmış her alanı sırasıyla listeler ve o alanın ne anlama geldiğini (enlem, boylam, hız, derinlik, zaman vb.) açıklar.
NMEA 0183 checksum nasıl hesaplanır?
NMEA 0183 checksum’ı, basit ama güvenilir bir hata kontrol yöntemi olan XOR (özel veya) işlemine dayanır. Hesaplama, cümlenin başındaki $ (veya AIS için !) karakterinden sonra başlar ve checksum’ı ayıran * karakterine kadar devam eder. Bu aralıktaki tüm karakterlerin ASCII değerleri sırayla XOR’lanır. Elde edilen sonuç, iki haneli onaltılık (hexadecimal) bir sayı olarak * işaretinden sonra yazılır.
Örneğin $GPGLL,4916.45,N,12311.12,W,225444,A, gövdesindeki tüm karakterler XOR’lanır ve sonuç 1D çıkar; bu yüzden tam cümle $GPGLL,...,A,*1D şeklinde biter. Alıcı cihaz aynı hesabı yapar ve kendi bulduğu değerle gelen değeri karşılaştırır. İki değer tutmuyorsa, cümle iletim sırasında bozulmuş demektir ve cihaz onu yok sayar. Bu yüzden checksum, hatalı bir kablo, gürültülü bir hat veya yanlış bir baud hızını teşhis etmenin ilk adımıdır.
Checksum tutmuyorsa ne yapmalıyım?
Checksum hatası genellikle veri yolundaki fiziksel bir sorunu işaret eder. İlk olarak kablo bağlantılarını ve A/B (veya +/−) hatlarının doğru bağlandığını kontrol edin. İkinci en yaygın neden yanlış baud hızıdır; standart NMEA 0183 için bu 4800 bps, yüksek hızlı AIS için 38400 bps’dir. Cihazınız farklı bir hızda dinliyorsa cümleler bozuk gelir. Ayrıca uzun kablolarda sinyal bütünlüğü için sonlandırma direnci gerekebilir. Eğer checksum tutuyor ama veriler mantıksızsa, sorun iletimde değil, cihazın ürettiği veride veya cümle yorumlamasındadır.
Hangi cümle tiplerini destekliyor?
Araç, marine ve GNSS uygulamalarında en sık karşılaşılan cümle tiplerini tanır ve alanlarını açıklar: konum ve zaman için RMC, GGA, GLL, ZDA; rota ve hız için VTG; uydu durumu için GSA ve GSV; derinlik için DBT ve DPT; rüzgar için MWV; pusura yönü için HDT ve HDM. Tanımadığı bir cümle tipinde bile checksum’ı doğrular ve alanları ham olarak listeler, böylece nadir cümleler üzerinde de çalışabilirsiniz.
Sıkça sorulan sorular
Checksum büyük/küçük harf duyarlı mı? Onaltılık değer büyük harfle yazılır (örneğin *6A), ancak çoğu ayrıştırıcı her iki yazımı da kabul eder. Araç karşılaştırmayı harf duyarsız yapar.
AIS cümlelerini de çözer mi? AIS cümleleri ! ile başlar ve checksum mantığı aynıdır; araç checksum’ı doğrular. Ancak AIS yük verisi (payload) ayrı bir 6-bit kodlamayla paketlendiğinden, alan alan çözümü bu araçta GNSS cümleleri kadar ayrıntılı değildir.
Verilerim bir yere gönderiliyor mu? Hayır. Tüm hesaplama tarayıcınızda, kendi cihazınızda yapılır; girdiğiniz hiçbir cümle sunucuya gönderilmez.

