USB 加密狗、GSM IC 使用“AT”命令进行配置以及控制其操作。此类命令能够控制电源以及发送短信、通过 LTE、GPRS 或 3G 连接到互联网,甚至重置设备和接听电话。我还必须提到,控制此类设备的唯一方法是通过“AT”命令。
“AT” 命令标准有大约 10 - 15 个通用命令,一些设备有一组附加命令来允许连接到互联网。以下是一些可能的此类操作,
- 建立与 SSL 或非 SSL 服务器的连接。
- 一旦连接处于活动状态,就将数据发送到服务器中的端口。
- 关闭连接。
我相信(如果我错了请纠正我)一个 AT 命令对应上述任务之一。
我有兴趣用 C 语言为 GNU/linux 系统编写一个驱动程序,它可以通过 AT 命令解释并满足 PC 的互联网需求。该软件必须让 PC“看到”自己是一个“出口”,可能像以太网连接一样。大多数加密狗软件都是这样做的。它们通常有两个高速运行的 COM 端口。一个 COM 端口由 USB 加密狗默认软件控制,另一个用于发送/接收数据。
如果有人能向我解释如何使用此驱动程序软件开发“假”以太网连接或让 PC“看到”出路,我将不胜感激。驱动程序软件需要“驱动” GSM IC 或 USB 加密狗来发送/接收数据。因此,这个项目用于教育目的,我对安装二进制软件并让我的加密狗工作不感兴趣。
如果有人能联系到类似的开源项目,我将不胜感激。
答案1
硬件方面:与 GSM 硬件对话
似乎有几个人使用“SIM900 GPRS 模块”通过 AT 命令连接到 Web 服务器。这是否足够接近您要寻找的内容?
- 《FTP HTTP AT 命令用户指南》
- “SIM900GSM Arduino 库”
- “Arduino 论坛:使用 AT 命令 POST HTTP”
- “使用 GPRS 通过 POST HTTP 命令将数据更新到 Web 服务器”
- “Sim900 AT 命令 + HTTP 获取请求。”
- “HTTP 功能的 AT 命令”
编辑:
应用程序端:与普通、未修改的 Linux 应用程序对话
这听起来就像您希望 Linux 计算机上的 Firefox 之类的软件能够正常工作,而无需对 Firefox 应用程序本身进行任何更改,“就像” PC 插入标准以太网电缆连接到互联网一样。
因此,您的软件需要是一个设备驱动程序,在应用程序端“看起来”像其他以太网或 WiFi 设备驱动程序,但在硬件端通过 USB 或其他串行端口将数据路由到 GSM/GPRS 硬件。
您能否分叉一些标准的以太网设备驱动程序或 Wifi 设备驱动程序,然后将与其特定以太网卡硬件对话的部分替换为与您的特定 GSM/GPRS 硬件对话的部分?
已经有人写过关于编写 Linux 设备驱动程序的整本书了;而且许多 Linux 设备驱动程序都是开源软件:
- 亚历山德罗·鲁比尼和乔纳森·科贝特。Linux 设备驱动程序,第 2 版。第 14 章:网络驱动程序和Linux 设备驱动程序,第 3 版。第 17 章:网络驱动程序。
- Linux 内核 – 网络设备驱动程序编程
- 巴斯卡兰。编写网络设备驱动程序 - 第一部分
- 莫汉·拉尔·詹吉尔。为 Linux 编写网络设备驱动程序。
- 设备驱动程序简介 - 第 2 部分 - 以太网驱动程序
- P. Raghavan、Amol Lad、Sriram Neelakandan。嵌入式Linux系统设计与开发. 第 5.2 节:以太网驱动程序。
- StackOverflow:我应该如何开始编写设备驱动程序?
- eLinux:设备驱动程序
对于你的特定应用程序,编写一个普通的用户空间程序并设置调谐/分接虚拟网络内核设备将 Firefox 和其他应用程序的数据包传送到您的用户空间程序。
对于编写此类设备驱动程序的问题,由于这些设备驱动程序在所有 Linux 系统(不仅仅是 Ubuntu)上的工作方式相同,你可以在更相关的网站上得到更好的答复,例如https://unix.stackexchange.com/,https://serverfault.com/,https://softwareengineering.stackexchange.com/,https://networkengineering.stackexchange.com/, ETC。