基于TC35i 的PC机短信息收发模块

来源:本站
导读:目前正在解读《基于TC35i 的PC机短信息收发模块》的相关信息,《基于TC35i 的PC机短信息收发模块》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于TC35i 的PC机短信息收发模块》的详细说明。
简介:本文实现了PC在TC35i GSM模块上的短信息收发功能,解决了PC启动时串行口不规则信号对模块的影响,软件实现了PC直接控制模块启动、关闭功能。

短信息服务作为GSM 系统为用户提供的一种基本数字业务,已经得到越来越多的系统运营商和系统开发商的重视,成为诸多领域远程监控的一种通信手段,很多应用场合需要通过PC直接控制短信息收发功能,完成系统的数据采集或远程信息传输,在一些偏远架设通信线路比较困难的地区,尤其需要用户直接通过PC控制短信息的远程传输。

本文通过介绍西门子公司TC35i GSM 的PC机短信息收发模块,详细阐述TC35i和PC之间的硬件连接及部分接口电路原理,PC通过软件编程利用AT指令控制模块工作,实现短信息的收发功能。该模块可应用于多个领域的远程信息传输系统,特别适用于需频繁传送小数据量的远程信息传输系统,如铁路远程信息传输、电力远程抄表和水利远程监控等领域。

硬件设计

针对TC35i模块与PC连接的电源接口、通信接口和控制接口等接口存在的一些问题,采取有效的方法实现两者硬件电路的连接,TC35i模块安装在PC内部,由PC电源供电,同时通过PC串行口实现数据交换,再经软件编程实现模块启动、关闭的收发功能。

TC35i模块TC35i模块是西门子公司推出的一种无线通信模块,它是集射频电路、基带于一体,向用户提供标准的AT命令接口,为数据、语音、短信息和传真提供快速、可靠、安全的传输,方便用户的开发设计及应用。

TC35i模块应用接口采用40脚的Zip插座,包含的引脚功能有:3.3~5.5V、峰值为2A的直流电源接口,模拟音频输入、输出接口,8个引脚的标准RS232信号接口,6个引脚符合GSM11.11标准的SIM 卡连接、控制接口。本文应用4个接口,电源接口、控制接口、串行通信接口及SIM卡连接接口。

系统结构

系统结构图如图1所示,为增强系统的灵活性,TC35i模块直接由PC内部5V电源供电,PC与TC35i模块通过串行通讯的RxD、TxD和地线三线制完成通讯,串行通讯的DTR和RTS接口与TC35i模块的控制接口连接,实现PC通过软件对短信息收发模块的控制和数据交换。

基于TC35i 的PC机短信息收发模块

电源接口电路

电源接口电路如图2所示,除提供整个模块的5V工作电压外,最主要的是为TC35i模块提供工作电压。

基于TC35i 的PC机短信息收发模块

TC35i模块工作电压为3.3~5 V,稳定工作电压4.4V左右,在启动连接登陆网络的传输过程中要求电源能提供2 A的峰值电流、不大于400 mV的压降,因为在数据传输过程中当电压的波动大于400 mV时,TC35i模块认为工作电压过低而自动关闭TC35i模块,因此在设计TC35i模块的电源时必须考虑电压下降的可能性,保证最小电压高于4V。PC直流输出电压通过比较电路与基准电压进行比较,误差电压由通/断时间比例控制电路调整直流输出电压,线路滤波器防止交流信号噪声输入,抑制电源内部产生的反馈噪声。控制接口电路

控制接口电路的目的是利用PC串行通讯的DTR和RTS信号线分别控制TC35i模块IGT点火线和EMERG0FF强制关闭线,实现PC对TC35i模块的启动和关闭控制。启动TC35i模块时,为使TC35i模块上电10ms后(供电电压必须大于4V)正常工作,须在IGT引脚加时长至少为100ms的低电平信号,该信号下降沿时间小于1ms,启动后IGT引脚的信号保持高电平;关闭TC35i模块时,须在EMERG0FF引脚加一个时长至少为3.2s的低电平信号。

