C++ 在Windows Mobile中直接访问调制解调器
出于某些原因,我需要能够访问Windows Mobile智能手机(WM版本为6.1的HTC s740)的内部调制解调器。我想要的是能够像访问串行端口一样访问它,以便发出AT命令 我有一些代码使用TAPI Line接口和lineGetID()来获取一个“句柄”,我应该能够在这个句柄上执行ReadFile()/WriteFile()。遗憾的是,我没有让它发挥作用 我现在做的是: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()打开该行 遍历每个可用设备并获取信息。目前
到目前为止,我已经成功地使用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”并等待答复。如果它来了,你就到家了,如果没有,试试下一个端口。可能此链接()会对您有所帮助。完全有可能获得开放端口的句柄,如下所述: