最近做GPRS,开始什么都不懂,摸索了近一个月吧,现在网络基本搭建好了。把经验给大家分享下,欢迎多提意见。有必要说下,我不是专业搞网络的,只是需要这些临时学习的,有很多用语只是为了方便理解。不恰当之处请见谅。
我的目标是,用STM32 采集数据,GPRS将数据上传至上位机。
一、选型。个人觉得都差不多,因为AT指令绝大部分是通用的,硬件一般就是电源、指示灯、串口通信。我用的是SIM908,补充一下,SIM100是最早的型号,后来升级为SIM300,据说快停产了要被SIM900替代。SIM908多了一个GPS。SIM300、SIM900、SIM908在短信和GPRS这些方面基本没有什么大的区别。然后是德国的那个TC系列,经典的是TC35还有华为的用的也不少。西姆公司SIM些列挺好,我只用过这个,其他听说的。呵呵呵
二、使用。这些模块可以理解为本身就是一个小的单片机可以直接和其他单片机或者电脑进行串口通信。相应的指令对应相应的反应。比我想象中的简单。
三、GPRS。 话说,这是一个重点。困然我多久。想了很多办法才解决。
我的方案是GPRS将数据上传至上位机。GPRS和电脑连接需要两个东西:1、公网IP。2、端口。
这里不得不说下公网和内网。个人理解,公网就是直接和互联网相连的网络,比如我们家里用猫上网的电脑,这些网络的IP地址都是互联网可以识别的,端口也可以自己设置或者直接用。
内网我理解为局域网。但是注意有些局域网的总机那里只有一个路由,这个还好说。但是有些网络是通过总机然后通过多层路由器一层一层往下分的。这些IP地址是不被互联网识别的,因为他们的IP地址是路由器给的。不能直接用来进行外网IP直接的通信。总机的IP地址是外网的,但是这种情况下总机需要给你的电脑分配一个端口才能用。具体操作貌似很麻烦。
还有一个移动的网络,手机上网的时候都会有IP地址,但是这个IP地址属于移动公司内部分配的,也属于内网IP,不能被外网识别。可以理解为移动公司下的一个大的局域网。呵呵
所以,两个处于互联网的东西进行通信,至少有一个IP地址是固定的而且是公网IP,这样才能在互联网中找到。那么上面说了手机的IP肯定不行啦,因为他是移动的内网。所以必须要求需要连接的电脑是固定公网IP。(其实如果是内网动态IP也有解决办法,就是绑定一个域名做动态域名解析,花生壳用的比较多。鉴于稳定性和实用性,放弃这种方法,本文不做分析,感兴趣可以自己玩玩)
重点来了,GPRS和上位机通信,办法主要有以下几种。
1、ADSL单线上网的电脑。一般这类电脑是固定的IP地址。(如果不是的话可能一两天换一次,需要改程序了)
2、局域网。但是只有一个路由器然后连接公网。这个可以对路由器设置,做一个端口映射,总机的公网IP映射到自己的电脑上。这个网上搜吧,有很多人搞这个。不过我没有试过。
3、内网。像学校、公司等都是多层局域网,而且大家遇到的困难大多都是这种。这类网络总机的公网IP是可以找到的,但是你的电脑IP地址是不被识别的,据说可以让总机给你开一个端口,貌似很麻烦,没尝试。但是遇到好多人学习也好,做产品也好碰到的大多是这种网络。是不是没有解决办法呢?
经过我苦苦思索和请教。终于找到一个非常好的解决办法!
需要的条件是:服务器!因为服务器是固定的外网IP。
方法1:GPRS和服务器通信,在服务器上写一个程序,把接收到的数据存入数据库,然后由网页读取数据上传至网页。程序是VB写的,不难,主要用到winsock控件。这一部分我们已经基本实现。
方法2:GPRS和服务器通信,假设上位机是电脑甲,电脑甲也和服务器通信(也可以用VB写程序,不难)然后,服务器收到GPRS传来的数据后保存,等电脑甲和服务器通信的时候,服务器把接收到的数据发给电脑甲。这种方法没做,但是绝对可以实现。
不知道说清楚了没,呵呵,前段时间纠结了好久,现在解决了和大家分享下。随后附上VB的一些程序希望对大家有用。
专营STM8/32
QQ 940436962
http://y-ec.taobao.com/
110132qssi6885s9zuu900.rar
(3.25 KB)
110136pm16o0pdyynsxnpk.rar
(11.61 KB)
|