2010-11-19 96 views
0

林具有與該GPS中間驅動程序的一些問題,我添加了一個虛擬串口到我們的相機/ GPS硬件,露出原始NMEA數據,這是現在的工作沒有問題,需要原始NMEA任何應用程序數據可以連接到COM8並接收它。GPS中間驅動程序的問題

如果GPS中間層驅動程序所涉及,即「設置|外部GPS」有硬件端口設置爲COM8和程序端口COM7。然後,當應用程序從COM7請求數據時,數據看起來不同。我只說出現,因爲我無法檢查物理輸出,請參閱下面的註釋A.

的差異似乎是比直接連接到COM8恢復明顯慢了,又像是獲取VisualGPS,而他們表現出鎖定到6顆衛星將無法顯示3D GPS定位應用。只有當連接到COM8時,我纔會收到一個3D GPS修復程序,這對我來說,表示Microsoft軟件正在更改數據,而不是簡單地共享數據,從而導致希望使用該驅動程序的用戶在多個應用程序之間共享數據時出現問題。

任何人有,爲什麼微軟中間驅動程序導致我這樣的問題的任何想法,似​​乎有關於它的信息非常少。

注意A) - 似乎沒有WM6專業版的診斷程序,它將讀取COM端口或至少將流量重定向到連接到PC的COM端口。如果任何人都可以推薦一個WM6的程序來連接和查看來自COM端口的數據,理想情況下有時間戳。或者一個程序來重定向通信,即從COM7讀取,打開COM6並通過COM6發送數據。我可以將數據推送到系統中,只要我找不到可以將數據推出的程序。

回答

0

我已經與移動設備製造商合作,以診斷此。他們不得不使用我們的設備和操作系統的調試版本來隔離它,即使這樣它也不是一行代碼(驅動程序和操作系統),這就是問題所在。我們的讀取方法沒有超時,作爲一個軟件端口,它並不重要,但它是必需的。

這樣的事情必須添加。

if(WaitForSingleObject(driver->GPSDataAvailableThread, driver->GPSTimeouts.ReadTotalTimeoutConstant) != WAIT_OBJECT_0) 
{ 
    //debug message, no data to read 
    return 0; //return 0 bytes read 
} 
//otherwise carry on a normal read operation. 

即使超時時間爲0,它也允許線程進入休眠狀態並繼續其他進程。問題是沒有它,應用程序正在讀取COM端口,導致中間層驅動程序進行調用並創建互斥鎖造成開銷。像pocketputty一樣讀取1個字節的應用程序會導致此問題,但SatNav軟件(例如copilot每秒讀取1024次)沒有問題。

1

改變設備的數據是什麼GPS中間層驅動程序是應該做的。它將您的應用程序與GPS設備的實施細節隔離開來,以便您的代碼可以與任何GPS設備一起使用。我無法診斷您的問題所具有的確切問題,我只能推薦the docs

+0

嗨,我認爲在互聯網上診斷這個問題可能很困難。我已經給了文檔另一個閱讀,它給了我一些想法,我還可以添加到驅動程序/註冊表,看看它是否有助於解決問題。 – JonWillis 2010-11-21 11:33:40

+0

http://stackoverflow.com/questions/4245971/gps-intermediate-driver-slowing-down-the-data-from-a-virtual-serial-port-driver我有點縮小了這個問題。 – JonWillis 2010-11-22 13:49:26