2009-06-15 49 views
3

出於某些原因,我需要能夠訪問Windows Mobile智能手機的內置調制解調器(WM版本爲6.1的HTC s740)。我想要的是能夠訪問它,就像它是一個串行端口,以便提供AT命令。在Windows Mobile中直接訪問調制解調器

我有代碼,使用TAPI行界面和lineGetID()來獲得一個「句柄」,我shuld能夠執行ReadFile()/ WriteFile()。可悲的是我沒有得到它的工作。

我目前做的是:

  1. 初始化TAPI與lineInitializeEx()

  2. 公開賽lineOpen(線路)

  3. 迭代通過每個可用的設備和獲取信息。目前我正在選擇「UNIMODEM」/「與COM1兼容的Hayes」設備。但是,也許我應該選擇「TAPI蜂窩服務」/「蜂窩線」呢?我試過了「蜂窩線」設備,結果相同。

  4. 在選定設備上使用lineGetID()來獲取句柄。

  5. 執行WriteFile(「AT \ r」),然後直接執行ReadFile(),如果它確實是我訪問的調制解調器,應該給我一個「OK」。

  6. 實現,它不工作,生氣......

但這迄今無去。

有沒有人有任何想法如何做到這一點?

我在Windows Mobile 6 SDK的Native WIN32 C++中執行此操作。

更新: 我到目前爲止設法使用RIL獲得兩個電話之間的數據連接,這爲我提供了一個串行端口句柄來讀寫。但是,我仍然希望能夠直接與調制解調器進行交互以發送AT命令。所以,我開始的賞金只是爲了給AT命令直接訪問調制解調器。到目前爲止,我的調查表明,這在Windows Mobile的早期版本中是可能的(通過打開COM2和/或COM9以及殺死RIL或類似的東西),但我還沒有看到在WM6上工作的代碼。

回答

0

我不確定您是否可以使用lineGetIDWriteFile/ReadFile函數中的句柄。這些是(可能)不能與TAPI一起使用的低級函數。

我試着用CreateFile打開COM口,拿到句柄,然後用WriteFileReadFile函數。 MSDN中有一篇古典文章(Serial Communications in Win32),它描述了這種技術。

但是,我沒有使用Windows Mobile編程的經驗,所以我不確定它是否適合您。

+0

lineGetID()返回一個句柄。如果不讀取和寫入,我應該怎麼做? 使用CreateFile會很棒,但是我需要確保世界上的每個Windows Mobile設備都使用相同的COM端口作爲它的調制解調器。 – 2009-06-16 06:12:04

1

你可能不能這樣做。無線電的接口不一定是COM端口 - AT命令通常是模擬的。即使您可以獲得COM端口的句柄,您將如何與內置連接管理器執行的活動同步。