基于GPS的公交车自动报站系统的研究
现在几乎每辆公交车上都有自己的报站系统,有手动的,也有自动的。我这里就谈一下基于GPS定位的公交自动报站系统!
首先讨论一下公交车报站的几个点:进站,到站,出站。
一个公交车到达一个站点之后就有这三个状态,这三个地方播放的语音也不同!一条公交线路虽然有很多站点,但是每个站点都只有这三个状态,哪么我们就可以利用这三个状态来播放三个不同的语音,具体站点名称就根据站点号来选择语音文件!
利用GPS定位系统我们可以知道“到站”那一点的经纬度,但是我们不能使用那一个点的经纬度就报出三个语音!因此我们需要设置一个点的集合。
精度和纬度的一个集合,首先我们假设一个矩形框,当公交车进入这个矩形框之后我们就触发第一次语音播放!出站的时候就触发第三次语音。第二次语音我们可以使用公交车门的开关状态来辨认、获取其他更好的方式,这样,三次状态播放都播放完了!
每个站都有不同的电子围栏,为了使程序更加灵活,我们每个站点的电子围栏可以存放到一个配置文件里面。开机的时候读取这个配置文件就可以得到每个站点的电子围栏信息!其实公交报站的逻辑是一个很复杂的过程。
我们需要考虑上行和下行的区别、中途断电、中途返程等意外情况!这就使得报站逻辑变得很复杂了。
GPS数据接收和分析
现在使用的很多GPS模块中,从串口传递过来的数据都包含有很多中GPS数据包,每种包都包含有不同的信息,在这里,我们的报站系统只需要GPRMC包就可以实现了,因此我们需要从GPS模块接收过来的数据中提取GPRMC包出来,然后再解析这个GPRMC数据,解析出当前经纬度之后,与电子围栏想比较,当进入站点之后,就需要播报进站的语音。
在每一个站点,需要一些标志位来表示播放过的语音,或者说已经播放了那些语音!通过这些标志位,就可以使报站语音播放正常!
闲麻烦所以有些示意图片没有发上来,有需要的可以直接联系我
…………
^_^
PS:在实际的车辆运行当中,遇见了不少的问题,因为公交线路情况相当的复杂,比如中途掉头,两个站相隔很近,但是方向相反,等等
阅读(2026) | 评论(1) | 转发(0) |