最近碰到一個超離奇的狀況,我的車載車牌辨識需要接收GPS的訊號,所以都會請客戶自己買個如上的GPS接收器,我的程式會辨識這種小機器回傳的NMEA0183格式的文字訊息,訊息有很多種,其中兩種有經緯度的資訊,幾十年來我寫程式都是辨認以”$GPGGA”為首的字串訊息!也一直都沒問題。
但是前幾天合作夥伴的涂老闆想自己組合軟硬體,把車載系統包含硬體整套推銷,於是買了新的GPS測試,卻說我的程式讀不到經緯度?我不耐煩地說不可能,同樣的程式用二三十年了,根本沒改過,這個軟體都賣了好幾年幾十個客戶了,從來沒人說讀不到經緯度!
他不好意思,但也不死心就寄了一個一模一樣的GPS接收器給我測試,結果還真的收不到?我被迫寫程式呈現原始訊息內容,才發現那個接收器輸出的訊息中根本沒有以”GPGGA”開頭的字串!只有”GNGGA”開頭但內容與”GPGGA”字串一樣的字串,於是回頭查資料才看到如下資訊:
原來近三十年來我的程式都算是寫錯了!關鍵字其實只是”GGA”而已,只要是 ??GGA開頭的字串其實內容都一樣!我的就程式卻一直在等根本不會來的GPGGA字串,當然就沒機會讀到經緯度了!我目前也還沒找到前兩個字母的意義,但是不重要了!讓程式不再挑食,看到GGA就開工就對了,其實還有以RMC關鍵字為首的訊息裡面也是有經緯度的,我就通通都讀就對了!
問題解決後覺得有點好笑,跟涂老闆比喻說明這個狀況,很像鄉下阿伯只聽得懂台語,到了機場候機時,知道他們會用多種語言重複廣播同一則訊息,就偷懶忽略不聽不熟悉的語言廣播,專等著聽台語的版本,但是他們有英、日、國語就是沒有台語版的廣播!所以鄉下阿伯就錯過班機了!人家是講了,但是他沒去聽,或聽不懂嘛!
感謝讀者回饋,原來GNGGA是包含了GPS與北斗衛星系統的資訊!所以取代了GPGGA的位置。
限會員,要發表迴響,請先登入