C++ 在Windows Mobile中直接访问调制解调器

C++ 在Windows Mobile中直接访问调制解调器,c++,windows-mobile,modem,tapi,C++,Windows Mobile,Modem,Tapi,出于某些原因,我需要能够访问Windows Mobile智能手机(WM版本为6.1的HTC s740)的内部调制解调器。我想要的是能够像访问串行端口一样访问它,以便发出AT命令 我有一些代码使用TAPI Line接口和lineGetID()来获取一个“句柄”,我应该能够在这个句柄上执行ReadFile()/WriteFile()。遗憾的是,我没有让它发挥作用 我现在做的是: 使用lineInitializeEx()初始化TAPI 使用lineOpen()打开该行 遍历每个可用设备并获取信息。目前

出于某些原因,我需要能够访问Windows Mobile智能手机(WM版本为6.1的HTC s740)的内部调制解调器。我想要的是能够像访问串行端口一样访问它,以便发出AT命令

我有一些代码使用TAPI Line接口和lineGetID()来获取一个“句柄”,我应该能够在这个句柄上执行ReadFile()/WriteFile()。遗憾的是,我没有让它发挥作用

我现在做的是:

  • 使用lineInitializeEx()初始化TAPI

  • 使用lineOpen()打开该行

  • 遍历每个可用设备并获取信息。目前我正在选择“UNIMODEM”/“Hayes compatible on COM1”设备。但也许我应该选择“TAPI蜂窝服务”/“蜂窝线路”来代替?我试过“手机线”设备,效果也一样

  • 在所选设备上使用lineGetID()获取句柄

  • 执行WriteFile(“AT\r”),然后直接执行ReadFile(),如果它确实是我访问的调制解调器,则会返回“OK”

  • 意识到它不起作用,并感到恼火

  • 但到目前为止,这是不可能的

    有人知道怎么做吗

    我在Windows 6中的本地Win32 C++上做这个。 更新:
    到目前为止,我已经成功地使用RIL在两部手机之间建立了数据连接,它为我提供了一个串行端口句柄来进行写入和读取。但是,我仍然希望能够直接与调制解调器交互以发送AT命令。所以,我要开始的赏金只涉及直接访问调制解调器,以便发出AT命令。到目前为止,我的调查表明,这在以前版本的Windows Mobile中是可能的(通过打开COM2和/或COM9并杀死RIL,或类似的方式),但我还没有看到在WM6上工作的代码。

    我不确定您是否可以使用
    lineGetID
    中的句柄和
    WriteFile
    /
    ReadFile
    函数。这些是(可能)不能与TAPI一起使用的低级函数

    我会尝试使用
    CreateFile
    打开COM端口,获取句柄,然后使用
    WriteFile
    ReadFile
    函数。MSDN()中有一篇古老的经典文章描述了这种技术


    但是,我对Windows Mobile编程没有经验,所以我不确定它是否适合您。

    您可能无法做到这一点。无线电接口不一定是COM端口——AT命令通常是模拟的。即使可以获得COM端口的句柄,您如何与内置连接管理器正在执行的活动同步。

    lineGetID()返回句柄。如果不读写,我该怎么处理它?使用CreateFile将非常棒,但我需要确保世界上的每个Windows Mobile设备都使用相同的COM端口作为其调制解调器。从MSDN页面关于lineGetID:“lineGetID函数返回与所选线路、地址或调用关联的指定设备类的设备标识符”。对我来说,它看起来不像把手。说到调制解调器端口,你必须找到合适的。我会尝试在从COM1开始的任何COM端口上调用CreateFile(带有OPEN_EXISTING标志)。如果打开,请发送“AT”并等待答复。如果它来了,你就到家了,如果没有,试试下一个端口。可能此链接()会对您有所帮助。完全有可能获得开放端口的句柄,如下所述: