上位机如何接收数据怎么检测如何收到了GPRS数据

6588人阅读
随手记(18)
请问GPRS模块与Internet上主机的连接、数据传输过程
虽然按照GPRS模块的说明文档能够通过内嵌TCP/IP实现数据的传输,但是对GPRS模块和主机之间的连接关系了解得不是很多。有谁可以介绍一下GPRS模块和一台Internet主机之间的连接、数据传输的详细过程。
------解决方案--------------------
首先Internet主机需要做端口映射,及对应外网的IP的某个端口即为该Internet主机,打开服务器软件;
其次,GPRS模块在知道Internet主机的外网地址和映射端口号的情况下,建立网络连接.模块连接的IP及端口,网络会默认是和该Internet主机建立的连接.
再由PPP协议、TCP/IP协议等等,保证连接的建立和数据的发送和接受。
------解决方案--------------------
实际上GPRS DTU上实现的协议栈是TCP/IP Over PPP。我们在使用时必须要有一些相应的概念。因此在下面我们就与SARO-1010P使用相关的一些事项作一些简要的说明,如果您想详细了解这些协议,请参见相关书籍:
  1. 每一次SARO-1010P拨ATD*99***1#(或ATD*99***1#)之后其实都在采用PPP协议和移动的接入设备(一般是移动公司的一台特殊的GGSN路由器)进行握手,当PPP协议握手成功后,SARO-1010P都会获得一个动态IP地址。一般来说,每一次SARO-1010P下线后(挂断连接或者直接断电后)在重新进行拨号和PPP握手后取得的动态IP地址都是不一样的。但是移动公司可以通过为客户开通特定的APN和发行特殊的SIM卡,使得用这张SIM卡获得的动态IP地址每一次都不变。也就是说可以做到SIM卡和IP地址绑定。
  2. 我们在做测试时,应当注意到如下事实:在采用公网的Apn(“cmnet”)的条件下,如果我们用SARO-1010P主动向公网上的一个静态公网IP地址发起TCP连接,只要这个公网上的机器确实有侦听相应的端口,这样是可以连上的;但是相反地,如果是由公网上的静态IP向SARO-1010P动态获得的IP地址主动发起的TCP连接将不会成功。这个现象的原因是:实际上SARO-1010P获得的动态IP地址是移动的一个特殊的内部网段上的地址,这个特殊内部网段里的地址如果要和外部网(公网)的地址进行TCP通信,必须通过一个类似于TCP代理(或者NAT)的设备进行通信的转发。换句话说,这个动态地址对于网络上的其他机器来说是不可访问的。
  3. 标准AT命令+CGDCONT的主要作用是指定Apn。Apn是Access Point Name(访问接入点)的缩写,移动通过开通特殊的Apn为行业客户提供Vpn(Virtual Private Net)服务。比如说,如果是要上公网(Internet),应当使用“cmnet”作为Apn。又如,某企业向移动公司申请了Vpn服务,移动公司为其开通了一个Apn为“hxsw.gd”,则我们就应当用这个Apn来设置Gprs模块,格式如下:
  AT+CGDCONT=1,“IP”,“hxsw.gd”
  4. 确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是SARO-1010P为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(SARO-1010P在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。&&
  5. 使用TCP协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段:
  1).连接建立阶段:
  连接的建立又有主动连接和被动连接之分,一般来说客户机都是主动发起连接的,而服务器是被动接受连接的。
  所谓的主动连接是指本方主动向远端发起连接请求, 而被动连接指的是本方侦听一个端口,等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。
  在连接成功,切换到数据态后,我们可以通过OPEN命令帧控制SARO-1010P 进行主动连接。当然,连接时要指定对方的IP地址和端口号。至于被动连接,SARO-1010P也可以支持,目前的程序只支持侦听一个端口。对方主动连接(SARO-1010P被动连接)成功后将建立一条新的通信连接,SARO-1010P将把这个被动连接成功的事件通知给上位机。
  2).数据收发阶段:
  当一条连接建立之后,我们就可以在这条连接上进行数据收发了。
  我们可以使用SEND命令帧控制SARO-1010P进行数据发送。当然,发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。
  对于对方发送过来的数据,SARO-1010P首先将其存储在自身的数据缓冲区中,然后将数据已到达此事件通知给上位机,上位机读取到数据已到达事件后,应当及时使用RECV命令帧控制SARO-1010P将相应连接上的所有数据通过串口读出,当数据读出后,这些数据原先占用的数据缓冲区空间将会被释放。注意,由于SARO-1010P的数据缓冲区有限(总量仅有25K
Bytes),所以,对于对方发来的数据,上位机一定要及时读出,否则数据越积越多,可能会导致数据缓冲区溢出,丢失数据。
  3).挂断连接阶段:
  当一条连接上的所有数据都已经收发完成了,不再需要这条连接时,就可以把连接给挂断了。
  和连接建立阶段相类似,挂断也分为主动挂断和被动挂断。
  我们可以使用RSET命令帧控制SARO-1010P进行连接的主动挂断。
  如果连接被对方主动挂断,SARO-1010P将会把这个事件通知给上位机进行处理。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:405046次
