GSMGPR基于SIM900A的应用与实现 - 图文(5)

2019-05-18 12:59

图4.3 TCP连接相关设置

图4.3 监听端检测到请求连接成功

步骤二:通过串口发送相应AT命令控制SIM900A模块进行TCP连接。此处需要进行GPRS模块工作的相关设置,设置网络,设置协议,设置接入点等等,并向对方IP发起连接。相关AT命令解释详见表2。当监听端收到GPRS模块端发来的连接请求,进行连接,连接成功后可以在监听端观察到GPRS模块所获得的临时IP地址117.136.5.217(该地址为辽宁移动所有)。

AT命令AT+CGCLASS=\命令解释GPRS移动台类别,B代表终端支持包交换和数据交换将终端附着GPRS业务设置为GPRS连接模式建立TCP连接,参数为对方IP与端口号发送数据 AT+CGDCONT=1,\定义PDP上下文,设置互联网协议,接入点AT+CGATT=1AT+CIPCSGP=1,\AT+CIPSTART=\67.200\AT+CIPSEND 表2 TCP数据传输相关设置命令 19

图4.4 数据发送成功

步骤三:发送数据。在此,我们发送数据“This is a test for Mobile communication technology!”,在接收端可以看见,收到了该数据,从而实现了TCP数据传输。数据传输完毕发送AT命令:AT+CIPCLOSE断开连接,结束传输过程。

此外,本人进行了单片机与SIM900A模块通信的实验,单片机控制SIM900A发送数据,连续发送一天,经过实验结果证明,TCP数据传输有效性基本为100%,由于数据量巨大,在此不予列举。仅提供实验程序,详见附录1。

20

附录1:CC2430控制SIM900A实现TCP相关主要程序

#include #include \#include \#include \

//建立tcp连接

/*

//关闭tpc连接 void AT_CLOSE() {

halUart0SendData(\}

//发送数据

void AT_CIPSEND(BYTE* text) {

BYTE len=strlen(text);

halUart0SendData(\ halUart0SendData(text,len); halUart0SendData(\ }

//查询数据传输状态 void AT_CIPACK() {

halUart0SendData(\ACK\\r\\n\}

//设置本地端口

void AT_CLPORT(BYTE a) {

BYTE b = strlen(a);

halUart0SendData(\\,16);

halUart0SendData(a,b);

halUart0SendData(\

21

}

//激活移动场景 void AT_CIICR() {

halUart0SendData(\ }

//关闭移动场景 void AT_CIPSHUT() {

halUart0SendData(\ }

//获得本地ip void AT_CIFSR() {

halUart0SendData(\}

//查询连接状态

void AT_CIPSTATUS() {

halUart0SendData(\); }

//配置域名服务器DNS

void AT_CDNSCFG(BYTE* dns) {

BYTE a = strlen(dns);

halUart0SendData(\ halUart0SendData(dns,a); halUart0SendData(\}

//域名解析

void AT_CDNSGIP(BYTE* domain) {

BYTE a=strlen(domain);

halUart0SendData(\ halUart0SendData(domain,a); halUart0SendData(\}

//设置自动发送时间(0未设置, 1设置;time 001-100,)

void AT_CIPATS_NotAutoSend(BYTE mode) {

halUart0SendData(\ halUart0SendData(mode,1); halUart0SendData(\}

void AT_CIPATS(BYTE mode,BYTE time) {

halUart0SendData(\ halUart0SendData(mode,1); halUart0SendData(time,3); halUart0SendData(\}

//配置为服务器(0关闭,1开启; port 00001-65535)

void AT_CIPSERVER_CloseServer(BYTE mode) {

halUart0SendData(\ halUart0SendData(mode,1); halUart0SendData(\}

void AT_CIPSERVER(BYTE mode,BYTE port)

{

halUart0SendData(\

halUart0SendData(mode,1); halUart0SendData(port,5); halUart0SendData(\}

//配置tcpip应用模式(0 非透明,1 透明) void AT_CIPMODE(BYTE mode)

{

halUart0SendData(\ halUart0SendData(mode,1); halUart0SendData(\}

//配置透明传输模式(NmRetry 3-8, 2-10,SendSz 0001-1460,esc 0-1)

void AT_CIPCCFG(BYTE NmRetry,BYTE WaitTm,BYTE SendSz,BYTE esc) {

halUart0SendData(\ halUart0SendData(NmRetry,1); halUart0SendData(\ halUart0SendData(WaitTm,1); halUart0SendData(\

halUart0SendData(SendSz ,4); halUart0SendData(\ halUart0SendData(esc,1); halUart0SendData(\}

//中断通话 void ATH() {

if(strcmp(buf,\ {

halUart0SendData(\ } }

*/

#include \

void halUart0Init(UINT32 baudrate) {

IO_PER_LOC_UART0_AT_PORT0_PIN2345();

22

// baudrate should be checked before calling UART_SETUP

// but I havn't done it yet --by allbone UART_SETUP(0, baudrate, 0); // Enable receive U0CSR |= RE; }

void halUart1Init(UINT32 baudrate) {

IO_PER_LOC_UART1_AT_PORT1_PIN4567(); UART_SETUP(1, baudrate, 0); // Enable receive U1CSR |= RE; }

void uart485_Init(void)

{

IO_PER_LOC_UART1_AT_PORT1_PIN4567(); IO_DIR_PORT_PIN(2, 0, IO_OUT);

UART_SETUP(1, 2400, 0x18);//波特率2400,奇校验,停止位高低电平均可 // Enable receive U1CSR |= RE; }

void halUart0SendData(BYTE* txbuf, BYTE len) {

BYTE i;

for(i=0;i

{

UART0_SEND(*(txbuf+i));

while( U0CSR & COM_TX_ACTIVE ); } }

void halUart1SendData(BYTE* txbuf, BYTE len) {

BYTE i;

23

for(i=0;i

UART1_SEND(*(txbuf+i));

while( U1CSR & COM_TX_ACTIVE ); } }

#include \#include \

void sim900a_on(void)//1MHz {

P1_7 = 0; halWait(25); P1_7 = 1; halWait(255); halWait(255); halWait(255); halWait(255); P1_7 = 0; }

void AT_CIPSTART(void)

{

halUart0SendData(\ART=\\\\\\}

BYTE resdata[70]; uint8 resdataidx;

/************主函数部分********/ main()

{

BYTE stringlen;

halInit();//硬件初始化函数

sim900a_on(); resdataidx=0;

for(uint8 i=0;i<100;i++)

{

halWait(200); }

halUart0Init(9600); halWait(200);

resdataidx=0;

halUart0SendData(\ halWait(10);

stringlen = strlen((char *)AT_at); halUart0SendData(\ halWait(10);

stringlen = strlen((char *)AT_cgclass); halUart0SendData(AT_cgclass,stringlen); halWait(10);

stringlen = strlen((char *)AT_cgdcont); halUart0SendData(AT_cgdcont,stringlen); halWait(10);

stringlen = strlen((char *)AT_cgatt); halUart0SendData(AT_cgatt,stringlen); halWait(10);

stringlen = strlen((char *)AT_cipcsgp); halUart0SendData(AT_cipcsgp,stringlen); halWait(10);

stringlen = strlen((char *)AT_cipstart); halUart0SendData(AT_cipstart,stringlen); // halWait(20);

//halUart0SendData(\ //halWait(20); // AT_CIPSTART(); //sim900a_on(); while(1) {} }

24


GSMGPR基于SIM900A的应用与实现 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于做好村、社区“回头看”活动检查指导

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: