给老外写邮件请教问题关于模组的启用问题

查看: 406|回复: 6
请教关于SIM900A模块GPRS的TCP链接相关的问题
主题帖子精华
初级会员, 积分 96, 距离下一级还需 104 积分
在线时间12 小时
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//GPRS测试部分代码
const u8 *modetbl[2]={&TCP&,&UDP&};//连接模式
//tcp/udp测试
//带心跳功能,以维持连接
//mode:0:TCP测试;1,UDP测试)
//ipaddr:ip地址
//port:端口
void sim900a_tcpudp_test(u8 mode,u8* ipaddr,u8* port)
& & & & u8 *p,*p1,*p2,*p3;
& & & & u8
& & & & u16 timex=0;
& & & & u8 count=0;
& & & & const u8* cnttbl[3]={&正在连接&,&连接成功&,&连接关闭&};
& & & & u8 connectsta=0;& & & & & & & & & & & & //0,正在连接;1,连接成功;2,连接关闭;
& & & & u8 hbeaterrcnt=0;& & & & & & & & & & & & //心跳错误计数器,连续5次心跳信号无应答,则重新连接
& & & & u8 oldsta=0XFF;
& & & & p=mymalloc(100);& & & & & & & & //申请100字节内存
& & & & p1=mymalloc(100);& & & & //申请100字节内存
& & & & LCD_Clear(WHITE);&&
& & & & POINT_COLOR=RED;
& & & & if(mode)Show_Str_Mid(0,30,&ATK-SIM900A UDP连接测试&,16,240);
& & & & else Show_Str_Mid(0,30,&ATK-SIM900A TCP连接测试&,16,240);
& & & & Show_Str(30,50,200,16,&WK_UP:退出测试&&KEY0:发送数据&,12,0); & & & &
& & & & sprintf((char*)p,&IP地址:%s 端口:%s&,ipaddr,port);
& & & & Show_Str(30,65,200,12,p,12,0);& & & & & & & & & & & & //显示IP地址和端口& & & &
& & & & Show_Str(30,80,200,12,&状态:&,12,0); & & & & //连接状态
& & & & Show_Str(30,100,200,12,&发送数据:&,12,0); & & & & //连接状态
& & & & Show_Str(30,115,200,12,&接收数据:&,12,0);& & & & //端口固定为8086
& & & & POINT_COLOR=BLUE;
& & & & USART2_RX_STA=0;
& & & & sprintf((char*)p,&AT+CIPSTART=\&%s\&,\&%s\&,\&%s\&&,modetbl[mode],ipaddr,port);
& & & & if(sim900a_send_cmd(p,&OK&,500))& & & & & & & & //发起连接
& & & & while(1)
& & & & & & & & key=KEY_Scan(0);
& & & & & & & & if(key==WKUP_PRES)//退出测试& & & & & & & &&&
& & & & & & & & {&&
& & & & & & & & & & & & sim900a_send_cmd(&AT+CIPCLOSE=1&,&CLOSE OK&,500);& & & & //关闭连接
& & & & & & & & & & & & sim900a_send_cmd(&AT+CIPSHUT&,&SHUT OK&,500);& & & & & & & & //关闭移动场景
& & & & & & & & & & & && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&
& & & & & & & & }else if(key==KEY0_PRES&(hbeaterrcnt==0))& & & & & & & & & & & & & & & & //发送数据(心跳正常时发送)
& & & & & & & & {
& & & & & & & & & & & & Show_Str(30+30,80,200,12,&数据发送中...&,12,0); & & & & & & & & //提示数据发送中
& & & & & & & & & & & & if(sim900a_send_cmd(&AT+CIPSEND&,&&&,500)==0)& & & & & & & & //发送数据
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & printf(&CIPSEND DATA:%s\r\n&,p1);& & & &&&& & & & & & & & & & & & //发送数据打印到串口
& & & & & & & & & & & & & & & & u2_printf(&%s\r\n&,p1);
& & & & & & & & & & & & & & & & delay_ms(10);
& & & & & & & & & & & & & & & & if(sim900a_send_cmd((u8*)0X1A,&SEND OK&,1000)==0)Show_Str(30+30,80,200,12,&数据发送成功!&,12,0);//最长等待10s
& & & & & & & & & & & & & & & & else Show_Str(30+30,80,200,12,&数据发送失败!&,12,0);
& & & & & & & & & & & & & & & & delay_ms(500);
& & & & & & & & & & & & }else sim900a_send_cmd((u8*)0X1B,0,0);& & & & //ESC,取消发送
& & & & & & & & & & & & oldsta=0XFF;& & & &
& & & & & & & & }
& & & & & & & & if((timex%20)==0)
& & & & & & & & {
& & & & & & & & & & & & LED0=!LED0;
& & & & & & & & & & & & count++;& & & &
& & & & & & & & & & & & if(connectsta==2||hbeaterrcnt&8)//连接中断了,或者连续8次心跳没有正确发送成功,则重新连接
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & sim900a_send_cmd(&AT+CIPCLOSE=1&,&CLOSE OK&,500);& & & & //关闭连接
& & & & & & & & & & & & & & & & sim900a_send_cmd(&AT+CIPSHUT&,&SHUT OK&,500);& & & & & & & & //关闭移动场景
& & & & & & & & & & & & & & & & sim900a_send_cmd(p,&OK&,500);& & & & & & & & & & & & & & & & & & & & & & & & //尝试重新连接
& & & & & & & & & & & & & & & & connectsta=0;& & & &
& & & & & & & & & & & & & & & & hbeaterrcnt=0;
& & & & & & & & & & & & }
& & & & & & & & & & & & sprintf((char*)p1,&ATK-SIM900A %s测试 %d&&&,modetbl[mode],count);
& & & & & & & & & & & & Show_Str(30+54,100,200,12,p1,12,0);
& & & & & & & & }
& & & & & & & & if(connectsta==0&&(timex%200)==0)//连接还没建立的时候,每2秒查询一次CIPSTATUS.
& & & & & & & & {
& & & & & & & & & & & & sim900a_send_cmd(&AT+CIPSTATUS&,&OK&,500);& & & & //查询连接状态
& & & & & & & & & & & & if(strstr((const char*)USART2_RX_BUF,&CLOSED&))connectsta=2;
& & & & & & & & & & & & if(strstr((const char*)USART2_RX_BUF,&CONNECT OK&))connectsta=1;
& & & & & & & & }
& & & & & & & & if(connectsta==1&&timex&=600)//连接正常的时候,每6秒发送一次心跳
& & & & & & & & {
& & & & & & & & & & & & timex=0;
& & & & & & & & & & & & if(sim900a_send_cmd(&AT+CIPSEND&,&&&,200)==0)//发送数据
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & sim900a_send_cmd((u8*)0X00,0,0);& & & & //发送数据:0X00&&
& & & & & & & & & & & & & & & & delay_ms(20);& & & & & & & & & & & & & & & & & & & & & & & & //必须加延时
& & & & & & & & & & & & & & & & sim900a_send_cmd((u8*)0X1A,0,0);& & & & //CTRL+Z,结束数据发送,启动一次传输& & & &
& & & & & & & & & & & & }else sim900a_send_cmd((u8*)0X1B,0,0);& & & & //ESC,取消发送 & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & hbeaterrcnt++;
& & & & & & & & & & & & printf(&hbeaterrcnt:%d\r\n&,hbeaterrcnt);//方便调试代码,心跳计数器
& & & & & & & & }
& & & & & & & & delay_ms(10);
& & & & & & & & if(USART2_RX_STA&0X8000)& & & & & & & & //接收到一次数据了
& & & & & & & & {
& & & & & & & & & & & & USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;& & & & //添加结束符
& & & & & & & & & & & & printf(&%s&,USART2_RX_BUF);& & & & & & & & & & & & & & & & //发送到串口&&
& & & & & & & & & & & & if(hbeaterrcnt)& & & & & & & & & & & & & & & & & & & & & & & & & & & & //需要检测心跳应答
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & if(strstr((const char*)USART2_RX_BUF,&SEND OK&))hbeaterrcnt=0;//心跳正常
& & & & & & & & & & & & }& & & & & & & & & & & & & & & &
& & & & & & & & & & & & p2=(u8*)strstr((const char*)USART2_RX_BUF,&+IPD&);
& & & & & & & & & & & & if(p2)//接收到TCP/UDP数据
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & p3=(u8*)strstr((const char*)p2,&,&);& && && && && && &
//*****p3该变量里面现在存在的数据是什么??
& & & & & & & & & & & & & & & & p2=(u8*)strstr((const char*)p2,&:&);& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //*****p2变量里面又存在的是什么数据
& & & & & & & & & & & & & & & & p2[0]=0;//加入结束符
& & & & & & & & & & & & & & & & sprintf((char*)p1,&收到%s字节,内容如下&,p3+1);//接收到的字节数& & & & & & & & & & & & //****sprintf是把格式化的数据写入到字符串中
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //即此时p1缓存器里面的数据为&&“收到的收到%s字节,内容如下+p3+1单元里面存在的数值”
& & & & & & & & & & & & & & & & LCD_Fill(30+54,115,239,130,WHITE);
& & & & & & & & & & & & & & & & POINT_COLOR=BRED;
& & & & & & & & & & & & & & & & Show_Str(30+54,115,156,12,p1,12,0); //显示接收到的数据长度
& & & & & & & & & & & & & & & & POINT_COLOR=BLUE;
& & & & & & & & & & & & & & & & LCD_Fill(30,130,210,319,WHITE);
& & & & & & & & & & & & & & & & Show_Str(30,130,180,190,p2+1,12,0); //显示接收到的数据
& & & & & & & & & & & & }
& & & & & & & & & & & & USART2_RX_STA=0;
& & & & & & & & }
& & & & & & & & if(oldsta!=connectsta)& && &&& //这个oldsta变量定义是做什么用的呢??????????????
& & & & & & & & {
& & & & & & & & & & & & oldsta=
& & & & & & & & & & & & LCD_Fill(30+30,80,239,80+12,WHITE);
& & & & & & & & & & & & Show_Str(30+30,80,200,12,(u8*)cnttbl[connectsta],12,0); //更新状态
& & & & & & & & }
& & & & & & & & timex++;
& & & & myfree(p);
& & & & myfree(p1);
(24.32 KB, 下载次数: 0)
11:29 上传
红色箭头指向的语句有疑问
主题帖子精华
初级会员, 积分 96, 距离下一级还需 104 积分
在线时间12 小时
@原子哥 跪求原子哥指导帮忙
主题帖子精华
初级会员, 积分 96, 距离下一级还需 104 积分
在线时间12 小时
主题帖子精华
在线时间454 小时
仿真跟踪看看,你就明白 。
主题帖子精华
初级会员, 积分 96, 距离下一级还需 104 积分
在线时间12 小时
仿真跟踪看看,你就明白 。
好吧,我试试。谢谢原子哥
主题帖子精华
初级会员, 积分 59, 距离下一级还需 141 积分
在线时间12 小时
你好,请问你那个u2_printf()是怎么写的?
主题帖子精华
初级会员, 积分 96, 距离下一级还需 104 积分
在线时间12 小时
好吧,我试试。谢谢原子哥
用ST_link仿真调试的时候电脑总是提示ST_link connection error ,我从usb口拔掉再插上有的时候都能仿真进行,这样调试起来很费劲啊
Powered by新手上路,请教关于51板实现功能的问题! - 单片机论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
新手上路,请教关于51板实现功能的问题!
21:05:30  
论坛里的太专业了,看得云里雾里的
&&就想向各位大哥们请教下,我想要的功能如何才能实现
我家装修,想搞个51的板子作为控制器,负载有煤气探头 烟雾探头&&厕所 走道的红外感应!以及离家自动断开所有电路(除了监控外)
& && &还请大家帮我解答一下!万分感谢
01:08:07  
怎样的考勤系统啊,计算次数的还是其他的什么啊,不是
PCB打样找华强
样板2天出货
01:08:58  
じ☆ve等待|濃濃 发表于
怎样的考勤系统啊,计算次数的还是其他的什么啊,不是
PCB打样找华强
样板2天出货 ...
额,这个我真没看明白!
07:49:41  
这个有一定的难度。
07:53:50  
豆子十三 发表于
这个有一定的难度。
高级工程师
08:57:29  
又一个路都不会走就想着跑的人!
19:43:36  
lovezjf234 发表于
又一个路都不会走就想着跑的人!
哈哈&&版主真没说错!
不过,我是真的想学,慢慢来吧!!
Powered by查看: 478|回复: 2
请教,关于模块宝典的使用
发表于 16-10-6 09:25
买了某图2017年的模块宝典,也赠送了视频。但是有的视频的主讲老师,和宝典的编者不是一个人,数量和资料分析重合度很高,像常识,罗红军、李梦娇的视频,和书上的顺序、内容都不太一样。
请教各位是怎么处理的?只看书,或者只看视频吗?没有两者结合起来的吗?
发表于 16-10-6 14:54
先听完所有视频,理解为主,回头再跟着模块宝典书上走。
发表于 16-10-6 14:59
书是基础,视频是有针对性的讲解,书没看懂的,就去看相应的解析
GMT+8, 16-12-9 15:22
Powered by Discuz!查看: 798|回复: 2
再请教一个有关LUA模块的问题
阅读权限50
在线时间 小时
结帖率: (132/133)
1.png (4.07 KB, 下载次数: 0)
14:41 上传
如上图所示.对应脚本里面就是这样
2.png (863 Bytes, 下载次数: 0)
14:41 上传
我更改了一下,貌似就不能执行了
3.png (4.93 KB, 下载次数: 0)
14:42 上传
同样都是&等待&,也就是延时嘛...为什么我改成这样就不行了呢?上面还是取回整数型数据,而我改成直接赋值反而不行呢.难道一个小小的延时 时间 都必需要调用lua模块中的相关命令么?谢谢
时间单位是毫秒哦。你那个写100如果是100秒 这边还要乘以1000
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
阅读权限165
在线时间 小时
签到天数: 2 天结帖率: (4/4)
时间单位是毫秒哦。你那个写100如果是100秒 这边还要乘以1000
热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!
您可以选择打赏方式支持他
阅读权限50
在线时间 小时
结帖率: (132/133)
时间单位是毫秒哦。你那个写100如果是100秒 这边还要乘以1000
嗯,先谢谢.我是想问问,直接用数值应该是可以的吧.不用那个取回整数型
您可以选择打赏方式支持他
精易论坛 - 有你更精彩 /1
还在为某个APP无法抓取数据而烦恼?热门的APP快手,最新版登录数据无法抓取问题?
课程提供大量的技术和方法解决某些app无法抓取数据的问题。
还在为填表的繁琐而烦闷不已?还在为封包的速度和技巧无限纠结?
在post课程将学到QQ授权登录各类网页、QQ授权登录各类APP。JS跟踪、调试、解析等等。
海量实例,绝对物超所值!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
Powered by

我要回帖

更多关于 请教一个问题 英文 的文章

 

随机推荐