⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuprocess.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 5 页
字号:
1074   2              default:
1075   2                  return NOCHANGE_MENU;
1076   2                  break; 
1077   2          }
1078   1      }    
1079          
1080          char menu43Process(char FlashLcd)
1081          {
1082   1          char key;
1083   1      
1084   1          if (FlashLcd == FLASH_SCREEN)
1085   1          {
1086   2              lcd_clear_srceen();
1087   2              display_attribute( 0,0,0 );
1088   2              display_string(sysMsg[XT_CX]);
1089   2              display_attribute( 0,1,0 );
1090   2              display_string(sysMsg[XT_GPS]);//"1-定位查询信息");//sysMsg[3]);
1091   2              display_attribute( 0,2,0 );
1092   2              display_string(sysMsg[XT_BBHCX]);
1093   2      /*        display_attribute( 0,3,0 );
1094   2              display_string(sysMsg[XT_SBHCX]);*///陈剑修改,在新版本中,终端不提供这项功能
1095   2          }
1096   1          key = get_key();
1097   1          switch (key)
1098   1          {
1099   2              case KEY_CODE_NUM1:/*GPS数据查询*/          
1100   2                  return NEXT_MENU1;
1101   2                  break;
1102   2      
1103   2              case KEY_CODE_NUM2:/*版本号查询*/
1104   2                  return NEXT_MENU2;
1105   2                  break;
C51 COMPILER V7.09   MENUPROCESS                                                           09/17/2008 16:38:53 PAGE 19  

1106   2      
1107   2              case KEY_CODE_NUM3:/*设备号查询*///陈剑修改,在新版本中,终端不提供这项功能
1108   2                 // return NOCHANGE_MENU;
1109   2                  return NEXT_MENU3;
1110   2                  break;
1111   2      /**for debug**/
1112   2              case KEY_CODE_NUM4:/*设备号查询*///陈剑修改,在新版本中,终端不提供这项功能
1113   2                 // return NOCHANGE_MENU;
1114   2                  return NEXT_MENU4;
1115   2                  break;
1116   2      /**end of debug**/
1117   2              case KEY_CODE_ESC:
1118   2              case KEY_CODE_ENTER:
1119   2                  return PREVIEW_MENU;
1120   2                  break;
1121   2      
1122   2              case KEY_CODE_NO:
1123   2                  return NOKEY_MENU;
1124   2                  break;
1125   2      
1126   2              default:
1127   2                  return NOCHANGE_MENU;
1128   2                  break;
1129   2          }
1130   1      }
1131          
1132          /*解析GPS的经、纬度数据,数组元素分别为度,分。再转化为ASCII码*/
1133          void gpsData_to_array(Int32 gps,Byte gps_str[])
1134          {
1135   1          unsigned char deg_str[5],min,sec_str[4],i,j;
1136   1          unsigned int degree,sec;
1137   1      
1138   1          degree = gps / 10000;
1139   1          min = degree % 60;/*分的整数部分*/
1140   1          sec = gps % 10000;  /*分的小数部分*/
1141   1          degree = degree / 60;/*度*/
1142   1          deg_str[0] = degree / 100 + '0';
1143   1          deg_str[1] = (degree % 100) / 10 + '0';
1144   1          deg_str[2] = (degree % 100) % 10 + '0';
1145   1          if (deg_str[0] == '0')
1146   1              deg_str[0] = ' ';
1147   1          deg_str[3] = min / 10 + '0';
1148   1          deg_str[4] = min % 10 + '0';
1149   1      
1150   1          sec_str[0] = sec / 1000 + '0';
1151   1          sec_str[1] = (sec % 1000) / 100 + '0';
1152   1          sec_str[2] = ((sec % 1000) % 100) / 10 + '0';
1153   1          sec_str[3] = ((sec % 1000) % 100) % 10 + '0';
1154   1      
1155   1          for (i = 0;i < 5;i ++)
1156   1          {
1157   2              gps_str[i] = deg_str[i];
1158   2          }
1159   1          gps_str[5] = '.';
1160   1          j = 0;
1161   1          for(i = 6;i < 10;i ++)
1162   1          {
1163   2              gps_str[i] = sec_str[j];
1164   2              j ++;
1165   2          }
1166   1          gps_str[10] = ' ';
1167   1          gps_str[11] = 0;
C51 COMPILER V7.09   MENUPROCESS                                                           09/17/2008 16:38:53 PAGE 20  

1168   1      }
1169          
1170          /*将速度,方向转换成ASCII码*/
1171          void velDir_to_array(unsigned int value,unsigned char num[],unsigned char flag)
1172          {
1173   1          unsigned char i;
1174   1      
1175   1          if (flag == VELOCITY)
1176   1              value = value / 100;
1177   1          else
1178   1              value = value / 10;
1179   1          num[0] = value / 100;
1180   1          num[1] = (value % 100) / 10;
1181   1          num[2] = (value % 100) % 10;
1182   1          for (i = 0;i < 3;i ++)
1183   1              num[i] = num[i] + '0';
1184   1          num[3] = 0;
1185   1      }
1186          
1187          /*仅显示GPS查询项目*/
1188          void display_gpsItem()
1189          {
1190   1          display_attribute( 0,0,0 );
1191   1          display_string(sysMsg[XT_DJ]);
1192   1          display_attribute( 0,1,0 );
1193   1          display_string(sysMsg[XT_BW]);
1194   1          display_attribute( 0,2,0 );
1195   1          display_string(sysMsg[XT_FX]);
1196   1          display_attribute( 10,2,0 );
1197   1          display_string(sysMsg[XT_ZT]);
1198   1          display_attribute( 0,3,0 );
1199   1          display_string(sysMsg[XT_SD]);
1200   1          display_attribute( 8,3,0 );
1201   1          display_string("km/h");
1202   1      }
1203          
1204          /*显示GPS查询数据*/
1205          void display_gpsData(GPS_DATA *gps)
1206          {
1207   1          long vel;
1208   1          unsigned char jingdu_str[12],weidu_str[12],spd_num[4],dir_num[4],star_num[3];
1209   1      
1210   1          vel = (gps->speed*18)/10;
1211   1          gpsData_to_array(gps->longitude,jingdu_str);
1212   1          gpsData_to_array(gps->latitude,weidu_str);
1213   1          velDir_to_array(vel,spd_num,VELOCITY);
1214   1          velDir_to_array(gps->direction,dir_num,DIRECTION);
1215   1      
1216   1          //显示经度   
1217   1          display_attribute( 5,0,0 );
1218   1          display_string(jingdu_str);
1219   1          //显示纬度
1220   1          display_attribute( 5,1,0 );
1221   1          display_string(weidu_str);
1222   1          //显示方向
1223   1          display_attribute( 5,2,0 );
1224   1          display_string(dir_num);
1225   1          //显示状态
1226   1          if (gps->valid == 0)
1227   1          {
1228   2              display_attribute( 15,2,0 );
1229   2              display_string("V");
C51 COMPILER V7.09   MENUPROCESS                                                           09/17/2008 16:38:53 PAGE 21  

1230   2          }
1231   1          else
1232   1          {
1233   2              display_attribute( 15,2,0 );
1234   2              display_string("A");
1235   2          }
1236   1          //显示速度
1237   1          display_attribute( 5,3,0 );
1238   1          display_string(spd_num);
1239   1          //显示收星数目
1240   1          display_attribute( 13,3,0 );
1241   1          star_num[0] = ((gps->numbers) / 10) + '0';
1242   1          star_num[1] = ((gps->numbers) % 10) + '0';
1243   1          if (star_num[0] == '0')
1244   1              star_num[0] = ' ';
1245   1          star_num[2] = 0;
1246   1          display_string(star_num);
1247   1      }
1248           
1249          /*查询GPS数据菜单*/
1250          char search_gpsData(char FlashLcd)
1251          {
1252   1          char key;
1253   1          static Byte gps_1s;
1254   1          GPS_DATA *gps_data;
1255   1          
1256   1          if (FlashLcd == FLASH_SCREEN)
1257   1          {
1258   2              gps_1s = 0;
1259   2              lcd_clear_srceen();
1260   2              display_gpsItem();
1261   2          }                  
1262   1          if (0 == gps_1s)
1263   1          {
1264   2              //重新获取GPS数据并显示
1265   2              get_gps_data(&gps_data);
1266   2              display_gpsData(gps_data);  
1267   2          }
1268   1          
1269   1          gps_1s++;
1270   1          if (4 == gps_1s)
1271   1              gps_1s = 0;
1272   1          key = get_key();
1273   1          switch (key)
1274   1          {
1275   2              case KEY_CODE_ESC:
1276   2              case KEY_CODE_ENTER:
1277   2                  gps_1s = 0;
1278   2                  return  PREVIEW_MENU;
1279   2                  break;
1280   2      
1281   2              case KEY_CODE_NO:
1282   2                  return NOKEY_MENU;
1283   2                  break;
1284   2      
1285   2              default:
1286   2                  return NOCHANGE_MENU;
1287   2                  break;
1288   2          }
1289   1      }
1290             
1291          //显示版本号
C51 COMPILER V7.09   MENUPROCESS                                                           09/17/2008 16:38:53 PAGE 22  

1292          //flag是区分显示主机版本号,终端版本号
1293          void display_versionNum(Uint8 *pBcd,char len)
1294          {
1295   1          char ascii[8],verNum[14];
1296   1      
1297   1          bcdArray_to_asciiArray(pBcd,ascii,len);
1298   1          verNum[0] = ascii[0];
1299   1          verNum[1] = ascii[1];
1300   1          verNum[2] = '-';
1301   1          verNum[3] = ascii[2];
1302   1          verNum[4] = ascii[3];
1303   1          verNum[5] = '-';
1304   1          verNum[6] = ascii[4];
1305   1          verNum[7] = ascii[5];
1306   1          verNum[8] = ' ';
1307   1          verNum[9] = ' ';
1308   1          verNum[10] = ascii[6];
1309   1          verNum[11] = '.';
1310   1          verNum[12] = ascii[7];
1311   1          verNum[13] = 0;
1312   1      
1313   1          display_attribute( 0,1,0 );
1314   1          display_string(verNum);
1315   1      }
1316          
1317          /*版本号查询菜单*/
1318          char search_versionNum(char FlashLcd)
1319          {
1320   1          char key;
1321   1          Byte pBuf[4];
1322   1      
1323   1          if (FlashLcd == FLASH_SCREEN)
1324   1          {
1325   2              lcd_clear_srceen();
1326   2              display_attribute( 0,0,0 );
1327   2              display_string(sysMsg[25]);
1328   2              get_device_info(pBuf);
1329   2              display_versionNum(pBuf,4);
1330   2          } 
1331   1          key = get_key();
1332   1          switch (key)
1333   1          {
1334   2              case KEY_CODE_ESC:
1335   2              case KEY_CODE_ENTER:
1336   2                  return PREVIEW_MENU;
1337   2                  break;
1338   2      
1339   2              case KEY_CODE_NO:
1340   2                  return NOKEY_MENU;
13

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -