开发一个发送手机短信的计算机软件

来源:互联网 发布:细骨料含泥量检验数据 编辑:程序博客网 时间:2024/05/14 15:34

开发一个发送手机短信的计算机软件

     很久以前就有这个想法了,无奈时间有限,资料不足,一直没有成功。昨天突然意念再生,没想到还真搞成功了。接下来我将对这方面的技术做一个总结,并详细介绍我使用的方法细节。我本人觉得写这种文章很有意义,一方面就当成学习笔记,作为成就的见证,另外非常适合广大网友资料查阅。不像那些学术期刊上的所谓的学术技术文章,唱高调、不适用、没细节,到头来什么都不是。

1 需求分析

       首先我们搞清楚搞这个东西的意义何在:

       1)电脑上操作,打字速度快,方便高效。

       2)实现灵活的用户需求,例如将这个发送信息模块集成到企业级软件,在特定条件下,系统可以自动触发并发送短消息到相应的手机用户。这里需要提一下,有些人可能要问,这个功能飞信不是做的很好了吗?何必自己也搞一个呢,这里我要说:1>飞信需要预先加为好友,还附带一些垃圾信息;2>飞信没有办法实现灵活多变的用户需求,例如当数据库中一旦出现某类信息,用户需要马上通知手机用户,飞信是没有办法做到的。还有人可能要问,这个东西发送短信免费的吗?不免费,和手机发送短信费用一样。

2 开发手机信息发送软件技术概述

     这里我需要说明本文不考虑手机底层怎么实现,只是在应用层高度上做组件式开发,根据我目前查阅资料情况总结出当今比较方便的开发此类计算机软件的方式主要有两类:

       1) 远程函数调用。

       在网络上某家通信公司提供了远程函数,我们可以远程调用这个接口,进行信息发送。比较著名的有新浪公司的一个可发送短信的Web Service。这个Service的地址是http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl。在这个Service中提供了一个发送短消息的方法"sendXml"。此方法的语法格式如下:

string sendXml (carrier , userid , password , mobilenumber , content , msgtype )

      通过对这个Webservice的引用,我们即可实现短信的发送,但是在使用这个函数之前我们首先需要将自己的手机号注册到新浪官方网上。

      我当时在试验这种方法时,在新浪官方网站上浪费了好几田时间找注册入口地址,一直没有找到,因为该网站升级了,与资料上所说的地址完全不一样,所以做到了一半。这种方法实际上实现起来最简单,但是有它的缺点就是老要依赖于别人,还需要注册自己的手机号,一旦该Webservice停止服务,我们就没有办法调用这个函数了。

        2)第三方手机开发控件 SMS ActiveX Control 。

        将手机数据线插入电脑USB,通过编程语言(c/c++ VB delphi C#)调用该控件进行信息发送,具体实现见3。

        一开始我下了一个Oxygen SMS ActiveX Control v2.5,兼容性不是很好,因为我的手机是国产山寨版,可能不太认。后来下了一个Kylix SMS ActiveX Control 5.5用起来挺好,但是需要付费249美元。不缴费的话,短信会自带该公司网址,或某些文字被替换为该网址。

3、Kylix SMS ActiveX Control 5.5手机信息发送开发细节实现

首先说一下我的软硬件:

     台式机电脑一台+金鹏手机6228+手机USB数据线

     VS2005 +  Kylix SMS ActiveX Control 5.5 +C#

       

1)将手机通过USB线连接到台式机电脑(通过序列接口方式),下载相应的序列接口驱动程序安装上去。通过检查电脑设备的端口查看序列接口是否正常识别(没有识别显示问号)。

2) 下载Kylix SMS ActiveX Control 5.5并安装注册

3)打开IDE VS2005,新建winform项目。

4) 从选择工具箱中找到com下的Kylix SMS ActiveX Control 5.5,选中并确定

5)此时该控件会出现在工具箱视图中,使用鼠标拖拽该控件到主窗体界面。

6)在form load时间中初始化相应参数(com口等):

            axKylixSMS.RegisterName = "000000000000000";
            axKylixSMS.RegisterCode = "000000000000000000000000000000000000000000";

            axKylixSMS.NeedLog = 1; 

            axKylixSMS.PINCode = "";
            axKylixSMS.ConnectionMode = 1;
            axKylixSMS.ConnectionProtocol = 1;
            axKylixSMS.ConnectionParameter = "COM3, 9600";//com口
            if (axKylixSMS.Connect() != 1) //连接com口
                axKylixSMS.GetLastError(1);

7)当发送信息时调用如下函数即可发送:

axKylixSMS.SendSMS("13956878945","你好");

需要说明的是,我们可以设置一些其他参数,来达到我们的目的,中心号码,发送延时等。

同时该控件还可以拨打电话,接受信息等,留给大家自己去研究。