我的GPS是从原子哥这买的,最近做毕设,做的是GSM和GPS汽车防盗系统,我发现GPS测量两点之间的距离要超过38.3125米才能分辨出来(也就是不在是0了),我的思路是,GPS启动完成后,用个外部中断摁键记录当前的经纬度坐标(分别sheding_jingdu,sheding_weidu来表示停车位置),然后,人工模拟汽车被移动(GPS实时获得此时的xianzai_jingdu,xianzai_weidu),并实时计算此时的位置和停车位置之间的距离。
[mw_shl_code=c,true]float GPs_count(void)
{
float MLatA,MLatB;//MlatA是设定的纬度值计算式子里的形式,同理MlatB是现在车辆的实时纬度值得计算式子里的形式
float MLonA,MLonB;//MLonA设定的经度值,东经取正数,西经取负。
float C;
MLatA=90-sheding_weidu;//设定的纬度
MLatB=90-xianzai_weidu;//现在的纬度
MLonA=sheding_jingdu;//设定的经度
MLonB=xianzai_jingdu;//设定的纬度
C=sin(MLatA)*sin(MLatB)*cos(MLonA- MLonB)+cos(MLatA)*cos(MLatB);
Distance=1000.00000*R*acosf(C)*Pi/180.00000; // 千米*1000化成米为单位
sprintf((char *)dtbuf,"Distance:%.5f %1c ",Distance,'m'); //得到经度字符串
LCD_ShowString(30,64,dtbuf,GREEN,BLACK); //显示实际停车位置和当前的车辆位置之间的距离
return Distance;
}[/mw_shl_code]
上面这个函数的由来,来源于我下面这张图,网址http://blog.csdn.net/lfqsy/article/details/6750537 ,原子哥有什么好思路么。急求,快答辩咯
一周热门 更多>