1、毕业设计基于API串口编程短信收发程序开发422020年5月29日文档仅供参考 JIANGSU UNIVERSITY 本 科 生 毕 业 论 文基于WIN32的API串口编程-短信收发程序开发WIN32 API based on serial programming - SMS transceiver application development学院名称: 计算机科学与通信工程学院 专业班级: 通班 学生姓名: ooo 指导教师姓名: ooo 指导教师职称: 教授 5月基于WIN32的API串口编程-短信收发程序开发班级:班 学生姓名:ooo指导教师: ooo 职 称: 教授l 摘要:Win
2、dows是当前应用程序开发的主流平台,VC+6.0是该平台强大的开发工具,使用windows API开发串口通信的程序可使我们更加清晰的了解串口通信的机制,而且开发人员能够根据需要使用API进行灵活的程序设计,在SCADA中串行通信是必不可少的技术,因此掌握串行通信的开发方法具有现实意义。而作为”拇指一族”能够用PC机收发短信也省去了很多输入和查看的时间,本论文所设计的就是经过VC+串口通信编程GSM模块于PC机上相连从而实现短信收发。关键词:VC+平台;短信收发程序;API串口编程 WIN32 API based on serial programming - SMS transceiver
3、 application developmentAbstract Windows is the current application development of mainstream platform, vc + + 6.0 is this platform strong development tool, using Windows API development of serial communication program can make us more clear understanding of the mechanism of serial communication, an
4、d the developers can according to need to use the API flexible in program design, in SCADA serial communication in the technology is necessary, so master serial communication development method has practical significance. But as thumb gens to be able to use PC receive text messaging and leave out a
5、lot of input and view of time, this thesis is designed by vc + + serial interface communication programming GSM module in PC connected so as to realize the SMS transceiver. Key words Vc + + platform; SMS sending and receiving procedures; API serial programming目 录第一章 绪论11.1 引言11.2 短消息的发展和现状11.3 本课题研究
6、的目的及意义11.4 课题主要研究工作及工作安排2第二章 基础理论32.1 引言32.2 RS-23232.2.1 RS-232C 接口标准32.2.2 RS-232C 的接口信号:42.3 API函数6第三章 API串口编程73.1 引言73.2 串口的使用7第四章 短信收发程序134.1 引言134.2 短信控制终端134.3短信收发程序15第五章 总结与展望235.1 研究工作总结235.2 展望23参考文献24致 谢25第一章 绪论1.1 引言Win32 API作为Microsoft32位平台的应用程序编程接口,它是构建所有32位Windows平台的基石,所有在Windows平台上运行
7、的程序都能够调用这些函数,API是Windows的核心,从事Windows应用程序开发,离不开Win32API函数的调用,只有充分理解和利用API函数,才能深入到Windows得内部,充分挖掘系统提供的强大功能和灵活性。在当今的工业控制领域,串口通信是计算机与其它设备进行数据通信时经常使用的方法,具有实现简单、使用灵活、数据传输可靠等几个优点,特别是在实时监控系统中得到广泛应用,在我们使用的计算机上使用的串口一般是RS232,但使用RS232接口只能进行一对一的通信。随着信息技术的发展,个人PC机得到越来越广泛的应用;同时,无线接入技术的迅猛发展使手机迅速普及,而短信业务由于成本低廉,实时性强
8、等特点而得到公众的普遍使用。建立以PC为核心的短信平台,能够存储个人和企业的实时及历史的短信信息,扩展手机功能。1.2 短消息的发展和现状 对于手机用户来说,手机短信早已深入人心。而且发送短消息的技术也经历了从SMS、EMS到MMS的不断升级。其中,SMS(Short Message Service)是现在普及最高的一种短消息业务,与SMS相比,EMS的优势在于能够像SMS那样发送文本消息外,还能够发送简单的图像、声音和动画等信息。MMS(Multimedia Message Service)为多媒体短信业务,它在GPRS的支持下,以WAP为载体传送视频短片、图片、声音、文字,其传送方式除了在
9、手机间,还能够在手机于电脑之间。另外,具有MMS功能的移动电话。其独特之处在于它具有内置的照相机,用户能够制作出Powerpoint格式的信息或电子明信片,并将其传送给朋友。第三代通信系统中,其更多的带宽将允许用户经过MMS发送视频剪辑。1.3 本课题研究的目的及意义 移动通信业务中的短信业务以其方便、简短、及时、收费低等优点渗透到人们日常生活的方方面面。无论你在哪,都能看到拿着手机专心的和亲朋好友传递短信的人们。短消息业务的出现不但作为语音通信的补充,也作为一种可选的低成本的通信方式改变着我们的生活。短消息作为一项基本的电信业务,已得到越来越多的业内人士的关注和重视,移动通信业内对短信通信技
10、术和手段的研究大量增加,并不断深入。首先我们来看下短信收发消息现有的方式和缺点。1. 移动电话大多使用一键功能的按键输入,不但效率低,而且受输入法限制,使用不方便,再者手机容量小,短信存储数量较小。2. 经过手写触摸屏手机输入,虽然不受输入法限制,但效率依然很低,而且个人笔记不同。很多情况会出现错误输入。3. 而好的手写输入手机一般比较昂贵。比如苹果的IPHONE系列。 本研究内容主要是经过WIN32串口编程设计短信收发程序,使用PC机收发短信,解决移动终端的输入复杂麻烦等问题。 1.4 课题主要研究工作及工作安排本文主要研究在PC机上实现短信收发,程序的开发有很多个平台可用,本文要研究的是基
11、于Win32API串口编程的程序开发。API串口编程在性能和稳定性以及使用灵活性上都有很不错的表现。具体地讲,本文的主要研究内容包括以下几个方面:(1) 基于Win32API串口编程的研究在Win32API中,串口使用文件方式进行访问,其操作的API基本上和文件操作的API一致。 (2) 短信收发程序的开发根据前文API串口编程的研究,在熟悉VC+编程的基础上,编写出短信收发程序,并实验使用PC机收发短信。本文各章内容安排如下:第一章 绪论,对当前短信收发程序的发展进行总结,说明了本课题的研究目的与意义并介绍了本文的研究内容及论文组织。第二章 基础理论,介绍了与研究本课题有所关联的串口、API
12、函数等基础知识。第三章 API串口编程,详细的介绍了API串口编程的使用方法,以及一些重要参数的设置。包括怎么打开串口、怎么设置串口、怎么读写串口、关闭串口。第四章 短信收发程序的开发,较少短信息使用的格式,短消息中心号码,以及西门子公司的TC35模块。第五章 总结与展望,全面总结了本文主要研究内容的成果,并指出了在现有系统的基础上对未来新技术的展望。第二章 基础理论2.1 引言在Win32下,能够使用两种编程方式实现串口通信,其一是使用MScomm控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法能够清楚地掌握串口通信的机制,而且自由灵活。使用控件的方法在本质上
13、也是使用API进行串口通信,控件只不过是对API的一个封装处理,本文只介绍使用API进行串口通信编程的方法。 作为短信 (Short Message Service,SMS)一族,想必你有这样的体会:用手机编辑短信息十分不便、容易出错,而且修改费时,若能用计算机来收发短信则方便许多。注意,本文所说的用计算机收发短信并不是说经过网易短信王等方式在Internet上收发短信,而是直接用计算机控制运行了GSM通信系统的短信终端进行收发,因而其收发短信的原理与手机是本质相同的。2.2 RS-232也称标准串口,最常见的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调
14、器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是”数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。 RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,因此其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。因此RS-232适
15、合本地设备之间的通信。 2.2.1 RS-232C 接口标准串行通信接口标准经过使用和发展,当前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。因此,以RS-232C为主来讨论。RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0 0b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,当前已在微机通信接口中广泛采用。 在讨论RS-232C接口标准的内容之前,先说明两点: 远程通信连接数据终端
16、首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但当前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。 ”发送”和”接收”其次,RS-232C标准中所提到的”发送”和”接收”,都是站在DTE立场上,而不是站在DC
17、E的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。2.2.2 RS-232C 的接口信号:RS-232C 的功能特性定义了25芯标准连接器中的20根信号线,其中2条地线、4条数据线、11条控制线、3条定时信号线,剩下的5根线作备用或未定义。常见的只有10根,它们是: (1)联络控制信号线: 数据发送准备好(Data set ready-DSR)有效时(ON)状态,表明MODEM处于能够使用的状态。 数据终端准备好(Data terminal ready-DTR)有效时(ON)状态,表明数据终端能够使用。 这两个信号有时连到电源上
18、,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路能够开始进行通信了,能否开始进行通信要由下面的控制信号决定。 请求发送(Request to send-RTS)用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。 允许发送(Clear to send-CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。 这对RTS/CTS请求应答联络
19、信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。 接收线信号检出(Received Line detection-RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,而且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。 振铃指示(Ringing-RI)当MODEM收到交
20、换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。 (2)数据发送与接收线: 发送数据(Transmitted data-TxD)经过TxD终端将串行数据发送到MODEM,(DTEDCE)。 接收数据(Received data-RxD)经过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。 (3)地线 : GND、Sig.GND保护地和信号地,无方向。 上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状
21、态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。 2个数据信号:发送TXD;接收RXD。 1个信号地线:SG。 6个控制信号: DSR 数传发送准备好,Data Set Ready。 DTR 数据终端准备好,Data Terminal Ready。 RTS DTE请求DCE发送(Request To Send)。 CTS DCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。 DCD 数据载波检测(Data Carrier
22、 Detection),当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收, 而且由DCE将接收到的载波信号解调为数字信号, 经RXD线送给DTE。 RI 振铃信号(Ringing),当DCE收到对方的DCE设备送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。 由于RS232接口标准出现较早,难免有不足之处,主要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率20Kbps。 (3)接口使用一根信号线和一根信号返回线
23、而构成共地的传输形式,这种共地传输容易产生共模干扰,因此抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺(实际15米)。2.3 API函数Windows 这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源之外, 她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),能够帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由於这些函数服务的对象是应用程式(Application), 因此便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是MicrosoftWindow
24、s 32位平台的应用程序编程接口。第三章 API串口编程3.1 引言在PC机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C串行接口,在微软的Windows系统中称其为COM。我们能够经过设备管理器来查看COM的硬件参数设置,迄今为止,几乎每一台PC都包含COM。本质而言,COM是PC为和外界通信所提供的一种串行数据传输的接口。作为一种物理通信的途径和设备,它和当前风靡的另一种串行接口USB所提供的功能是一致的。不过RS-232C显然已经开始被后起之秀USB赶超,因为USB的传输速率已经远远超过了RS-232C。尽管如此,RS-232C依然具有非常广泛的应用,在相对长的一段时间
25、里,难以被USB等接口取代。RS-232C接口(又称EIA RS-232C),1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定,全名是”数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。3.2 串口的使用打开串口Win32 中用于打开串口的API 函数为CreateFile,其原型为:HANDLE CreateFile (LPCTSTR lpFileName, /将要打开的串口逻辑名,如COM1 或COM2DWORD dwAccess, /指定串口访问的类型,能够是读取、写入或两者并列DWORD dwShareMo
26、de, /指定共享属性,由于串口不能共享,该参数必须置为0LPSECURITY_ATTRIBUTES lpsa, /引用安全性属性结构,缺省值为NULLDWORD dwCreate, /创立标志,对串口操作该参数必须置为OPEN EXISTINGDWORD dwAttrsAndFlags, /属性描述,用于指定该串口是否可进行异步操作,/FILE_FLAG_OVERLAPPED:可使用异步的I/OHANDLE hTemplateFile /指向模板文件的句柄,对串口而言该参数必须置为NULL ); 例如,以下程序用于以同步读写方式打开串口COM1:HANDLE hCom;DWORD dwErr
27、or;hCon = CreateFile(COM1, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);if (hCom = (HANDLE)0xFFFFFFFF)对于dwAttrsAndFlags参数及FILE_FLAG_OVERLAPPED标志的由来,可解释如下:Windows文件操作分为同步I/O和重叠I/O(Overlapped I/ O)两种方式,在同步I/O方式中,API会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,可是依然会阻塞监听线程);而在重叠I/O方式中,API会立即返回,操作
28、在后台进行,避免线程的阻塞。重叠I/O非常灵活,它也能够实现阻塞(例如我们能够设置一定要读取到一个数据才能进行到下一步操作)。如果进行I/O操作的API 在没有完成操作的情况下返回,我们能够经过调用GetOverLappedResult()函数阻塞到I/O操作完成后返回。配置串口配置串口是经过改变设备控制块DCB(Device Control Block) 的成员变量值来实现的,接收缓冲区和发送缓冲区的大小可经过SetupComm函数来设置。DCB结构体定义为:typedef struct _DCB / dcb DWORD DCBlength; / sizeof(DCB) DWORD Baud
29、Rate; / current baud rate DWORD fBinary: 1; / binary mode, no EOF check DWORD fParity: 1; / enable parity checking DWORD fOutxCtsFlow:1; / CTS output flow control DWORD fOutxDsrFlow:1; / DSR output flow control DWORD fDtrControl:2; / DTR flow control type DWORD fDsrSensitivity:1; / DSR sensitivity D
30、WORD fTXContinueOnXoff:1; / XOFF continues Tx DWORD fOutX: 1; / XON/XOFF out flow control DWORD fInX: 1; / XON/XOFF in flow control DWORD fErrorChar: 1; / enable error replacement DWORD fNull: 1; / enable null stripping DWORD fRtsControl:2; / RTS flow control DWORD fAbortOnError:1; / abort reads/wri
31、tes on error DWORD fDummy2:17; / reserved WORD wReserved; / not currently used WORD XonLim; / transmit XON threshold WORD XoffLim; / transmit XOFF threshold BYTE ByteSize; / number of bits/byte, 4-8 BYTE Parity; / 0-4=no,odd,even,mark,space BYTE StopBits; / 0,1,2 = 1, 1.5, 2 char XonChar; / Tx and R
32、x XON character char XoffChar; / Tx and Rx XOFF character char ErrorChar; / error replacement character char EofChar; / end of input character char EvtChar; / received event character WORD wReserved1; / reserved; do not use DCB;以下程序将串口设置为:波特率为9600,数据位数为7位,停止位为2 位,偶校验,接收缓冲区和发送缓冲区大小均为1024个字节,最后用PurgeC
33、omm函数终止所有的后台读写操作并清空接收缓冲区和发送缓冲区:DCB dcb;dcb.BaudRate = 9600; /波特率为9600dcb.ByteSize = 7; /数据位数为7位dcb.Parity = EVENPARITY; /偶校验dcb.StopBits = 2; /两个停止位dcb.fBinary = TRUE;dcb.fParity = TRUE;if (!SetCommState(hCom, &dcb)MessageBox(串口设置出错!); SetupComm(hCom, 1024, 1024);PurgeComm(hCom, PURCE_TXABORT | PURG
34、E_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);超时设置 超时设置是经过改变COMMTIMEOUTS结构体的成员变量值来实现的,COMMTIMEOUTS的原型为:typedef struct _COMMTIMEOUTSDWORD ReadIntervalTimeout; /定义两个字符到达的最大时间间隔,单位:毫秒/当读取完一个字符后,超过了ReadIntervalTimeout,仍未读取到下一个字符,就会/发生超时DWORD ReadTotalTimeoutMultiplier; DWORD ReadTotalTimeoutConstant;/其中各时间
35、所满足的关系如下:/ReadTotalTimeout = ReadTotalTimeOutMultiplier* BytesToRead + ReadTotalTimeoutConstantDWORD WriteTotalTimeoutMultiplier;DWORD WriteTotalTimeoutConstant; COMMTIMEOUTS, *LPCOMMTIMEOUTS;设置超时的函数为SetCommTimeouts,其原型中接收COMMTIMEOUTS的指针为参数:BOOL SetCommTimeouts(HANDLE hFile, / handle to communicatio
36、ns deviceLPCOMMTIMEOUTS lpCommTimeouts / pointer to comm time-out structure );以下程序将串口读操作的超时设定为10 毫秒:COMMTIMEOUTS to;memset(&to, 0, sizeof(to);to.ReadIntervalTimeout = 10;SetCommTimeouts(hCom, &to);与SetCommTimeouts对应的GetCommTimeouts()函数的原型为:BOOL GetCommTimeouts(HANDLE hFile, / handle of communication
37、s deviceLPCOMMTIMEOUTS lpCommTimeouts / pointer to comm time-out structure );事件设置在读写串口之前,需要用SetCommMask ()函数设置事件掩模来监视指定通信端口上的事件,其原型为:BOOL SetCommMask(HANDLE hFile, /标识通信端口的句柄DWORD dwEvtMask /能够使能的通信事件 );有了Set当然还会有Get,与SetCommMask对应的GetCommMask()函数的原型为:BOOL GetCommMask(HANDLE hFile, /标识通信端口的句柄LPDWORD
38、 lpEvtMask / address of variable to get event mask );串口上能够发生的事件能够是如下事件列表中的一个或任意组合:EV_BREAK、EV_CTS、EV_DSR、EV_ERR、EV_RING、EV_RLSD、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY。我们能够用WaitCommEvent()函数来等待串口上我们利用SetCommMask ()函数设置的事件:BOOL WaitCommEvent(HANDLE hFile, /标识通信端口的句柄LPDWORD lpEvtMask, / address of variable for
39、 event that occurredLPOVERLAPPED lpOverlapped, / address of overlapped structure );WaitCommEvent()函数一直阻塞,直到串口上发生我们用所SetCommMask ()函数设置的通信事件为止。一般而言,当WaitCommEvent()返回时,程序员能够由分析*lpEvtMask而获得发生事件的类别,再进行相应的处理。读串口对串口进行读取所用的函数和对文件进行读取所用的函数相同,读函数原型如下: BOOL ReadFile(HANDLE hFile, / handle of file to readLPV
40、OID lpBuffer, / pointer to buffer that receives dataDWORD nNumberOfBytesToRead, / number of bytes to readLPDWORD lpNumberOfBytesRead, / pointer to number of bytes readLPOVERLAPPED lpOverlapped / pointer to structure for overlapped I/O写串口对串口进行写入所用的函数和对文件进行写入所用的函数相同,写函数原型如下:BOOL WriteFile( HANDLE hFil
41、e, / handle to file to write to LPCVOID lpBuffer, / pointer to data to write to file DWORD nNumberOfBytesToWrite, / number of bytes to write LPDWORD lpNumberOfBytesWritten, / pointer to number of bytes written LPOVERLAPPED lpOverlapped / pointer to structure for overlapped I/O );关闭串口利用API 函数实现串口通信时关
42、闭串口非常简单,只需使用CreateFile 函数返回的句柄作为参数调用CloseHandle 即可:BOOL CloseHandle( HANDLE hObject / handle to object to close );第四章 短信收发程序4.1 引言根据上一章所讨论的背景模型的建立,能够经过背景差分法得到包含运动区域的前景,该前景去除了当前图像中的背景像素,仅留下了变化像素。但在变化像素中,除了运动目标外还存在许多由各种干扰所引起的变化像素,这些可能会使原本分离的目标区域合并或引起目标变形等。因此,为了正确提取运动目标区域,阴影和残留噪声等依然需要去除,同时,能够利用数学形态学对原始
43、图像进行重建。为此,本文引入了基于RGB颜色模型的阴影检测和去除方法进行运动目标阴影的检测与去除;利用数学形态学的基本运算来完成对目标区域的修整与重建。4.2 短信控制终端介绍一款GSM模块,它就是西门子公司的TC35,它由GSM基带处理器、电源专用集成电路、射频电路和闪速存储器等部分组成,负责处理GSM蜂窝设备中的音频、数据和信号,内嵌的软件部分执行应用接口和所有GSM协议栈的功能。TC35支持中文短信息,工作在EGSM900和GSM1800双频段,电源范围为3.35.5V,可传输语音和数据信号,消耗功率在EGSM900(4类)和GSM1800(1类)分别为2W和1W,经过接口连接器和天线连
44、接器分别连接SIM卡读卡器和天线。TC35的数据接口(CMOS电平)经过AT命令可双向传输指令和数据,可选波特率为300bit/s115kbit/s,自动波特率为1.2k115kbit/s。它支持文本和PDU格式的,可经过AT命令或关断信号实现重启和故障恢复。我们需要利用以TC35模块为主的硬件组成一个TC35终端设备,并与电脑经过RS-232C串口相连,并自行编制在PC上运行的短信息收发软件,就能够组成一个短信收发系统。TC35终端电路如下图所示:TC35的控制主要包含如下几类指令:(1) 初始化指令设置短消息发送格式AT+CMGF=1,设置1代表PDU模式,是回车符号,也就是0x0d,指令
45、正确则模块返回OK,是回车换行符号。(2) 设置/读取短消息中心短消息中心号码由移动运营商提供。设置短消息中心的指令格式为:AT+CSCA=+86(短消息中心)设置正确则模块返回OK。读取短消息服务中心则使用命令:AT+CSCA=?TC35模块应该返回:+CSCA:86。(3)设置短消息到达自动提示设置短消息到达自动提示的指令格式为:AT+CNMI=1,1,0,0,1设置正确则TC35模块返回:OK。设置此命令可使模块在短消息到达后向串口发送指令:+CMTI:SM,INDEX(信息存储位置)。经过TC35发送短消息的方法为:PC上的控制软件按照PDU的格式发送和接收数据,短消息的内容能够是中文或者其它字符。在PDU模式,如果发送短消息,则首先发送短消息数据的长度:AT+CMGS=等待TC35模块返回ASCII字符,则能够将PDU数据输入,PDU数据以(也就是0x1a)作为结束符。短消息发送成功,模块返回:OK经过TC35接收短消息的方法为:短消息到来后,串口上会接收到指令+CMTI:SM,INDEX(信息存储位置)