Tag: modem

如何从AT CMGL响应中检索电话号码?

我有一个用C编写的应用程序,它使用AT命令从调制解调器读取文本消息。 调制解调器的典型AT响应如下所示: +CMGL: 1,”REC READ”,”+31612123738″,,”08/12/22,11:37:52+04″ 代码当前设置为仅从此行检索id,这是第一个数字,并使用以下代码执行此操作: sscanf(line, “+CMGL: %d,”, &entry); 这里,“line”是包含来自调制解调器的行的字符数组,“entry”是存储id的整数。 我尝试像这样扩展这段代码: sscanf(line, “+CMGL: %d,\”%*s\”,\”%s\”,”, &entry, phonenr); 我想我会使用%* s来扫描第一对引号中的文本并跳过它,然后将下一对引号(电话号码)中的文本读入phonenr字符数组。 这不起作用(%* s显然读取“REC”,下一个%s不读取任何内容)。 一个额外的挑战是文本不限于“REC READ”,它实际上可能是很多东西,也是一个没有空间的文本。

Hayes AT命令:检测远程挂断?

如何以编程方式检测通话中的远程调制解调器何时挂断? 我正在编写一个C程序,它与Ubuntu linux中的SoftModem设备/dev/ttySL0接口。 我可以使用Hayes AT命令配置调制解调器并与远程调制解调器通信。 但是,我无法确定我应该如何检测到另一端已挂断线路。 我配置了调制解调器,以便当另一端挂断时,设备打印NO CARRIER并切换到命令模式。 但是,我不能使用NO CARRIER字符串,因为我无法保证调制解调器在数据模式下不会收到该字符串。 你怎么“听”远程挂机?