一般设计中,上述延时直接通过PC机软件编程即可实现整个模块的启动和关闭控制,但在实际设计过程中发现,PC启动过程中DTR引脚和RTS引脚存在一个约4s左右的波动,波形图如图3所示,如果该波动不滤除,将会引起TC35i模块的非正常启动,本接口电路采用RC延时电路和施密特触发器滤除该波动信号,部分控制接口电路如图4所示。

基于TC35i 的PC机短信息收发模块

基于TC35i 的PC机短信息收发模块

数据通信接口电路

数据通信接口电路完成短信息收发及与PC通信等功能,TC35i模块与PC串行口使用简单的三线制进行数据交换。因PC的RS232接口和TC35i模块串行接口的电平规范不同,本文使用简单的施密特触发器、稳压管和电阻实现RxD和TxD电平转换,电路如图5所示。

基于TC35i 的PC机短信息收发模块

软件设计

通过VC++6.0语言实现软件编程,PC首先通过编程打开与TC35i模块相连的串行口,然后通过此串行口向模块发送各种AT指令,实现对TC35i模块的控制,完成短信息收发功能。

串行口初始化在Windows环境下,常用编程实现串行口操作的方法除利用MSComm控件和某些现成的串行口通信外,还可以直接调用Windows API实现,程序如(程序1):

(程序1)

HANDLE hComm; //串行口设备控制

BOOL OpenComm (const char* pPort,int nBaudRate,int nParity,int nByteSize,int nStopBits)

{

DCB dcb; //串行口控制块

COMMTIMEOUTS timeouts={//串行口超时控制参数

100,//读字符间隔超时时间:100 ms

1,//读操作时每字符的时间:1 ms

500,//基本的(额外的)读超时时间:500 ms

1,//写操作时每字符的时间:1 ms

100}; //基本的(额外的)写超时时间:100 ms

hComm=CreateFile(pPort //串行口名称或设备路径

GENERIC_READ | GENERIC_WRITE,//读写方式

0, //共享方式:独占

NULL, //默认的安全描述符

OPEN_EXISTING,//创建方式

0,//不需设置文件属性

NULL); //不需参照模板文件

if(hComm == INVALID_HANDLE_VALUE) return FALSE;//打开串行口失败

GetCommState(hComm,&dcb); //取DCB

dcb.BaudRate= nBaudRate;

dcb.ByteSize=nByteSize;

dcb.Parity=nParity;

dcb.StopBits=nStopBits;

SetCommState(hComm,&dcb); //设置DCB

SetuDComm(hComm,4096,1024);//设置输入输出缓冲区大小

::SetCommTimeouts(hComm,&timeouts); // 设置超时

return TRUE;

};

TC35i模块启动TC35i模块在系统上电10ms后,IGT引脚加时长至少100ms、下降沿时间小于1ms的低电平信号,完成模块的正常启动,模块启动时利用软件控制串行口DTR引脚的电平转换,DTR引脚的状态作为串行口的一个属性与波特率、数据位长度、校验位、停止位等一样保存在串行口的状态结构DCB结构中,设置DTR引脚状态时,只需保持串行口状态结构中的其他属性不变,控制程序如(程序2)

(程序2)

void EnableDTR() //设置DTR有效

{

DCB dcb;

GetCommState(hComm,&dcb); //取DCB

dcb.fDtrControI=DTR_CONTROL_ENABLE;

SetCommState(hComm,&dcb); //设置DCB

}

void DisableDTR()//设置DTR无效

{

DCB dcb;

GetCommState(hComm,&dcb); //取DCB

dcb.fDtrControl=DTR_CONTROL_DISABLE;

SetCommState(hComm,&dcb); //设置DCB

}

在控制接口电路中为滤除DTR引脚的电平波动,利用硬件电路实现DTR引脚由低电平到高电平延时的,软件控制模块启动过程中需跨过相同的延时时间,模块启动程序如(程序3):

(程序3)

void SMSStart(void) //模块启动

{

DisableRTS();//禁止RTS,将PowerDown设为HiZ高阻态

EnableDTR();

Sleep(11000);//跨过延时时间,此数值根据硬件电路可调

DisableDTR();

}

