爱特生彩信开发控件(OCX)——调用示例
一、典型调用方式 程序启动时初始化模块,设置控件为事件驱动模式; 连接彩信设备; 通过接口函数来发送短信彩信,利用控件事件来接收短信、彩信、发送报告、设备状态改变等; 程序退出时,断开设备连接。 注:如果本彩信控件采用非事件驱动模式,通常需要建立一个新线程来管理控件操作,相对要困难些,建议本彩信控件采用事件驱动模式。
二、调用示例 约定:假设容器程序中添加的彩信控件名称为m_ctrlMMSOcx。
2.1初始化彩信模块
2.1.1初始化函数 int nRes="m"_ctrlMMSOcx.InitModel("C:\\RecvMMS",7,1,101,1); if(nRes>0) MessageBox("初始化彩信控件成功,已经找到加密狗。"); else if(nRes==0) MessageBox("初始化彩信控件失败!\r\n未找到软件加密狗。"); else if(nRes==-4) MessageBox("初始化彩信控件失败!\r\n不支持的加密狗类型参数。"); 说明: 1、参数1指的是彩信工作路径,控件会在该创建彩信接收目录等。 2、参数2指的是彩信使用模型,7表示要求彩信控件支持彩信短信的收发功能(1+2+4=7)。 3、参数3指的是彩信控件使用事件驱动模式工作。 4、参数4指的是彩信控件使用加密狗类型,此值固定为101(设备连接串口固定为com1)。 5、参数5指的是指收到彩信后要创建新的彩信接收文件目录,因为一个彩信里面通常包括了多个多媒体信息文件,所以建议创建一个新的目录来存储这些文件。 6、函数返回值的说明参见上面的代码中的提示信息。
2.2连接设备
2.2.1连接彩信设备函数 int nRes="m"_ctrlMMSOcx.ConnectModem("com1"); if(nRes==1) MessageBox("正在启动连接设备过程。请稍候。"); else if(nRes==-1) MessageBox("未成功初始化模块,请先进行控件初始化。"); 说明: 1、参数1指的是彩信设备连接的com口名称。需要注意的是我们假设了彩信设备的连接波特率为115200,如果你的设备不是115200,请通过AT指令将你的彩信设备连接速率设为115200。注意:使用101类型加密狗时连接的com口名称固定为“com1”。 2、回值的说明参见上面的代码中的提示信息。 3、因为彩信控件设为事件驱动方式工作,而彩信设备的检测和连接有个等待过程(约30秒钟),所以此函数的返回并没有说明设备是否连接成功,需要一个报告事件来告诉容器程序连接是否成功,此事件就是:ModemStatusChanged。
2.2.2彩信设备状态变化事件 Void ModemStatusChanged (long ModemStatus) { if(ModemStatus==1) MessageBox("连接彩信设备成功!"); else if(ModemStatus==-1) MessageBox("连接彩信设备失败!"); else if(ModemStatus==0) MessageBox("正在连接彩信设备!"); } 说明: 只要彩信设备的连接状态发生变化,控件都会发出此事件信息。需要了解一点的就是,收发短信和收发彩信的状态转换也会产生此事件,所以此事件不仅仅在连接彩信设备时才产生。
2.3收发彩信短信
2.3.1发送文字短信 int nRes="m"_ctrlMMSOcx.SendSMS(“1398080xxxx”,”您好,爱特生彩信控件文字短信测试消息。”,1); if(nRes==1) MessageBox("提交短信成功!短信已加入服务器的发送列表等待发送。"); else if(nRes==-1) MessageBox("提交短信失败!尚未连接到短信彩信设备。"); else if(nRes==-2) MessageBox("提交短信失败!当前使用模式不支持收发短信。"); else if(nRes==-3) MessageBox("提交短信失败!未成功初始化模块,请先进行控件初始化。"); 说明: 1、参数1指的是短信的接收号码(如果需要短信送达报告,则要在发送号码后加一个#号,例如“1398080xxxx#”)。 2、参数2指的是要发送的短信内容。 3、参数3指的是短信发送序号(用于事件返回时区分是那条消息)。 4、文字短信的发送结果可以通过事件SendSMSStatus获知;如果是有状态报告请求的消息,可以通过事件SMSRecvReport获知。
2.3.2发送彩信 int nRes="m"_ctrlMMSOcx.SendMMS(“1398080xxxx, 135989811xx”,”姚明精彩爆扣”,”c:\姚明.jpg”,1); if(nRes==1) MessageBox("提交彩信成功!彩信已加入服务器的发送列表等待发送。"); else if(nRes==-1) MessageBox("提交彩信失败!尚未连接到短信彩信设备。"); else if(nRes==-2) MessageBox("提交彩信失败!当前使用模式不支持收发短信。"); else if(nRes==-3) MessageBox("提交彩信失败!未成功初始化模块,请先进行彩信控件初始化。"); else if(nRes==-4) MessageBox("提交彩信失败!彩信信息文件不存在(或为空)。"); else if(nRes==-5) MessageBox("提交彩信失败!彩信信息文件格式不正确。"); 说明: 1、参数1指的是彩信的接收号码(允许一次填写10个以下号码,号码间以西文逗号分割,软件能够一次性批量提交所列号码的彩信)。 2、参数2指的是要发送彩信的标题。 3、参数3指的是彩信的资源文件。关于资源文件的类型和说明,请参见《爱特生短信彩信控件开发说明书.doc》文档,该文档有非常详细的关于这方面的描述。 4、参数4指的是彩信发送序号(用于事件返回时区分是那条消息)。 5、彩信的发送结果可以通过事件SendMMSStatus获知;送达对方手机后的通知,可以通过事件MMSRecvReport获知。
2.3.3接收短信事件 Void RecvSMS(LPCTSTR PhoneNumber, LPCTSTR SMSContent) { CString strNoticeText; strNoticeText.Format("收到短信: %s,%s",PhoneNumber,SMSContent); MessageBox(strNoticeText); } 说明: 1、参数1为发送者的手机号码。 2、参数2为接收到的短信内容。
2.3.4接收彩信事件 Void RecvMMS (LPCTSTR PhoneNumber, LPCTSTR MMSTitle, LPCTSTR RecvMMSFileDir, LPCTSTR RecvFile1, LPCTSTR RecvFile2, LPCTSTR RecvFile3, LPCTSTR RecvFile4, LPCTSTR RecvFile5) { CString strNoticeText; strNoticeText.Format("收到彩信!发送号码为:%s标题为:%s内容为: %s %s %s %s %s", PhoneNumber,MMSTitle,RecvFile1,RecvFile2,RecvFile3,RecvFile4,RecvFile5); MessageBox(strNoticeText);} 说明: 1、参数1为发送者手机号码。 2、参数2为彩信标题。 3、参数3为接收到的彩信资源文件保存目录。 4、参数4-9为彩信资源文件名(列出彩信中包含的前五个彩信资源文件,主要是方便容器程序调用)。
2.3.5短信发送完毕事件 void SendSMSStatus(long SMSIndex, long SMSStatus) { CString strNoticeText; if(SMSStatus==1) strNoticeText.Format("发送消息号为%d的短信已经成功发送!",SMSIndex); else strNoticeText.Format("发送消息号为%d的短信发送失败!",SMSIndex); MessageBox(strNoticeText); } 说明: 1、参数1为短信序号(在发送短信函数中设定的)。 2、参数2为短信发送情况,1为成功送达运营商短信中心,其余值为发送失败。
2.3.6彩信发送完毕事件 void SendMMSStatus(long MMSIndex, long MMSStatus) { CString strNoticeText; if(MMSStatus==1) strNoticeText.Format("发送消息号为%d的彩信已经成功发送!",MMSIndex); else strNoticeText.Format("发送消息号为%d的彩信发送失败!",MMSIndex); MessageBox(strNoticeText); } 说明: 1、参数1为彩信序号(在发送彩信函数中设定的)。 2、参数2为彩信发送情况,1为成功送达运营商彩信中心,其余值为发送失败。
2.3.7短信已送达对方事件 void SMSRecvReport(LPCTSTR PhoneNumber, long SMSStatus) { if(SMSStatus ==1) { CString strNoticeText; strNoticeText.Format("短信送达报告!给%s手机发送的短信,手机已经收到该短信!", PhoneNumber); MessageBox(strNoticeText); } } 说明: 1、参数1为接收方手机号码。 2、参数2为短信送达状态,1为成功送达,其余值为送达失败。 注:由于受运营商系统影响的原因,此状态事件不稳定,部分时间收不到此事件。
2.3.8彩信已送达对方事件 void MMSRecvReport(long MMSIndex, long MMSStatus) { CString strNoticeText; if(MMSStatus==1) strNoticeText.Format("彩信送达报告!\r\n发送编号为%d的彩信,手机已经收到!",MMSIndex); else strNoticeText.Format("彩信送达报告!\r\n发送编号为%d的彩信,被接收方拒收!",MMSIndex); MessageBox(strNoticeText); } 说明: 1、参数1为接收方手机号码。 2、参数2为彩信送达状态,1为成功送达,其余值为送达失败。 注:由于受运营商系统影响的原因,此状态事件不稳定,部分时间收不到此事件。
2.3.8设备振铃事件 void FireRing(LPCTSTR PhoneNumber) { CString strNoticeText; strNoticeText.Format("有人打电话到彩信猫内的卡上,源号码为%s!",PhoneNumber); MessageBox(strNoticeText); } 说明: 1、参数1为拨打电话的源号码。
2.4状态信息查询
2.4.1查询彩信设备的信号强弱 int nSignal="m"_ctrlMMSOcx. GetSignalStrength(); 说明: 信号强度值的范围是0到100,值越大表示信号越强;如果返回值小于0,表示控件尚未连接到彩信设备。
2.4.2查询彩信设备连接状态 int nModemStatus="m"_ctrlMMSOcx.GetModemStatus(); if(nModemStatus==1) MessageBox ("连接状态"); else if(nModemStatus==-1) MessageBox ("断开状态"); else MessageBox ("连接中"); 说明: 此函数用于查询当前彩信设备的连接状态,0为查找中,1为已找到,-1为未找到。
2.4.3查询彩信设备运行信息 CString strRunInfo="m"_ctrlMMSOcx.GetRunInfo(); MessageBox (strRunInfo ); 说明: 设备连接过程、彩信收发过程和进度、状态消息等均可以从此函数中获得。此函数可用于显示当前彩信设备的状态和做某项操作的进度信息。
2.4.4查询彩信控件中待发送彩信数目 int nWaittoSendMMSCount="m"_ctrlMMSOcx. GetSendMMSTaskCount();
2.4.5查询彩信控件中待发送短信数目 int nWaittoSendSMSCount="m"_ctrlMMSOcx. GetSendSMSTaskCount();
2.4.6查询彩信控件中待接收彩信数目 int nWaittoRecvMMSCount="m"_ctrlMMSOcx. GetRecvMMSTaskCount();
2.5断开彩信设备连接
2.5.1断开连接彩信设备函数 m_ctrlMMSOcx.DisConnectModem(); MessageBox("已经断开彩信设备连接。"); 说明: 不需要参数,要断开彩信设备时调用一下此函数即可。
|
文章评论(0条评论)
登录后参与讨论