我有一个华为 E160E 和一个华为 K3765“GSM”调制解调器。
问题是:如何使用这些调制解调器发送和接收音频数据、拨打或接听电话/语音呼叫?
根据规格,两者似乎都支持语音通话(E160E,K3765)并根据 AT 命令:
发行
AT^CVOICE?
结果是
^CVOICE:0,8000,16,20
OK
(两个调制解调器相同)。
两个调制解调器都提供 3 个 USB 端口,我将它们称为/dev/ttyUSB0
, /dev/ttyUSB1
, /dev/ttyUSB2
(假设系统中没有其他 USB 串行设备)。 K3765 另外注册了一个cdc_ether
以太网设备。我正在使用Linux。
/dev/ttyUSB0
我可以在两者上/dev/ttyUSB2
放置 AT 命令并接收他们的答案;此外,/dev/ttyUSB2
还报告状态消息(如^RSSI:23
、^BOOT:38021325,0,0,0,77
或^SIMST:1
)^SRVST:2
。当有人呼叫 ( RING
) 时,K3765 也会默认报告,而 E160E 则不会。
在这两个调制解调器上,我可以使用 拨打电话ATD<number>;
,也可以使用 接听电话ATA
。
/dev/ttyUSB1
似乎什么也没做;简单地写入该文件不会将任何数据写入其中,从该文件中读取也不会输出任何数据。
如何将音频数据传入和传出调制解调器?
我已经找到了这个堆栈交换问题和答案赛柴塔尼亚以及使用ffmpeg
/ 的注释ffplay
。ffplay
只是对我来说停滞不前,并且随着代码被剪断,我无法做太多尝试(不是程序员,特别是不是 in C
,不过;并且不知道这是否适用于我的调制解调器)。
在互联网上,除了使用大型软件包(例如星号)之外,我找不到有关如何实际将音频输入和输出这些设备的信息 - 我不想要它,问题是如何将其获取工作的基本方式。
那么,如何与(那些)华为 GSM 调制解调器进行音频通信呢?
调制解调器信息:ATI
-命令的输出:
E160E:
Manufacturer: huawei
Model: E160X
Revision: 11.609.10.02.432
IMEI: 354765038021325
+GCAP: +CGSM,+DS,+ES
OK
K3765:
Manufacturer: huawei
Model: K3765
Revision: 11.126.03.06.00
IMEI: 353142047899771
+GCAP: +CGSM,+DS,+ES
OK
答案1
后拨打或接听电话时,需要通过发出以下命令来启用串行设备上的音频输出(每次通话时)
AT^DDSETEX=<number>
(对于我的设备,仅AT^DDSETEX=2
支持将音频传入和传出第二个串行接口,即/dev/ttyUSB1
)。
然后,读取 from/dev/ttyUSB1
会提供一些数据,写入内容会/dev/ttyUSB1
在另一端的电话上发出一些噪音。
现在,找出如何正确读取和写入音频数据,以便可以听到正确的内容,而不仅仅是噪音,就只剩下技术练习了;-)。
谢谢http://lists.ofono.org/pipermail/ofono/2012-March/012551.html,我想到了尝试一下。