现在的位置: 首页 > 综合 > 正文

如何连接USB接口的GSM模组

2013年02月24日 ⁄ 综合 ⁄ 共 936字 ⁄ 字号 评论关闭

最近在做手机MMI的封装,要将其移植到linux上。我们使用的手机GSM模组是USB接口的,而一般的模组是基于串口来通讯的,一时不知道如何和手机连接。于是花了点时间研究了下实现的方法,发现并不难于实现。在此作些记录以作备忘。

  • USB接口的实质

通过在windows中的测试和使用,发现手机GSM模组的USB接口在PC端是以虚拟串口的形式存在的,PC端的程序要和模组通讯,实际上是操作这个虚拟串口。在windows中,将会在设备管理器中多出一个调制解调器设备调制解调器设备的属性项下可以看到其使用的串口,通过该串口即可以和手机通讯。在linux中,只要有usbcoreusbserial,加上pl2303芯片的驱动,在/dev目录下就会出现一个ttyUSB0的设备,操作该tty设备即可以和手机通讯。实际上windowslinux都是使用pl2303的驱动程序。

手机USB接口的驱动程序栈如下所示。

pl2303驱动
usbserial驱动
usbcore驱动
  • 使用终端和手机进行会话

windows上,通过超级终端连接到手机的虚拟串口或调制解调器,一般是COM3COM15,就可以和手机建立会话,使用AT命令和手机交互,如拨打电话,收发短信等。

linux上,使用Linux下的串口终端程序minicom,连接到设备ttyUSB0,按8N1的串口标准设置,选择合适的波特率(如115200bps),就可以和手机建立会话,使用AT命令操作手机。

  • C程序中和手机通讯

           在windows上,使用windowsAPI函数CreateFile打开手机的虚拟串口,用API 函数WriteFile发送AT命令字符串,用API函数ReadFile读取AT命令的响应。

               linux上,使用一般的打开文件的API函数open打开ttyUSB0设备,设置好该终端设备的属性,用API函数write发送AT命令字符串,用API函数read读取AT 令的响应,也可以使用select函数挂起在该串口设备上。Linux的串口通讯程序的编写可以参考我的上一篇文章《怎样控制一个串行口和调制解调器》或Linux Serial Programming HOWTO - 串口通讯编程


抱歉!评论已关闭.