AT命令

AT命令集是SMS的DTE-DCE接口标准,是用户控制TC35i模块工作的媒介,利用TC35i模块和进行TC35i模块二次开发都须向模块发送AT命令完成,TC35i模块的命令接口完全符合GSM07.05和GSM07.07规范。PC通过串行口向TC35i模块发送AT命令,同时接收模块对发送的返回信息通过对串行口的读、写操作实现模块的收发功能。串行口的发送、接收程序如(程序4):

(程序4)

//pData:待写的数据缓冲区指针

//nLength:待写的数据长度

void WriteCom(void *pData,int nLength)//发送程序

{

DW0RD dwNumWrite; //串行口发出的数据长度

WriteFile(hComm,pData,(DWORD)nLength,

&dwNumWrite,NULL);

}

//pData:待读的数据缓冲区指针

//nLength:待读的最大数据长度

//返回:实际读入的数据长度

int ReadCom(void *pData,int nLength) //接收程序

{

DWORD dwNumRead; //串行口收到的数据长度

ReadFile(hComm,pData,(DWORD)nLength,

&dwNumRead,NULL);

return (int)dwNumRead;

}

短信息收、发

目前通过GSM无线模块收发短信息主要分为Block模式、Text模式和PDU模式三种模式。Block模式已逐渐被PDU模式取代;Text模式收发短信息原理简单,程序实现比较容易,缺点是只能收发英文信息不能收发中文信息;PDU模式则完全可以解决这个问题,通过PDU编码的短信息内容既可以是英文信息也可以是中文信息。

TC35i模块设置为PDU模式,通过向TC35i模块发送AT命令和PDU串完成短信息的发送,相应的AT命令为:AT+CMGS=<Length><CR>,其中Length为本条短信息发送字符的总长度,<CR>是回车符号即0x0D,向TC35i模块发送此命令后,等待TC35i模块返回“>”ASCll字符,同时将已经编码的PDU串发送至TC35i模块,并以Ctrl+Z(0x1A)结尾,TC35i模块接收到PDU串后开始发送短信息,短信息发送成功后TC35i模块返回<CRLF>OK<CRLF>,<CRLF>是回车换行符号。

接收短信息时,TC35i模块根据用户的设置决定是否向用户发送短信息到达的提示,短信息到达提示的格式为:<CRLF>+CMTI:“SM”,INDEX(信息存储位置)<CRLF>,用户收到短信息到达提示后,向TC35i模块发送:AT+CMGR=INDEX<CRLF>命令,读取相应短信息的PDU串。若用户设置TC35i模块时关闭了短信息到达提示,则用户可以利用AT+CMGL指令列出所有接收后未阅读的短信息,模块将返回所有未阅读的短信息的PDU串。

TC35i模块关闭

系统退出时须将TC35i模块关闭。TC35i模块提供两种关闭方式,系统正常退出时,利用AT^SMSO指令关闭TC35i模块,模块接收到AT^SMSO指令后,进行关机操作并返回^SMSO: MSOFF<CRLF>OK:当系统出现异常情况软件关闭失败时,利用TC35i模块的强制关闭功能,即TC35i模块停止响应的时间超过5秒时,在EMERGOFF强制关闭线加一个不小于3.2秒的低电平信号实现强制关机,即对PC机的串行口RTS线进行相应的操作。

结束语

本文实现了PC在TC35i GSM模块上的短信息收发功能,解决了PC启动时串行口不规则信号对模块的影响,软件实现了PC直接控制模块启动、关闭功能。短信息传输具有覆盖面广、自动传送、费用低、稳定性好等优点,正成为一种廉价、实用、高效无线数据双向传送、无线远程监测和控制的解决方案,同时结合TC35i GSM模块的系统设计结构简单,使用方便。

提醒:《基于TC35i 的PC机短信息收发模块》最后刷新时间 2024-03-14 01:09:08,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于TC35i 的PC机短信息收发模块》该内容的真实性请自行鉴别。