📄 menuprocess.lst
字号:
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 + -