CSDN博客

img devercn

自己动手打造企业级短信平台(上)

发表于2004/9/21 14:08:00  10951人阅读

分类: 技术交流 分布式开发

作者:dever  (如需引用,请注明出处!)

前言:本文只是探讨构造短信平台的思路,并不专注于讨论某种技术,文中所提到的技术细节如有疑问,请翻阅相关资料查找。

在通讯发达的今天,短信已经成为人们交流的重要手段,与E-Mail、电话等传统交流方式相比,短信有着不可比拟的优势。越来越多的企业开始选择使用短信平台来进行企业宣传、行业应用、系统集成等等。

当你决定构造一个企业的短信平台时,你面临着以下几种选择:一是通过互联网或专线接入移动运营商短信中心或短信网关;二是通过互联网或专线接入中间服务运营商的短信中心(如新浪、网易这种SP服务商);三是通过计算机连接手机发送短消息;四是通过多路短信专用设备(GSM MODEM池)发送短消息。总的来说,第一种方式具有发送速度快、成功率和可靠性高的优点。为首选,其次为第四种方式。但显然这两种方法都不是我们普通人所能接触到的,更别说DIY了,所以,今天我要介绍的方法就是第三种,利用手机内置的GSM-MODEM构建短信平台。

先介绍一下我的开发环境:

硬件:西门子M55手机一部、手机数据线(USB接口,虚拟COM口)、BENQ Joybook5000笔记本。
软件系统:Windows XP操作系统、.NET Framwork 1.1
开发工具:VS.NET2003

如果你是第一次接触串口编程,那么最好再补习一些基本的知识:串口编程常用AT指令

手机最好选用西门子、诺基亚、爱立信等著名品牌的手机。数据线尽量选用原装的,以确保其稳定性。连上数据线,装好手机驱动以后,记得查看一下你的手机连在了哪个端口,一会设置要用到。

 
(图1:我的手机端口为COM3)

OK,到此为止一切准备工作都完成了,在正式开始之前,我们还需要测试一下,看看能不能与电脑进行通讯,不然到时候编完了程序却发现不能通讯,怕是哭都哭不出来了。我用的测试工具是windows自带的“超级终端”。新建一个连接,设置端口号和端口参数,端口参数根据你手机的参数来定。基本上选择默认参数就可以。连接成功以后出现一个类似下图的窗口:


(图2:超级终端调试窗口)

打个AT指令试试,返回OK就表示你的手机与PC已经可以通讯了。这个工具还是很有用的,大部分时候你都需要在这里测试AT指令。

万事具备,东风也有了。我们现在就开始构建短信平台之路,第一步的目标是做一个能发短消息的小程序出来。

先整理一下思路,要想发短消息,就需要向串口发消息,要发消息就要能够和串口通讯,问题似乎已经很清楚,先找个能和串口通讯的类包吧。(可惜C#中并没有直接提供这样的类,昨天看一blog上写到VB.NET2005中有专门的串口通讯类,不知道C# 2005中会不会也加入这样一个类?)网上这样的组件倒是挺多的,不过大部分没有源码并且收费,这显然有违DIY精神,不用也罢。

最后在gotdotnet上找到了两个串口操作类,国内这样的源码和资料真是太少了 :( 。在这里顺便感谢一下这些原创作者,如果不是他们的辛勤努力,我们可就得辛苦喽。找到的两个串口操作类是JustinIO和SerialStreamReader。JustinIO是个简单易用的类,相当不错。SerialStreamReader本身就是一个串口调试工具,所以它基本上可以取代windows的“超级终端”。作为它里边的核心-SerialStream类直接继承自Stream类,这给我们的操作也带来了相当的便利,不过我在测试过程中发现,利用Remoting来调用这个类时会导致服务进程死锁,多少有些遗憾。(这两个类包在下面提供)

有了这两个类包,就意味着我们可以在自己写的程序里与串口进行通讯了,但可以通信并不意味着就可以发短信,因为凡是通讯都会有协议,而这里的通讯协议就是下面我要向大家介绍的收发短消息的三种模式。这三种模式分别是Block模式、Text模式和PDU模式。Block模式:需要手机生产厂家提供驱动支持,已被淘汰。Text模式:简单易行、不需要编码转,但只能发ASCII码,且支持此模式手机较少,多见于Nokia手机。PDU:支持此模式手机最多,兼容性好,但需要进行编码转换。

看了上面的介绍,毫无疑问我们的选择只有PDU了,网上关于PDU编码的例子很多,我参考的是蚕蛹写的一篇文章《C#开发终端式短信的原理和方法》,文章后边还有一个作者写的DEMO,相信会给初次接触串口编程的朋友带来很大帮助(包括我在内,谢谢蚕蛹)。他的DEMO里用的串口通讯类就是JustinIO。

现在似乎已经没有什么大问题了,动手做我们的程序吧,打开VS.NET,新建项目,把需要用到的类都导进来,就可以开始喽~~

这是我做的一个DEMO,样子是简陋了点,不过作为测试,功能已经足够,关于此DEMO的源码在下次提供。

这么快就做出了一个可以发送短消息的程序来,是不是很有成就感~~ 呵呵,先陶醉一会吧。我们下次继续。

代码下载:

串口通讯组件:JustinIO.rar  SerialStream.rar

0 0

相关博文

我的热门文章

img
取 消
img