delphi 短信猫(SMS)编程总结
来源:互联网 发布:淘宝卖家退款验证码 编辑:程序博客网 时间:2024/05/21 19:46
现在有个项目需要用到发短信的功能,所以网上买了个西门子T35i 芯片的短信猫,但实际编程时才发现只能发短信,一般的DLL不支持发长短信,但公司会经常发长短信,联系卖家要求给个发长短信的动态库,但卖家说他那只有这个,长短信要收钱开发的,晕。(怀疑是故意的),然后又买了个支持长短信惠通猫(szhto.ocx、HTCOM.dll不支持线程),开始还行,但用久了不知为啥总是死机一样,发/接不了短信,并且总是有两条短信删不掉,一直留在那,找供应商都不理你,说我程序的问题,无语了,
那么只有自己上网找了,好在支持T35i的有许多,又把旧的猫拿来研究。经过不懈努力终于OK。(哈。。。。哈。。。。),过程中接触了几个DLL和OCX,我都来评说下吧。
1、sms.dll (好象迅塞公司的),可以发长短信,但不能给10086这样的短号码发信息。
同步发送的、它的功能也比较简单:
function Sms_Connection(CopyRight:pchar;Com_Port,Com_BaudRate:integer;var Mobile_Type,CopyRightToCOM:PChar):integer;stdcall;external 'sms.dll'; function Sms_Send(Sms_TelNum:string;Sms_Text:string):integer;stdcall;external 'sms.dll'; Function Sms_Receive(Sms_Type:string;var Sms_Text:PChar):integer;stdcall;external 'sms.dll'; function Sms_Delete(Sms_Index:string):integer;stdcall;external 'sms.dll'; function Sms_AutoFlag :integer;stdcall;external 'sms.dll'; function Sms_NewFlag :integer;stdcall;external 'sms.dll'; function Sms_Disconnection :integer;stdcall;external 'sms.dll';
2、MonDem.dll (这个忘了是那家的了)支持多线程操作,功能也可以,但没研究出怎么发长短信,有知道的一定告之呀!
//函数说明//先初始化,然后发送或者接收,退出程序前关闭Modem{*************************************************************}// 参数: nComNo 0~255 代表COM编号,// modemType 短信猫类型// 0 - 1口短信猫,// 1 - 2口短信猫,// 2 - 4口短信猫,// 3 - 8短信猫口// 返回: 0 - 成功, -1类型错// XXX -错误代码,参见代码表{*************************************************************}function fnSetModemType(ComNo:integer; modemType:Smallint) :integer;stdcall; external 'MonDem.dll';{******************************************************}//获取当前短信猫类型设置//参数: nComNo 0~255 代表COM编号。//返回 :短信猫类型//0 - 1口短信猫,//1 - 2口短信猫,//2 - 4口短信猫,//3 - 8短信猫口//XXX -错误代码,参见代码表{*******************************************************}function fnGetModemType(ComNo:integer):integer;stdcall; external 'MonDem.dll';{***********************初始化函数***********************}//参数: comx 0~7 代表端口号码, -1 表示所有端口//返回: 0 - 成功 XXX -错误代码,参见代码表{********************************************************}function fnInitModem(comx:integer):integer;stdcall; external 'MonDem.dll';{***********************发送函数*************************}//参数: comx 0~7 代表端口号码, -1 表示任意一个可用端口//receivephone 接受手机号,sendmsg表示发送信息内容//sendmsg(应该在70个字符以内,包含标点符号,1个汉字算1个字符)//例如: 恭喜发财,测试成功! 长度为10//返回: 0 - 发送成功 1 - 发送失败 XXX -错误代码,参见代码表{********************************************************}function fnSendMsg(comx:integer;receivephone,sendmsg:pchar):integer;stdcall; external 'MonDem.dll';{********************************************************} // 参数: nPortNo 0~255 代表端口号码, -1 表示所有端口//返回: 端口状态,大于等于8表示设备连接正常,可以接收和发送。 // 状态小于8,表示测试状态。小于等于1,可能连线没有接好或者电源 // 没有打开,注意复位短信猫。 // -1 端口号指定错误或者是端口未打开{********************************************************}function fnGetStatus(nPortNo:integer):integer;stdcall; external 'MonDem.dll';{*************************接收函数***********************}//参数: comx 0~7 代表端口号码,//(-1 表示任意一个可用端口,暂时不支持)//sendphone 发送方手机号码 receivemsg 接收信息内容//返回: 0~7 - 成功,接收端口号码 -1 - 无信息//XXX -错误代码,参见代码表{********************************************************}function fnReadMsgEx(comx:integer;szHeader,receivemsg:pchar):integer;stdcall; external 'MonDem.dll';function fnGetSndCount(nPortNo:integer):integer;stdcall; external 'MonDem.dll';function fnGetRecCount(nPortNo:integer):integer;stdcall; external 'MonDem.dll';//function fnSetReceive(nType:integer):integer;stdcall; external 'MonDem.dll';{************************关闭函数************************}//参数: comx 0~7 代表端口号码, -1 表示所有端口//返回: 0 - 成功 XXX -错误代码,参见代码表{********************************************************}function fnCloseModem(comx:integer):integer;stdcall; external 'MonDem.dll';{*******************错误代码表:**************************}// 100: 授权错误(检测软件狗)// 101: 授权类型错误(检测软件狗类型)// 102: 未初始化,请先初始化// 200: 端口号码错// 201: 不支持的端口// 202: 信息超长// 203: 不能发送空信息// 204: 手机号码错// 205: 设备错//5xx: 操作xx号端口错误{********************************************************}
3、SZHTO.OCX 控件,需要机器码注册,不支持10086发送,并且性能不稳定。用久了总要死回机不知为什么(大概4、5天吧!)
由于是OCX的方式,用起来还是比较方便的。
4、SMSControl.ocx Ver5.0(LY的)控件的用起来还是比较好用的,功能也多,但需要注册购买的,支持10086等短信发送。
不用买也是可以用的,没有连接/发送等状态的返回值,只能自己设置延时处理了。
if Smscontrol1.SendMSG(QFindSend.Fields[1].AsString,QFindSend.Fields[2].AsString)>0 then begin Memo1.Lines.Add('发送成功!'); end else begin Memo1.Lines.Add('发送失败!') end;
0 0
- delphi 短信猫(SMS)编程总结
- 短信格式(sms)以及编码总结
- 短信格式(sms)以及编码总结
- android sms(短信)详解
- Android发送短信SMS的编程
- C# 短信猫(SMS cat) 操作源码开发经验
- 短信SMS
- [SMS开发总结]短信开发技术总结--开发篇
- [SMS开发总结]短信开发技术总结--开发篇
- J2ME短信(WMA1.0-SMS)
- 短信的发送(SMS)的发送
- iOS 如何发送短信(sms)
- 短信验证码(SMS verification)是什么
- SMS短信解码举例(一)
- Java调用SMS Cat(短信猫)发短信
- Java调用SMS Cat(短信猫)发短信
- Java调用SMS Cat(短信猫)发短信
- 短信发送流程:系统短信(SMS)发送流程
- STL_Sequence_大小写英文字母和数字进栈输出显示
- HashMap collision problem
- 微派第四届企业微信营销培训成功举行
- 一些笔记
- spring访问数据库
- delphi 短信猫(SMS)编程总结
- 推理机Jess、Racer、Jena 比较 (转)
- 信息检索之索引压缩
- Setup win32 development environment
- (转)Cocos2d-x加Box2D制作弹弓类游戏
- log4net 发送错误日志到邮箱配置
- python 写的http后台弱口令爆破工具
- 几十个网站后台模板css+div模板收集
- Jena2提供的规则推理引擎