
常看到有人發文說在HTC Touch HD上使用Papago X3圖資會延遲顯示的問題,因自己也有相同經驗,特將部份Xda的解決方案分享,自己改過後覺得雖然還無法達到圖資與實況完全吻合,但確實有明顯改善,提供給各位參考:
Xda原文及個人翻譯:
The HD has a buffer, where the hardware writes its values and where the software reads it from. The communication is done via COM-port (emulation maybe). That's the reason for the "lag":
HD有個暫存區位置(buffer),這是硬體(指GPS)寫入資料及軟體(指導航軟體)讀取資料的地方.其通訊閘道是透過COM-Port(也許是虛擬的port)來完成。這部份是造成會延遲的原因。
The buffer is by default 4kB (4096) in and out - both. That's "fat" for the some bytes of a geo point in degrees and min/sec/sub. Thats why the navi-prog comes a little late to the right point: the driver-buffer tells all the obsolete values until the buffer is empty.
這個暫存區寫入及輸出空間大小預設值為4KB(4096)。這個預設值大小對以度分秒計算的經緯數值來說是太大了。這是為何導航軟體會比較晚顯示到正確的位置點的原因;因為暫存區的已存的數值必須要全清空才能再補新數值。
=========================================================================================
改善1:刷HTC 新版Rom 1.59.709.0。 此版本Rom對GPS的定位速度有非常明顯的提升,建議使用官方版本的可先刷此版本來改善。刷Rom的方式與討論請另行爬文。
改善2:執行Papago X3後進入GPRS的設定畫面,將傳輸速度baundrate開到最大115200。
改善3:使用Resco Registry or RegEdit CE等修改Registry值的軟體:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\InputBufferSize = 512 (or 256更棒)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\OutputBufferSize = 512 (or 256更棒)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\RetryWaitonError = 1
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\SleepOnNoData = 250
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\PollInterval = 1000 (or 500 works too or 3000 ...)
改完後將手機重新開機,就可以測試完成結果。
P.S.
1.修改Registry有其風險,請做好備份工作或先記下未修改前的數值。
2.此篇僅進行圖資延遲改善的分享,Papago X3其他問題請勿筆戰。謝謝!

==================================================================
回應補充一:
1.此次原廠新版的Rom最大的改善也就在於定位速度,在晴朗室外空曠區域,定位可以在5秒內完成整個感覺只有一個"爽"字可以形容。當然其他HTC機型更新Rom是否有相同效果,還得各位自行測試。
2.因為寫程式的人應該知道serial port都會有FIFO Buffer............(恕刪)
沒錯,但是FIFO buffer的大小與每台手機GPS傳輸速度都並不相同,所以才需要實測調整。所以其他如Dimond or Dimond 2應該也可以試看看調整效果!
3.FIFO buffer的大小我上述寫的是256~512。個人另外試過128、64、32等數字,感覺上128以下的差異性就很小。各位有興趣也可以試看看這兩個Registry值的數字大小HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\InputBufferSize = 512 。(or 256更棒~~128 or 64 or 32)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\OutputBufferSize = 512 (or 256更棒~~128 or 64 or 32)