积分:4688
积分:4688
排名:第5058名
原创:41篇
转载:193篇
评论:143条
(1)(5)(6)(8)(1)(7)(6)(2)(1)(1)(8)(1)(1)(2)(5)(1)(2)(1)(4)(9)(5)(1)(4)(3)(3)(2)(1)(1)(1)(2)(1)(2)(6)(5)(3)(1)(4)(3)(2)(6)(11)(5)(1)(8)(2)(1)(3)(6)(5)(1)(3)(5)(3)(3)(5)(1)(10)(14)(9)(4)(3)(1)(1)(1)查看:2426|回复:1
求源码,想做着学学2011年8月 C/C++大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。查看: 5124|回复: 28
SIM900a_GPRS模块只能发送一次数据,请教为什么
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
我使用的GPRS模块有好使的程序,之前都管用。可就从端午节放假开始之后到今天6月3号,这个就不好使了。不管是用STM32控制模块,还是用电脑串口助手直接控制都不管用,只能发送一次数据,发送第二次就发不出去了。用AT+CIPATATUS测的结果是connect OK的,而且也可以通过ATD10086;打电话,就是不能GPRS发送数据了,发送其他AT指令都是正常反应。就是发AT+CIPSEND出现&之后发数据,然后再发Ctrl+z,网络助手收不到数据,整个过程就是卡在了Ctrl+z。然后我发AT+CIPCLOSE=1,这时就会出现奇迹,前面想要发送的数据一股脑的都发过来了,不知道怎么解释,这难道是因为移动网络的问题?另外我换过手机卡测试过,也换过其他的原子哥的SIM900a_GPRS模块测试过,都是一样的情况。为什么,请大家指点指点。毕设就要实物效果验证了,不能因为其他原因或是网络原因一会管用一会不管用啊。。。。。。
下面是我实验用的配置
AT+CIPSHUT
AT+CGCLASS="B"
AT+CGDCONT=1,"IP","CMNET"
AT+CGATT=1
AT+CIPCSGP=1,"CMNET"
AT+CIPHEAD=1
AT+CLPORT="TCP","8080"
AT+CIPSTART="TCP","59.72.103.6","7945"
AT+CIPSTATUS
完事connect OK之后,就AT+CIPSEND,第一次完美发送,第二次,第三次,,,Ctrl+z之后网络助手是没有显示的,,,
回复【6楼】dong__dong:
---------------------------------
&那你旺旺联系下我们,直接连接我们的电脑试试吧。
主题帖子精华
在线时间559 小时
回复【6楼】dong__dong:
---------------------------------
&那你旺旺联系下我们,直接连接我们的电脑试试吧。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
在线时间559 小时
用什么助手发送的?
直接发送0X1A试试(代替CRTL+z)。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 77, 距离下一级还需 123 积分
在线时间7 小时
换短一点的杜邦线,多共几次地试试!
主题帖子精华
新手上路, 积分 27, 距离下一级还需 23 积分
在线时间0 小时
原子哥,小弟昨天刚拿到你的GPRS模块,只是里面都是寄存器写的,以前都是用库函数写的程序,所以现在看起来很不习惯,请问原子哥是否有库函数版本的,专门针对你的那个GPRS模块的呢?有的话还望发一份给我哈!!!,万分感谢!!!!
主题帖子精华
在线时间559 小时
回复【4楼】kevins_chen:
---------------------------------
没有哦.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
原子哥,上面所有的方法我都试过了,都不管用的,用战舰板原装程序也试过,都是一样的效果。我感觉是不是应该有可能是我们学校网络对这些东西进行封杀的问题呢,应该不会是移动网络升级了吧?不知道别的地方的这个实验现在进行的怎么样
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
回复【7楼】正点原子:
---------------------------------
恩,原子哥,和您那边连上了就可以连续发送了,这该是我们学校的网络的问题吗?
主题帖子精华
在线时间559 小时
回复【8楼】dong__dong:
---------------------------------

