分享一个C#使用AT指令控制语音猫的例子
阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=61
先来说说
最近公司让开发一个语音猫充值的软件,就是拨打10086(虚拟)进行话费充值操作,虚拟流程如下;
1.先拨通10086
2.按1进行话费充值
3.按2进行卡充值
4.输入充值卡号
5.按#号进行确认
6.充值成功提示,挂机,然后再次拨通。
基本的游戏就是这样
如果我们想用控制语音猫来完成这样的操作。我首先要做的是要解决以下几个问题
1.怎么发送数据到语音猫(短信猫也是一样的)
2.怎么样拨打10086
3.怎么样在拨通后按1,2,#等键
4.怎么查挂机操作
开始解决问题
首先是怎么连接语音猫,这个刚开始困惑了我很久,不知道怎么连接,用什么方式呢?又不是数据库,直接传Sql语句就OK了,最多是个不会写,呵呵,这个无从下手了,
不过分析一下就明白了,语音猫是通过Com接口连接到计算机的,那么我们肯定就可以根据访问com的方法去访问他了,这个简单,看下面的代码
/// SerialPort串口对象
/// </summary>
SerialPort sp = null;
/// <summary>
/// 初始化对象
/// </summary>
/// <param name="com">Com号</param>
/// <param name="BaudRate">波特</param>
public void loadSerialPort(string com, int BaudRate)
{
//假设是COM1口
sp = new SerialPort();
//波特
sp.BaudRate = 9600;
//Com名称
sp.PortName = com;
}
我们可以使用串口操作类
SerialPort 来完成,只要咱们传一个Com的名称和波特就行了。
com名称这个好找,计算机上一般都是两到三个口,如果不知道就测试也能测试出来,我只连接了一个,当是Com1了,如果不对的话在运行时直接就会提示Com不存在,很容易
测试出来,因为不出错时就是对了,呵呵。
那么波特怎么得到呢?其实这个也很简单,在语音猫的说明 上就有,我这边的是9600,一般是9600 和11000,这个和自己的猫有关系。这个也很好测试。如果你com是对的
波特不对会提示你端口未打开,或者是无法访问,测试到不提示错误了就代表没有问题了,呵呵简单吧。
连接上了之后我们要看看怎么发送信息到设备了
方法如下
/// 发送At指令
/// </summary>
/// <param name="strat">指令内容不需要加;\r\n</param>
public void sendat(string strat)
{
sp.Open();
sp.Write(strat + ";\r\n");
sp.Close();
}
现在重要的是我们应该发什么,呵呵
1.打电话的指令怎么发?
这个很好找在网上一找就找到了,打电话的是atd10086;\r\n 大家一看应该就明白什么意思了吧,atd是指令,10086就是我们要拨打的电话号码。
2.怎么在通话进行按键呢?
at+vts=1; 就是这样,后面的1就是我们要进行的操作,如果是#的话应该是at+vts=#;
这个在专业术语里面叫:给用户提供应用GSM网络发送DTMF双音频。这个命令允许传送双音频。 还有一个好听点的名字叫拨分机号。
3.怎么进行挂机呢?直接发送指使ath就行了。
下面是个测试的CS代码
GSM objgsm = new GSM();
//加载窗体时构造At指令类的参数
private void GMSMessage_Load(object sender, EventArgs e)
{
objgsm.loadSerialPort("com1", 9600);
}
//发送At指令
private void btnSelect_Click(object sender, EventArgs e)
{
objgsm.sendat(textBox1.Text.Trim());
richTextBox1.Text = "发送At:" + textBox1.Text.Trim() + "\r\n";
}
//在关闭窗体时如果有没有关闭的通道关闭
private void GMSMessage_FormClosing(object sender, FormClosingEventArgs e)
{
objgsm.sendat("ath");
}
//定时刷新一下设备中的信息
private void timeAT_Tick(object sender, EventArgs e)
{
try
{
richTextBox1.Text += "\r\n" + objgsm.returnSerialPort().ReadExisting();
}
catch (Exception)
{
}
}
总结一下
其实这个问题做完了之后才感觉哎,就这,太简单了,但是在没有做之前呢,感觉无从下手,程序中的技术点就是这样,过了就过了,很简单,有时候可能只是一个想法,但要是想不通也是无能为了,并不是因为代码不会写,像这些情况 只要细心分析一下应该都不是太大的问题。 另外
at+vts=1;这个指令每次只能发一条,如果要输入 一个11位的电话号码的话就要发送11次,感觉不太友好,暂时没有找到更好的方式。还希望知道的朋友帮下忙
下在我把收集的一些指令集给大家分享一下
一、一般命令
AT+CGMI 给出模块厂商的标识。 SONY ERICSSON
AT+CGMM 获得模块标识。这个命令用来得到支持的频带(GSM900,DCS1800或PCS1900)。当模块有多频带时,回应可能是不同频带的结合。 AAB-1021011-CN
AT+CGMR 获得改订的软件版本。 R6C005 CXC125582CHINA1
AT+CGSN 获得GSM模块的IMEI(国际移动设备标识)序列号。351254004238596
AT+CSCS 选择TE特征设定。这个命令报告TE用的是哪个状态设定上的ME。ME于是可以转换每一个输入的或显示的字母。这个是用来发送、读取或者撰写短信。
AT+CSCS?
+CSCS: "GSM"
AT+WPCS 设定电话簿状态。这个特殊的命令报告通过TE电话簿所用的状态的ME。ME于是可以转换每一个输入的或者显示的字符串字母。这个用来读或者写电话簿的入口。
NONE
AT+CIMI 获得IMSI。这命令用来读取或者识别SIM卡的IMSI(国际移动签署者标识)。在读取IMSI之前应该先输入PIN(如果需要PIN的话)。
460001711603161
AT+CCID 获得SIM卡的标识。这个命令使模块读取SIM卡上的EF-CCID文件。
NONE
AT+GCAP 获得能力表。(支持的功能)+GCAP: +FCLASS, +CGSM, +DS
A/ 重复上次命令。只有A/命令不能重复。这命令重复前一个执行的命令。
AT+CPOF 关机。这个特殊的命令停止GSM软件堆栈和硬件层。命令AT+CFUN=0的功能与+CPOF相同。
AT+CFUN 设定电话机能。这个命令选择移动站点的机能水平。
AT+CPAS 返回移动设备号的活动状态。
AT+CMEE 报告移动设备的错误。这个命令决定允许或不允许用结果码“+CMEERROR:”或者“+CMSERROR:”代替简单的“ERROR”。
AT+CKPD 小键盘控制。仿真ME小键盘执行命令。
AT+CCLK 时钟管理。这个命令用来设置或者获得ME真实时钟的当前日期和时间。
AT+CCLK?
+CCLK: "04/08/12,17:00:42+32"
AT+CALA 警报管理。这个命令用来设定在ME中的警报日期/时间。(闹铃)
AT+CALA=?
+CALA: (1-2),(),(),(13),()
AT+CRMP 铃声旋律播放。这个命令在模块的蜂鸣器上播放一段旋律。有两种旋律可用:到来语音、数据或传真呼叫旋律和到来短信声音。
AT+CRSL 设定或获得到来的电话铃声的声音级别。NONE
二、呼叫控制命令
ATD 拨号命令。这个命令用来设置通话、数据或传真呼叫。
ATH 挂机命令。
ATA 接电话。
AT+CEER 扩展错误报告。这个命令给出当上一次通话设置失败后中断通话的原因。
AT+VTD 给用户提供应用GSM网络发送DTMF(双音多频)双音频。这个命令用来定义双音频的长度(默认值是300毫秒)。
AT+VTS 给用户提供应用GSM网络发送DTMF双音频。这个命令允许传送双音频。
ATDL 重拨上次电话号码。
AT%Dn 数据终端就绪(DTR)时自动拨号。
ATS0 自动应答。
AT+CICB 来电信差。
AT+CSNS 单一编号方案。
AT+VGR
AT+VGT 增益控制。这个命令应用于调节喇叭的接收增益和麦克风的传输增益。
AT+CMUT 麦克风静音控制。
AT+SPEAKER 喇叭/麦克风选择。这个特殊命令用来选择喇叭和麦克风。
AT+ECHO 回音取消。
AT+SIDET 侧音修正。
AT+VIP 初始化声音参数。
AT+DUI 用附加的用户信息拨号。
AT+HUI 用附加的用户信息挂机。
AT+RUI 接收附加用户信息。
三、网络服务命令
AT+CSQ 信号质量。+CSQ: 17,99
AT+COPS 服务商选择。
AT+COPS?
+COPS: 0,0,"China Mobile"
AT+CREG 网络注册。获得手机的注册状态。
AT+CREG?
+CREG: 0,1
AT+WOPN 读取操作员名字。NONE
AT+CPOL 优先操作员列表。NONE
四、安全命令
AT+CPIN 输入PIN。
AT+CPIN2 输入PIN2。
AT+CPINC PIN的剩余的尝试号码。
AT+CLCK 设备锁。
AT+CPWD 改变密码。
五、电话簿命令
AT+CPBS 选择电话簿记忆存储。
AT+CPBS?
+CPBS: "SM"
AT+CPBR 读取电话簿表目。
AT+CPBF 查找电话簿表目。
AT+CPBW 写电话簿表目。
AT+CPBP 电话簿电话查询。
AT+CPBN 电话簿移动动作。这个特殊命令使电话簿中的条目前移或后移(按字母顺序)
AT+CNUM 签署者号码。
AT+WAIP 防止在下一次重起时初始化所有的电话簿。
AT+WDCP 删除呼叫电话号码。NONE
AT+CSVM 设置语音邮件号码。
六、短消息命令
AT+CSMS 选择消息服务。支持的服务有GSM-MO、SMS-MT、SMS-CB。
AT+CNMA 新信息确认应答。
AT+CPMS 优先信息存储。这个命令定义用来读写信息的存储区域。
AT+CMGF 优先信息格式。执行格式有TEXT方式和PDU方式。
AT+CSAS 保存设置。保存+CSAS和+CSMP的参数。
AT+CRES 恢复设置。
AT+CSDH 显示文本方式的参数。
AT+CNMI 新信息指示。这个命令选择如何从网络上接收短信息。
AT+CMGR 读短信。信息从+CPMS命令设定的存储器读取。
AT+CMGL 列出存储的信息。
AT+CMGS 发送信息。
AT+CMGW 写短信息并存储。
AT+CMSS 从存储器中发送信息。
AT+CSMP 设置文本模式的参数。
AT+CMGD 删除短信息。删除一个或多个短信息。
AT+CSCA 短信服务中心地址。
AT+CSCB 选择单元广播信息类型。
AT+WCBM 单元广播信息标识。
AT+WMSC 信息状态(是否读过、是否发送等等)修正。
AT+WMGO 信息覆盖写入。
AT+WUSS 不改变SMS状态。在执行+CMGR或+CMGL后仍保持UNREAD。
七、追加服务命令
AT+CCFC 呼叫继续。
AT+CLCK 呼叫禁止。
AT+CPWD 改变追加服务密码。
AT+CCWA 呼叫等待。
AT+CLIR 呼叫线确认限制。
AT+CLIP 呼叫线确认陈述。
AT+COLP 联络线确认陈述。
AT+CAOC 费用报告。
AT+CACM 累计呼叫计量。
AT+CAMM 累计呼叫计量最大值。
AT+CPUC 单价和货币表。
AT+CHLD 呼叫相关的追加服务。
AT+CLCC 列出当前的呼叫。
AT+CSSN 追加服务通知。
AT+CUSD 无组织的追加服务数据。
AT+CCUG 关闭的用户组。
八、数据命令
AT+CBST 信差类型选择。
AT+FCLASS 选择模式。这个命令把模块设置成数据或传真操作的特殊模式。
AT+CR 服务报告控制。这个命令允许更为详细的服务报告。
AT+CRC 划分的结果代码。这个命令在呼叫到来时允许更为详细的铃声指示。
AT+ILRR 本地DTE-DCE速率报告。
AT+CRLP 无线电通信线路协议参数。
AT+DOPT 其他无线电通信线路参数。
AT%C 数据压缩选择。
AT+DS 是否允许V42二度数据压缩。
AT+DR 是否报告V42二度数据压缩。
AT\N 数据纠错选择。
九、传真命令
AT+FTM 传送速率。
AT+FRM 接收速率
AT+FTH 用HDLC协议设置传真传送速率。
AT+FRH 用HDLC协议设置传真接收速率。
AT+FTS 停止特定时期的传送并等待。
AT+FRS 接收沉默。
十、第二类传真命令
AT+FDT 传送数据。
AT+FDR 接收数据。
AT+FET 传送页标点。
AT+FPTS 页转换状态参数。
AT+FK 终止会议。
AT+FBOR 页转换字节顺序。
AT+FBUF 缓冲大小报告。
AT+FCQ 控制拷贝质量检验。
AT+FCR 控制接收传真的能力。
AT+FDIS 当前会议参数。
AT+FDCC 设置DCE功能参数。
AT+FLID 定义本地ID串。
AT+FPHCTO 页转换超时参数。
十一、V24-V25命令
AT+IPR 确定DTE速率。
AT+ICF 确定DTE-DCE特征结构。
AT+IFC 控制DTE-DCE本地流量。
AT&C 设置DCD(数据携带检测)信号。
AT&D 设置DTR(数据终端就绪)信号。
AT&S 设置DST(数据设置就绪)信号。
ATO 回到联机模式。
ATQ 决定手机是否发送结果代码。
ATV 决定DCE响应格式。
ATZ 恢复为缺省设置。
AT&W 保存设置。
AT&T 自动测试。
ATE 决定是否回显字符。
AT&F 回到出厂时的设定。
AT&V 显示模块设置情况。
ATI 要求确认信息。这命令使GSM模块传送一行或多行特定的信息文字。
AT+WMUX 数据/命令多路复用。
十二、特殊AT命令
AT+CCED 电池环境描述。
AT+CCED 自动RxLev指示。
AT+WIND 一般指示。
AT+ALEA 在ME和MSC之间的数据密码模式。
AT+CRYPT 数据密码模式。
AT+EXPKEY 键管理。
AT+CPLMN 在PLMN上的信息。
AT+ADC 模拟数字转换度量。
AT+CMER 移动设备事件报告。这个命令决定是否允许在键按下时是否主动发送结果代码。
AT+WLPR 读取语言偏好。
AT+WLPW 写语言偏好。
AT+WIOR 读取GPIO值。
AT+WIOW 写GPIO值。
AT+WIOM 输入/输出管理。
AT+WAC 忽略命令。这个特殊命令允许忽略SMS、SS和可用的PLMN。
AT+WTONE 播放旋律。
AT+WDTMF 播放DTMF旋律。
AT+WDWL 下载模式。
AT+WVR 配置信差的声音速率。
AT+WDR 配置数据速率。
AT+WHWV 显示硬件的版本。
AT+WDOP 显示产品的出厂日期。
AT+WSVG 声音增益选择。
AT+WSTR 返回指定状态的状态。
AT+WSCAN 扫描。
AT+WRIM 设置或返回铃声指示模式。
AT+W32K 是否允许32kHz掉电方式。
AT+WCDM 改变缺省旋律。
AT+WSSW 显示内部软件版本。
AT+WCCS 编辑或显示订制性质设置表。
AT+WLCK 允许在特定的操作符上个性化ME。
AT+CPHS 设置CPHS命令。
AT+WBCM 电池充电管理。
AT+WFM 特性管理。是否允许模块的某些特性,如带宽模式、SIM卡电压等。
AT+WCFM 商业特性管理。是否允许Wavecom特殊特性。
AT+WMIR 允许从当前存储的参数值创建定制的存储镜像。
AT+WCDP 改变旋律的缺省播放器。
AT+WMBN 设置SIM卡中的不同邮箱号码。
十三、SIM卡工具箱命令
AT+STSF 配置工具箱实用程序。
AT+STIN 工具箱指示。
AT+STGI 获得从SIM卡发来的预期命令的信息。
AT+STCR 主动提供的结果:工具箱控制反应。
AT+STGR 给出响应。允许程序或用户从主菜单上选择项目,或响应某些命令。
ASCI码指令 功能 手机回答
AT回车 握手 OK
ATE 简化显示 OK
AT+CLCC 来电显示 OK 来电话时串口输出:RING
AT+CLCC +CLCC: 1,1,4,0,0,"05133082087",129
AT+CNMI=1,1,2 设置收到短消息提示 OK
+CMTI:“SM”,4
4表示手机内短消息数量
ATD05133082087; 拨打05133082087电话
AT+CMGL=0 读取电话上全部未读过的SMS消息
AT+CMGL=2 列出已有的短信息
AT+CMGL=4 读取全部SMS消息
AT+CMGR=X回车 读取第X条短消息
AT+CMGF=0回车 用PDU格式
AT+CMGD=X回车 删除第X条短消息
AT+CLIP=1,1 来电自动显示的指令 ERROR
来电话! RING +CLIP: 13306285091,129
AT+CMGS=6 发送短消息的字节数 >
0891683108503105F011000B8131032
65890F10008A90C665A4E0A597D00
3100320033 1A 结束符号
十六进制大写 +CMGS: 45
OK
第45条短信发送成功!!!!!!
AT+CMGR=1 读取第1条短信 0:未读过,新的短信息
1:已读过
第二个1表示已读
150 表示PDU数据的长度
1 表示读取第几条短信 +CMGR: 1,1,,150
GSM07.05 Function(功能)
ATE0 RESET
AT+CSMS 选择短信息服务
AT+CPMS 选择短信息内存
AT+CMGF 选择短信息格式
AT+CSCA 短信息中心地址
AT+CNMI 显示新收到的短信息
AT+CMGR 读短信息
AT+CMGS 发送短信息
AT+CMGL 列出SIM卡中短信息
AT+CMSS 从SIM内存中发短信息
AT+CMGW 向SIM内存中写入待发短信息
AT+CMGD 删除SIM内存中的短信息
AT+CSCB 选择蜂窝广播信息
分享一个C#使用AT指令控制语音猫的例子相关推荐
- stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备
stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备 博主还是菜鸟,只是这段时间DIY弄了这些东西,让同样喜欢动手的朋友有个参考,我这个开发超级简单, ...
- 分享一个ZPL指令在线测试网址
分享一个ZPL指令在线测试网址http://labelary.com/viewer.html
- 怎么实现文字转换成语音?分享一个简单的小妙招
现在文字转成语音的方法有很多种,你可以试试移动端的一些工具,也许能帮你减轻不少工作量.下面我给大家分享一个文字转语音的方法和步骤,希望对你有帮助! 前提须知: 我们要想实现手机文字转音频,就必须得使用 ...
- 手机语音翻译怎么做?分享一个简单办法,快速实现中英文语音对话
翻译分为文字翻译和语音翻译,文字翻译使用手机浏览器直接搜索就能完成,但实现语音翻译还是比较困难的,随着科技的发展,语音翻译用手机也能轻松实现了,就算进行中英文语音实时对话也是非常简单的事,那么手机该如 ...
- 今天来给大家分享一个实际又有用的微信发长视频和语音的小功能。
关注我们获得更多内容 今天来给大家分享一个实际又有用的微信发长视频和语音的小功能. 大家都知道,我们在发朋友圈小视频的时候,只能发不超过10秒钟的短视频,再长一点时间的视频就需要编辑到10秒以内才能发 ...
- 分享一个免费的听书、说书(文字转语音)、读书的好工具
分享一个免费的听书.读书的好工具:SpeeckBook,免费软件,免安装.无插件: 做个幸福的懒人,不用眼睛一直盯着看书,只要听就可以,不影响干其他事情. 官方地址:http://www.hzhjrj ...
- 分享一个苹果Siri接入ChatGPT的方法,让你的Siri更智能
今天我给大家分享一个苹果Siri接入ChatGPT的方法,让你的Siri更智能: 方法很简单,只需要几步: 1.只需添加一个快捷指令 2.在唤醒Siri后,说出指令名称即可 3.Hey Siri 智能 ...
- Esp8266 进阶之路31【外设篇】分享一个乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- 开课吧python学费-分享一个小白也能月赚2万的新技能
原标题:分享一个小白也能月赚2万的新技能 这两年,每天都听身边人吐槽:"最近太累了,加班多.事情杂.离家远......可到手的工资却少得可怜." 辞职.跳槽,已然成为一种常态. 这 ...
最新文章
- file not in the prep project
- Got MethodID of ReferenceType that is not a member of the ReferenceType
- 【CEO赠书】《浪潮之巅》:计算机史上的人间词话
- 连接mysql报zone时区错误
- 如何为 Horizon View 配置 VMware VSAN?
- python - 2 8 16进制/颜色/字符编码
- 接口测试如何在post请求中传递文件
- Zookeeper全解析——Client端
- coherence mysql_Coherence代理的负载均衡
- MongoDB 数据全量备份
- 【晓风残月】ASP.NET DEMO 16: 通过GridView布局实现的多行批量更新
- 22牛客多校day1 J - Serval and Essay 启发式合并
- 解决react项目启动报错:error Couldn't find a package.json
- 最新Win10离线安装.NET Framework 3.5的方法(不需要离线包,只需原版系统安装包,亲测完美快捷有效)
- 电影网站 php asp,moviewebsite 这是一个电影网站的源码,基于asp技术实现.仅供交流学习 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
- Oracle数据库临时表-----会话级的临时表和事务级的临时表
- SAP PP配置详解之六:物料需求计划
- Axure 蚂蚁设计团队组件库 让交互稿美美搭
- 设置ubuntu系统中vi的默认模板文件
- [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
热门文章
- html文字中横线_谈PPT课件中自定义动画应用之内容控制
- Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
- 使用Maven 打包项目 生成XXX.tar.gz 文件
- group by总结(还有having)
- 项目的简单总结一 -- 关于对贝塞尔和shapelayer结合使用的动画特效
- 样式集(八)弹窗,规则弹窗,半透明弹窗
- iOS Category小举例
- Integer 和 int 比较的特殊之处
- JS中8个常见的陷阱
- vue组件的传参练习