如何在通话过程中通过GSM调制解调器发送和接收数据(Python和AT命令)

21

我编写了以下Python程序来与我的D-Link DWM-156 GSM调制解调器通信。这个程序等待来电,当它接收到RING提示时,接受该电话。

幸运的是,它工作得很好 ;)

程序代码:

import time
import serial

phone = serial.Serial("COM10",  115200, timeout=5)

try:
    time.sleep(1)
    while(1):
        x = phone.readline()
        print(x)
        if (x == b'RING\r\n'):
            phone.write(b'ATA\r')
            time.sleep(0.5)

finally:
    phone.close()

运行过程中的输出:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'   #Here, my friend (named "Jimmy",for example), called me.
b'OK\r\n'
b''
b''
b''
b''
b''

正如您在上面看到的那样,在接收到来电后,GSM调制解调器会立即接受它,并从那一点到结束,我们有一个活动通话。

我的问题:

1- 在这个活动通话期间是否可以发送/接收一些数据(例如短信)?或者至少我可以在这个活动通话的另一端(即Jimmy手机的扬声器上)发出噪音吗?(我不想发送可识别的声音,有一些噪音就足够了。虽然有一种方法可以发送可识别的语音真的更好。)

2- 为什么这个程序可以检测到来电,但无法检测到来信?请看下面。您可以看到我的程序在Jimmy向我的GSM调制解调器发了3条短信时的输出(他的手机收到了所有短信的“已送达”通知)。

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b''
b''
b''
b''

如上所示,我什么也没收到,而他发送了3条短信!为什么?


我还是不明白在进行主动呼叫时您想要发送什么样的数据?...而且您说“噪音”就足够了...用于什么目的? - Iron Fist
数据类型并不重要。在第一步中,我只想看看在通话期间是否有可能接收到一些数据。例如,当您使用手机给朋友打电话时,如果您的朋友突然按下其中一个键(1、2……),您会听到嘟声,对吧?我想接收这个嘟声!目的是编写一个处理此类命令(通话后命令)的程序。您是否曾经遇到过那些自动回答,另一端的女士说“按1选择x,按2选择y”等等?我几乎想编写这样的程序(不完全相同)。 - Ebrahim Ghasemi
@KhalilAmmour-خليلعمور 我说我想发送“噪音”,因为:**1-这些命令对我们来说并不是真正可识别的声音,而只是一些数字。2-**我不想让问题变得复杂。 - Ebrahim Ghasemi
2
关于你的第二个问题...你需要检查你的“3.5.3.3.1 +CNMI-终端设备新消息指示”配置,从“https://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Commands_Reference_Guide_r0.pdf”中阅读。 - Iron Fist
1
https://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Commands_Reference_Guide_r0.pdf - Iron Fist
2个回答

2

问题1:

我认为你需要的是DTMF音调。如果你正在与朋友吉米交谈,他按下数字按钮时,你可以听到DTMF音调。 每个按钮([0-9],#,*,[A-D],P)都有其特定的音调。

你可以在这里找到有关如何组成它们的良好说明。

我在此只报告有两个标准命令可让您处理DTMF音调:

  • AT+VTD=<duration> - 设置音调持续时间
  • AT+VTS=<dtmfSequence> - 发送一系列音调

问题2:

正如上面的评论中正确报告的那样,可以通过AT+CNMI命令启用接收短信的URC(未请求结果代码),其描述可以在这里找到。


0

大多数GSM调制解调器需要初始化,以便它们信号传入的短信。我相信这就是Khalil所说的。这些命令作为一组AT命令发送,应在进入循环之前发送。

我以前成功地使用几个不同的GSM调制解调器品牌完成了这项工作,并回忆起即使有一些设备特定的细节,你需要发送的一般命令是相同的。

快速搜索引导我到:

也许你可以把它们作为起点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接