AT调制解调器-音频数据传输-逃生DLE?

时间:2019-09-08 14:13:56

标签: protocols at-command modem serial-communication

我正在编写一个与AT调制解调器通信的应用程序(在这种情况下,使用的是cx93010芯片组,请参见此处的手册:https://www.manualslib.com/manual/1140976/Conexant-Cx93010.html)。 我的应用程序收集了Callerid信息,并使用各种方式来获取信息(黑名单网站查询,有关扩展名的信息,本地白名单和黑名单等)。

我想进一步采取这一步骤,并出于多种原因发送和接收语音数据,例如应答机,检测何时有人打了抑制电话,然后播放预定义的消息并挂断。

我已经建立了一个接口,可以与调制解调器对话并获取所需的Callerid数据,并根据该数据挂断电话。

我的问题如下:

当我的应用程序接收音频数据时,不是说音频(!)字节流随机(!)包括DLE消息作为音频数据的一部分吗?

我已经检查了手册和其他资源,但没有什么可以告诉我,如果是,那么如何处理?

-这些随机事件是否已被逃逸?如果可以,怎么办?

-还是以固定大小的块(基于编解码器)发送音频数据,并且在这些块之间可能出现有意的DLE消息,因此我可以忽略x的DLE字符出现的次数个字节?

网上找到的各种代码示例(基本上是我能找到的所有示例)都忽略了这一点。我想知道它们是准确的实现,还是只是简单又肮脏的示例来展示基本功能,而这些极端情况却随着时间的流逝而被遗忘了。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

要结束这一点,尤其是因为(至少对我来说)这已经显示在google搜索的顶部,所以我想分享一下我自己提出的答案。

因此,根据数据手册的内容,通过将随机的DLE字节附加另一个DLE字节来逃逸(根据手册),该随机DLE字节是数据流的一部分(“ data”表示“有效载荷”,而不是原始数据)。因此,两个DLE字节一起出现意味着您需要删除其中一个字节,而单个DLE是数据的一部分。如果您在原始流中遇到单个DLE,则表示下一个字符肯定是调制解调器(DCE)发送给您(DTE)的事件代码,除了:

DLE + SUB的组合用于转义两个连续发送的DLE字节。这样做是为了不增加要传输的原始数据量。

这意味着各种示例只是简单地将原始数据接收和解释为音频数据和/或发送音频数据而不进行转义,这只是不准确的过分简化。

感谢阅读我原始问题的任何人。