我有一个 USB 调制解调器被检测为设备设备文件 ( /dev/ttyACM0
)。将 AT 命令重定向到设备文件似乎可以在调制解调器响应时起作用。
我遵循以下假设,上部代表控制通道。通过它,人们可以拨号、设置调制解调器、取消连接……一般来说,可以执行与控制调制解调器相关的操作,而无需实际处理data
.我的data
意思是所有不受控制的东西(例如 HTTP 数据包)。
数据流发生在哪里?如果是通过同一个文件,那么它是如何多路复用的?
同样理想的情况是,人们希望调制解调器只是一种底层“服务”,提供带有 IP 的网络接口,这样人们就可以将其抽象出来并使用 TCP/IP 套接字。套接字在内核中实现。
一旦调制解调器暴露/dev/ttyACM0
在用户空间中,这将如何适应图片?
答案1
使用 AT 型调制解调器“接口”的设备可以在多种状态下运行:
- 命令模式
- 拨号方式
- 握手模式
- 数据模式
调制解调器以命令模式启动,并响应AT
- 前缀的命令。一旦它们建立连接(ATD
例如,在经历拨号和握手模式之后),它们就会切换到数据模式,并且发送给它们的任何数据都会传输到它们所连接的设备。要切换回命令模式,发送方需要暂停数据流一定时间,发送+++
,然后再次暂停;调制解调器切换回命令模式并AT
再次开始响应命令(并且数据流被中断)。
有些调制解调器不需要暂停,这意味着如果数据包含命令序列,它将被解释为命令序列+++
(因此+++ATH0
在 IRC 上开玩笑)。
要在调制解调器数据连接之上提供另一个协议,您需要使用另一个工具。使用哪种工具取决于另一端期望的协议(SLIP、PPP、PPPoE...);例如,你会使用ppp
对于 PPP(最好集成到您的发行版中,因此设置最终基本上是透明的)。这将提供某种形式的 IP 封装,然后您可以照常使用 IP。所涉及的工具将使用与调制解调器通信所需的任何设备(/dev/ttyACM0
在您的情况下),并公开另一个接口,系统的其余部分可以将其用于网络目的(一般来说,网络接口,例如 ppp0
)。