深入浅出VC++串口编程之短信应用开发

前面数次连载我们以较长的篇幅讲解了串口通信的硬件原理、DOS平台控制以及基于WIN32 API、控件和第三方类的串口编程。作为本系列文章的最后一次连载,本章将给出一个典型的 应用实例:西门子短信服务模块TC35的串口控制。

1.短信控制终端

作为短信 (Short Message Service,SMS)一族,想必你有这样的体会:用手机编辑短信息十分不便、 容易出错,而且修改费时,若能用计算机来收发短信则方便许多。注意,本文所说的用计算 机收发短信并不是说通过"网易短信王"等方式在Internet上收发短信,而是直接 用计算机控制运行了GSM通信系统的短信终端进行收发,因而其收发短信的原理与手机是本质 相同的。

实际上,一大堆的垃圾短信也是采用这种短信终端发出来的!

我们 来介绍一款GSM模块,它就是西门子公司的TC35,它由GSM基带处理器、电源专用集成电路、 射频电路和闪速存储器等部分组成,负责处理GSM蜂窝设备中的音频、数据和信号,内嵌的软 件部分执行应用接口和所有GSM协议栈的功能。TC35支持中文短信息,工作在EGSM900和 GSM1800双频段,电源范围为3.3~5.5V,可传输语音和数据信号,消耗功率在EGSM900(4类)和 GSM1800(1类)分别为2W和1W,通过接口连接器和天线连接器分别连接SIM卡读卡器和天线。 TC35的数据接口(CMOS电平)通过AT命令可双向传输指令和数据,可选波特率为 300bit/s~115kbit/s,自动波特率为1.2k~115kbit/s。它支持文本和PDU格式的,可通过AT命 令或关断信号实现重启和故障恢复。

我们需要利用以TC35模块为主的硬件组成一个 TC35终端设备,并与电脑通过RS-232C串口相连,并自行编制在PC上运行的短信息收发软件, 就可以组成一个短信收发系统。TC35终端电路如下图所示:

开发-深入浅出vc串口编程">

TC35的控制主要 包含如下几类指令:

(1)初始化指令

设置短消息发送格式 AT+CMGF=1<CR>,设置1代表PDU模式,<CR>是回车符号,也就是0x0d,指令正确 则模块返回<CRLF>OK<CRLF>,<CRLF>是回车换行符号。

(2)设 置/读取短消息中心

短消息中心号码由移动运营商提供。

设置短消息中心的指 令格式为:

AT+CSCA=″+8613800531500″(短消息中心) <CR>

设置正确则模块返回<CRLF>OK<CRLF>。

读取短消息 服务中心则使用命令:

AT+CSCA=?<CR>

TC35模块应该返回:

<CRLF>+CSCA:″8613800531500″<CRLF>。

时间: 2024-11-08 18:25:51

深入浅出VC++串口编程之短信应用开发的相关文章

深入浅出VC++串口编程之第三方类

串口类 从本系列文章可以看出,与通过WIN32 API进行串口访问相比,通过MScomm这个Activex控 件进行串口访问要来的方便许多,它基本上可以向用户屏蔽多线程的细节,以事件(发出 OnComm消息)方式实现串口的异步访问. 尽管如此,MScomm控件的使用仍有诸多不便,譬如其发送和接收数据都要进行VARIANT类 型对象与字符串的转化等.因此,国内外许多优秀的程序员自己编写了一些串口类,使用这 些类,我们将可以更方便的操作串口.在笔者的<深入浅出Win32多线程程序设计之综合实例 >

学习笔记:Java串口编程(短信Modem).

最终目标:在Linux下提供一个稳定可靠的Java短信发送服务器. 第一阶段:在Win32平台下编码并测试: 第二阶段:在Linux平台下部署并测试: 目录: 相关资源:(Java Communication包) Win32串口编程前期准备 Win32短信Modem的测试步骤和AT指令: Linux串口编程前期准备 列出系统所有串口.并口,来找到短信Modem所使用的串口名字 测试串口速率 Win32/Linux下串口编程的差异 Win32/Linux下串口编程(屏蔽平台差异) Win32/Li

深入浅出VC++串口编程之基于Win32 API

1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与 文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为 CreateFile,其原型为: HANDLE CreateFile ( LPCTSTR lpFileName, //将要打开的串口逻辑名,如COM1 或COM2 DWORD dwAccess, //指定串口访问的类型 ,可以是读取.写入或两者并列 DWORD dwShareMode, //指定共享属性,由于串口不 能共享,该参数

Android编程之短信列表的时间显示实例分析_Android

本文实例讲述了Android编程之短信列表的时间显示.分享给大家供大家参考,具体如下: Android的短信的时间的显示做的很精细,首先保存在短信数据库mmssms.db中的短信时间都是Long型的数字,查询动作结束,取到这个值之后,会做转换,具体转换的动作在MessageUtils.java的formatTimeStampString函数中完成: public static String formatTimeStampString(Context context, long when) { r

vc++-VC++串口编程求助。。。。。

问题描述 VC++串口编程求助..... 非常著名的serialport类中有这么一段代码: bResult = WaitCommEvent(port->m_hComm, &Event, &port->m_ov); if (!bResult) { // If WaitCommEvent() returns FALSE, process the last error to determin switch (dwError = GetLastError()) { case ERRO

Android编程之短信窃听器实现方法_Android

本文实例讲述了Android编程之短信窃听器实现方法.分享给大家供大家参考,具体如下: 服务器: 1.修改frombean:VideoForm中增加短信时间.内容和发送者属性. 2.VideoManageAction中增加方法getSMS()来获取窃听器发送的短消息. public ActionForward getSMS(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse

Android编程之短信列表的时间显示实例分析

本文实例讲述了Android编程之短信列表的时间显示.分享给大家供大家参考,具体如下: Android的短信的时间的显示做的很精细,首先保存在短信数据库mmssms.db中的短信时间都是Long型的数字,查询动作结束,取到这个值之后,会做转换,具体转换的动作在MessageUtils.java的formatTimeStampString函数中完成: public static String formatTimeStampString(Context context, long when) { r

Android编程之短信窃听器实现方法

本文实例讲述了Android编程之短信窃听器实现方法.分享给大家供大家参考,具体如下: 服务器: 1.修改frombean:VideoForm中增加短信时间.内容和发送者属性. 2.VideoManageAction中增加方法getSMS()来获取窃听器发送的短消息. public ActionForward getSMS(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse

C# 写的通过串口读GPRSMODEM 短信。读过来的字符串怎么提出内容。

问题描述 this.sp.Write("AT+CMGL="ALL"r");Thread.Sleep(5000);byte[]buffer=newbyte[1024];intn=this.sp.Read(buffer,0,1024);stringresponse=Encoding.ASCII.GetString(buffer);response=response.Trim('');response=AT+CMGL="ALL"rrn+CMGL:1,&