监控系统中发送手机短信的实现_第1页
监控系统中发送手机短信的实现_第2页
监控系统中发送手机短信的实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、监控系统中发送手机短信的实现 发布日期:2006-06-13作者:刘凌 来源:计算机与信息技术 摘要 越来越多的监控系统采用自动发送手机短信的方式通知值班人员。利用Visual C+,采用串口与GSM modem通讯,可以方便的实现这一功能。针对于常见两类设备,一类采用特定的通信规约格式,一类采用AT命令,给出了具体的实现过程。 关键词 Visual C+, 手机短信, 串口编程,监控系统 1 引言 随着手机的普及,手机短信的使用也越来越多。于是很多具有监控报警功能的系统都选择了手机短信的模式,在第一时间将所发生的情况通知给值班人员和有关人员,以便尽早的发现处理问题,同时也可以实现无人值班。也

2、有通过手机短信来传递数据123。手机的短信实现目前有三种方法: (1 通过移动网关发送短信,使用该方法不需要附加的硬件,但是需要到电信部门申请网关,比较适用于一些大型的网络通讯公司开发,目前华为,中兴等公司就做的这方面的工作,并且还有相应的开发包供开发人员使用。 (2 在计算机上通过串口向手机发送中文短信,这是目前比较适合于小项目开发的一种方法,所需硬件包括一款手机或者专用设备,以及相应的数据线。该方法编码简单,并能够自动发送短信。 (3 通过一些网站上提供的短信发送功能来实现,比如新浪网、网易、搜狐等都提供这方面的服务,这种方法是这三种方法中实现起来最简单,所需资源最少的,但是对于网站的依赖

3、性太强,对网络的依赖同样无法避免,不太适用于项目开发。 对于监控系统来说,方法(2无疑是最好的选择,开发简单,投资也比较少,本文结合作者的实践,给出具体的实现过程。 2 Visual C+ 串口数据读写 在windows(包括windows 2000、windows XP、windows 2003)操作环境下,串口设备可以看作是一种特殊的文件,使用Visual C+中有两种方法可以进行串口通讯。一种是利用微软公司提供的ActiveX控件 Microsoft Communications Control;另一种是直接用Visual C+访问串口。 2.1使用ActiveX控件读写串口 使用Vis

4、ual C+提供的MSComm控件进行串行通信,比较非常简单,这里只作简要的叙述,具体可参考文献4。 #define MLENGTH 128 / 收发数据长度 CMSComm comm; / 定义串口对象 VARIANT InBuffer; / 读取数据缓存 VARIANT OutBuffer; / 输出数据缓存 comm.SetCommPort(1; / 设置串口1 if (!comm.GetPortOpen( / 打开串口 comm.SetSettings("9600,N,8,1" / 设置串口波特率9600,无校验数据位8位,停止位1.5 comm SetPortOp

5、en(true; comm.SetInBufferCount( 0; InBuffer.bstrVal=new unsigned short MLENGTH; OutBuffer.bstrVal=new unsigned shortMLENGTH; OutBuffer.vt=VT_BSTR; InBuffer= comm.GetInput(; / 读取数据 comm.SetOutput(OutBuffer; / 发送数据 2.2直接用Visual C+访问串口 使用Visiual C+直接调用标准函数CreateFile(打开端口,再使用ReadFile(和WriteFile(读写数据。通常实

6、现串口通信的步骤如下: (1 按协议的设置初始化并打开串行口,这样做就是通知Windows本应用程序需要这个串口,并封锁其他应用程序使它们不能使用此串口。 HANDLE hComm hComm = CreateFile( "COM1",GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ; hComm为文件句柄。GENERIC_READ | GENERIC_WRITE指定可以对串口进行读写操作。第三个参数0表示串口为独占打开。OPEN_EXISTING表示当指定串

7、口不存在时,程序将返回失败。 FILE_ATTRIBUTE_NORMAL表示文件属性。 (2 配置这个串行口。 DCB:DCB结构主要用于串口参数设置。该结构太庞大,这里就不一一讲述了,有兴趣者可查看MSDN关于DCB的描述。其中下面两个是比较重要的属性。BaudRate:串口的通讯速度。ByteSize:字节位数,一般设置为8。 /设置事件驱动的类型 SetCommMask(hComm,EV_RXCHAR|EV_TXEMPTY; /设置输入、输出缓冲区的大小 SetupComm(hComm, 1024, 1024 ; /清输入、输出缓冲区 PurgeComm(hComm,PURGE_TXAB

8、ORT|PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ; / 定义数据控制块结构 DCB dcb ; /读串口原来的参数设置 GetCommState(hComm, &dcb ; /串口参数配置 波特率9600 8位数据,无校验,1位停止位dcb.BaudRate =9600; dcb.ByteSize =8; dcb.Parity = NOPARITY;dcb.StopBits = ONESTOPBIT ; SetCommState(hComm, &dcb ; (3 在串口上往返地传输数据,并在传输过程中进行校验。 DWORD d

9、wErrorFlags; COMSTAT ComStat ; DWORD sByteCount = 0; ClearCommError(hComm, &dwErrorFlags, &ComStat ; if ( ComStat.cbInQue / 读缓冲区有数据 ReadFile(hComm, data, ComStat.cbInQue, &sByteCount, NULL; ClearCommError(hComm, &dwErrorFlags, &ComStat ; if (!ComStat.cbOutQue /发送缓冲区无数据可以发送 WriteFile(hComm, data, count, &sByteCount, NULL; (4 不需要此串口时,关闭串口,即释放串口以供其它应用程序使用。串行口是非共享资源,所以打开串口后,一定要关闭串口。 Cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论