EDN China > 技术文章 > 通信 > 网络传输与交换 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

用IP2002器件支持GPRS的GPS系统实现

来源:电子元器件应用?? 2006年06月16日 ?? 收藏0

?????????????????????????????????? ?????? 软件结构

?????? (1)串口驱动模块

?????? 利用串口驱动模块来完成对串口的操作时,应向上层提供串口参数配置功能,并应在有数据收到或者发送完毕时通过IndicateReceive、IndicateSend回调函数向上层报告。上层软件可以调用Send、Receive来进行收发。

?????? (2)网络驱动模块

?????? 在硬件中的GPRS模块只是提供了一种硬件信道,与服务器之间的数据连接必须通过软件完成。在通信时,软件首先通过GPRS模块特有的命令(一般为AT+CCMD)与GPRS网络连接,再通过PPP协议建立数据链路,最后就可以通过TCP/IP协议与远程的服务器通信了。这一部分与网络操作的功能都放在网络驱动模块中加以实现。与串口驱动模块类似,网络驱动模块也

提供了数据传输的一些服务。 (3)桥接模块

?????? 由于串口是一个慢速连接,主机与串口的通信有时甚至是单字节操作,如果对于每一个这样小的通信都单独通过一个TCP包发送的话(譬如说一个字节的数据),这将产生一些41字节的分组,即:20字节的IP头,20字节的TCP头以及1字节的数据。如果在高速网络上(例如局域网),这一些小分组通常不会引起麻烦,但是如果在GPRS这样的网络上(平均往返时间高达数百ms),则会增加拥塞出现的可能性,并将会使网络的效率极其低。在通常的TCP/IP实现中,一般采用Nagle算法来解决这个问题。但是在Ubicom的协议栈中没有这个功能,因此,必须自己完成这个算法。考虑到对下层硬件结构的无依赖性,设计时可将其放在桥接模块中实现,而不是放在网络驱动模块中实现。在算法实现中,当有串口数据到来时,对于较小的分组,则并不立即就将其发出,而是等待一段时Ih3(200 s左右),如果在这段时间中再没有小数据到来,那么将其发出,否则将数据进行累计后发出。当然有些系统要求立即发出,那么也可以通过配置取消这种功能。经这样实现后,效率有了很大的提高,具体的效果可以参考后面的实验数据。

?????? (4)辅助模块

?????? 在上面一些模块的介绍中可以看到,其中有一些关键性的数据必须支持用户自己配置,例如串口通信速度、停止位、网络驱动模块中GPRS所要连接的APN、账户、密码、工作模式(是作为服务器运行还是客户端运行)、静态IP还是动态IP等。这一部分数据由配置模块存储在外部存储器里,每次系统启动的时候再由配置模块载人。在辅助模块中还包括一个重要的子模块:远程管理模块,它实现对GPS终端的远程管理,包括远程跟踪和远程更新程序。系统的运行情况通过统计模块进行统计,然后可以通过远程管理模块进行上报。

?????? (5)系统监控模块

?????? 对于放在远程的一个无人看管的系统来说,最重要的一点就是容错能力,必须能够在任何错误的情况下自动恢复到正常运行状态,这一部分就是通过系统监控模块实现的。在GPS终端中,经常出现的异常包括有TCP连接中断和网络连接中断,这两种错误是有区别的,解决的方法也不一样。TCP连接中断指的是TCP连接进入异常状态,不能在该连接上进行数据的收发工作。这种错误产生的原因是GPRS网络有时会进入伪死状态,而导致虽然还在网络上,但是数据的收发工作无法进行。通过在每个连接上设置一个收发超时计时器可以发现这种错误。当有数据传输时即复位计数器,如果计数器超时,则表明TCP连接中断,此时应该根据工作模式而采取不同的处理。如果是工作在客户端模式,需要再次与服务器连接,如果工作在服务器模式,则只需要简单的断开连接即可。

?????? 对于网络连接中断的情况探测起来比较困难,一般是通过监测长时间没有数据通信来判断。如果一旦发生此类错误,则需要重新进行网络的连接工作。

?????? 由于软件难免会有一些未曾发觉的错误,在发生此类错误的时候则由硬件看门电路复位系统,并且在下次软件启动时将此类错误发生过的信息远程传送到服务器。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

IP2002? GPRS? GPS?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