我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
回复【8楼】dong__dong:
---------------------------------
您好,我的问题和你的是一摸一样的,您是怎么解决的呢?
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
回复【9楼】正点原子:
---------------------------------
原子哥,您的旺旺是?我也是这个问题,情况完全相同,请您也帮我看一下可以吗?谢谢了
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
回复【10楼】hahafyd:
---------------------------------
吉大的网对应该是对数据的接收和转发进行了限制,做这个实验只能用其他地方的网。比如网吧。
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
回复【12楼】dong__dong:
---------------------------------
您是吉大通信的吗?怎么解决验收时候的问题呢?
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
回复【9楼】正点原子:
---------------------------------
原子哥,请问公网的IP一般都是哪里的?网吧?家里的宽带连接是吗?
主题帖子精华
在线时间559 小时
回复【14楼】hahafyd:
---------------------------------
我们教程有详细的方法.
其实很简单:
1,百度IP,百度会告诉你一个IP,这就是你的公网IP.
2,如果没有经过路由器,就看你电脑的IP,是不是这个IP?如果电脑经过路由器,就看路由器的WAN&IP是不是这个?
3,如果2得到的IP和1的不一样.
那么恭喜你,你没有独立的公网IP....
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
原子哥,我百度IP138得到的是
02eb94eb099b11436cdc490_253.jpg (0 Bytes, 下载次数: 0)
22:54 上传
,而我的WAN地址是59.72.100.19,这就是说我的电脑不能进行GPRS通信了吗?
主题帖子精华
在线时间559 小时
回复【16楼】hahafyd:
---------------------------------
yes
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间0 小时
回复【17楼】正点原子:
---------------------------------
原子哥,在网吧可以进行GPRS实验吗?
主题帖子精华
在线时间559 小时
回复【18楼】hahafyd:
---------------------------------
不可以
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 421, 距离下一级还需 79 积分
在线时间6 小时
回复【19楼】正点原子:
-----------------------------弄一张手机卡&应该可以进行GPRS通信吧。
闷鱼闷闷不乐吃焖鱼
主题帖子精华
在线时间559 小时
回复【20楼】闷鱼:
---------------------------------
可以
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 421, 距离下一级还需 79 积分
在线时间6 小时
回复【21楼】正点原子:
---------------------------------
前面说的公网IP通信,是指不使用手机卡么?
闷鱼闷闷不乐吃焖鱼
主题帖子精华
在线时间559 小时
回复【22楼】闷鱼:
---------------------------------
要用手机卡,另外你电脑还得&有公网IP.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 421, 距离下一级还需 79 积分
在线时间6 小时
回复【23楼】正点原子:
---------------------------------
租用了阿里的云服务器,这个IP地址应该是公网IP吧
闷鱼闷闷不乐吃焖鱼
主题帖子精华
在线时间559 小时
回复【24楼】闷鱼:
---------------------------------

我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
新手上路, 积分 27, 距离下一级还需 23 积分
在线时间0 小时
回复【25楼】正点原子:
---------------------------------
原子哥,听说办公网IP价格比较昂贵,而且我们学校这边也比较麻烦。于是,我想上位机PC端接一个GPRS模块,下位机STM32再控制一个GPRS模块,走GPRS路线进行通信传输数据,不知道这个想法是否可行?如果可行的话,那么这两个模块之间应该怎么通信呢(用你的GPRS模块)?
主题帖子精华
初级会员, 积分 173, 距离下一级还需 27 积分
在线时间0 小时
回复【26楼】楚天佑:
---------------------------------
顶一下!
主题帖子精华
初级会员, 积分 173, 距离下一级还需 27 积分
在线时间0 小时
其实我也想问,就是家庭或者公司的网属于公网么?
主题帖子精华
新手上路, 积分 2, 距离下一级还需 48 积分
在线时间0 小时
其实我也想问,就是家庭或者公司的网属于公网么?
公网就是在互联网里有固定的IP地址,一般宾馆,企业,网吧都是公网IP,一般家庭用的光纤宽带什么的都没有公网IP,如果想将自己的IP地址弄成公网IP你需要做DDNS动态域名映射.
实现方法可以百度一下花生壳,或者直接用大华录像机的DDNS
Powered by}

我要回帖

更多关于 上位机数据管理软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信