汽车定位系统的问题想请教一下大家?(100分)

  • 主题发起人 主题发起人 joyjoyjoy
  • 开始时间 开始时间
J

joyjoyjoy

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么发过大贴不见啦?
再发一次:
我现在要做的是在基地的软件上面,能够看到很多车在地图上面跑。
因为我手头有个汽车定位系统的软件,但是他们要开发下个版本,要调整架构。

以前他们是这样做的,基地有个硬件,已经吧汽车的位置数据取回来了。 软件的Server部分通过串口/网卡跟硬件通讯取回数据。 然后server直接负责写库,client定时扫描数据库从库里面读取最新的车辆位置数据,然后在地图上面画出来。

现在,他们想调整为SERVER跟硬件通讯,然后用socket(UDP)通讯把实时数据穿给client显示,SERVER同时也负责写数据库.

我想知道,server和client是否直接用socket(UDP)通讯还是通过数据库交换汽车最新位置信息?
现在大部分类似软件是怎么设计的呢?

因为如果是方案1,如果你的监控client端多了怎么办?100个,全部定时扫描数据库,估计速度回降低?
 
个人愚见,server和client是直接用socket(UDP)通讯还是通过数据库交换汽车最新位置信息。
 
我认为肯定是第二种方式最好了。先不说Cleint扫描数据库的效率问题,你要想到万一Client和Server之间不是C/S结构,Client如何能访问得到数据库呢?第二种方法是目前LBS市场中最常的方法了。Server管理一个Client的连接链表(用TServerSocket就可以了),当收到GPS数据时(无论是从串口还是从前置设备的TCP连接中),先写库,同时转发到合法的Client连接上。这样,只要是能跑TCP/IP的网络环境,就都能实现你的“分布式”GPS调度系统。至于你用TCP还是UDP,那就看你的网络环境了。如果环境比较恶劣,网络不太稳定,建议用UDP,不过自己要在UDP包上再编帧、合并帧、做校验等,如果是TCP,那就太简单了。
 
用TCP,数据传送安全点
 
以上2位大虾大分析很有道理:)万分感谢啦!

现在还有2个问题:
1.用UDP还是TCP? 有几个因素我想说说:客户还有2个需求,A.以后可能要做到在Internet上面用流览器eg.IE等直接查看.B.可能有防火墙隔在Server和Client间. C.另外我觉得网络环境都还好,最差的是拨号上网,D.用TCP的问题就是怕服务器端开销太大(Max 200Clients+1秒一次数据交换+100Byte的汽车位置信息), 在这些因素下,是用什么协议好呢?

2.实时检测只是这个系统中的一个部分,可能依赖比较多大还是数据库部分(客户端打印报表等).这样一来我觉得除了实时检测通讯的Server外,可能还要设计一个数据库3层结构的中间层Server,大虾觉得应该这样处理吗?是用WebService呢还是Midas?(以后可能要做网上报表)

3.如果要做网上报表和图形分析,大家有什么好的工具建议吗?eg.Crystal Report,etc???

4.还有一个数据库设计问题:由于要实时画出汽车在地图上面的情况,每辆汽车上面发回的座标数据会存入数据库中,以前做的是所有的座标数据都发回存在一张表中,这样越到后来数据查询数度越慢。大侠在数据库设计的时候有什么好办法解决这个问题否?
 
论坛是否有问题,昨天登陆不进来,大家帮忙!
 
Who could help me
 
>>我现在要做的是在基地的软件上面
給拉登做軟件?[8D][8D]
 
你可以一个月把坐标数据库存一次,从新数据库, 这样子不知可不可行.
 
你的QQ号是多少, 我们公司也在做这个系统一起研究一下如何!?
187203426
 
用Java或ActiveXForm方式可以用HTTP-SOAP方式获取服务器上的数据,这样可以绕过
防火墙而且开发简单快捷,我们做了一个ActiveXForm的从服务器获取数据,但不是GPS
数据。
 
一/我认为可以用Utp协议,因为客户不可能要不汽车位置100%的准确
有一定的误差也可
(误差的产生有可能是硬件或是网络)
二/数据量的问题,主要是看你采集的频度
一般的频度应都没有问题
(如一分钟采集一次,也就是100台车100组数据,数据库是100%能承受的)
三/我认为用数据库的方式处理好些,
过程为
A 硬件向Server传送数据
B Server把数据存入数据库
C Server通知Clients有新数据到
D 需要更新的Client从Server取数据重绘
好处是,不管有多个Client都是和Server的应用服务器打交道
应用服务器可扩展可Pool,这样也不会有多个实时的UDP传输
四/将实时数据写入一个表中,然后定期结转至历史数据表中
五/查询直接做在Web IIS 上80端口,不用考滤防火强的问题(用IntraWeb就可)
 
后退
顶部