📄 appsjk.lst
字号:
223 uint chkhe=0;
224 //read FAT
225 if(read_ATMEL24C64(0x20,JCK_ROOT,tmp2)!=OK) return KZ_ERR;
226 if(read_ATMEL24C64(0x20,JCK_ROOTK,tmp3)!=OK) return KZ_ERR;
227 for(i=0;i<0x20;i++) {if(tmp3[i]!=tmp2[i]) return KZ_ERR; ;}
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 5
228 _Calc_crc(CRC16,14,tmp2,crc);
229 if((crc[0]!=tmp2[0x0e])||(crc[1]!=tmp2[0x0f])) return KZ_NOA;
230 _Calc_crc(CRC16,14,tmp2+0X10,crc);
231 if((crc[0]!=tmp2[0x1e])||(crc[1]!=tmp2[0x1f])) return KZ_NOA;
232
233 if(((kz==KZ_SJK)||(kz==KZ_SJDYK))&&((tmp2[8]!='S')&&(tmp2[8]!='D'))) return KZ_ERR;
234 //if((kz==KZ_SJDYK)&&(tmp2[8]!='D')) return KZ_ERR;
235 if((kz==KZ_TJK )&&(tmp2[8]!='T')) return KZ_ERR;
236
237 if((kz==KZ_SJK)||(kz==KZ_SJDYK))
238 {
239 for(i=0;i<4;i++)
240 {
241 jck[CC_ADDRINF+1+12+i ]=tmp2[i ]; //publishNo
242 jck[CC_ADDRINF+1+ 8+i ]=tmp2[4+i ]; //publishTime
243 jck[CC_ADDRINF+1+ 4+i ]=tmp2[10+i ]; //publishOperateSnr
244 jck[CC_ADDRINF+1+20+i ]=tmp2[0x10+i]; //DriverName1
245 jck[CC_ADDRINF+1+24+i ]=tmp2[0x14+i]; //DriverName2
246 }
247 for(i=0;i<3;i++)
248 {
249 jck[CC_ADDRINF+1+i ]=tmp2[0x18+i]; //DriverNo
250 jck[CC_ADDRINF+1+16+i ]=tmp2[0x1b+i]; //OperatorNo
251 }
252 jck[CC_ADDRINF+1+3 ]=0;
253 jck[CC_ADDRINF+1+19 ]=0;
254 }
255 if(kz==KZ_TJK)
256 {
257 for(i=0;i<4;i++)
258 {
259 jck[CC_ADDRINF+1+ 0+i ]=tmp2[i ]; //publishNo//
260 jck[CC_ADDRINF+1+ 8+i ]=tmp2[4+i ]; //publishTime//
261 jck[CC_ADDRINF+1+ 4+i ]=tmp2[10+i ]; //publishOperateSnr//
262 }
263 for(i=0;i<3;i++)
264 {
265 jck[CC_ADDRINF+1+16+i ]=tmp2[0x1b+i]; //OperatorNo//
266 }
267 jck[CC_ADDRINF+1+19 ]=0; //OperatorNo AT BYTE4=0;//
268 if(read_ATMEL24C64(0x20,JCK_PriceAddr0,tmp2)!=OK) return KZ_ERR;
269 // os232(tmp2,0x20);
270 for(i=0;i<6;i++)
271 {
272 jck[CC_ADDRINF+1+20+i]=tmp2[i+0x00];//PriceGroup1Tab
273 jck[CC_ADDRINF+1+26+i]=tmp2[i+0x08];//PriceGroup2Tab
274 jck[CC_ADDRINF+1+32+i]=tmp2[i+0x10];//PriceGroup3Tab
275 }
276 _Calc_crc(CRC16,6,tmp2 ,crc);
277 if((crc[0]!=tmp2[0x06])||(crc[1]!=tmp2[0x07])) return KZ_NOA;
278 _Calc_crc(CRC16,6,tmp2+8 ,crc);
279 if((crc[0]!=tmp2[0x0E])||(crc[1]!=tmp2[0x0F])) return KZ_NOA;
280 _Calc_crc(CRC16,6,tmp2+0X10 ,crc);
281 if((crc[0]!=tmp2[0x16])||(crc[1]!=tmp2[0x17])) return KZ_NOA;
282 }
283 return OK;
284 }
285 #endif
286 */
287
288
289 uchar ValidJCKROOT(uchar *tm)//检测CRC
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 6
290 {
291 1 uchar xdata crc[2]; //check CRC
292 1 _Calc_crc(CRC16,14,tm,crc);
293 1 if((tm[0x0e]!=crc[0])||(tm[0x0f]!=crc[1])) return NOK;
294 1 _Calc_crc(CRC16,14,tm+0x10,crc);
295 1 if((tm[0x1e]!=crc[0])||(tm[0x1f]!=crc[1])) return NOK;
296 1 return OK;
297 1 }
298 /*
299 #ifdef PRG_ValidSJKFAT
300 uchar ValidSJKFAT(uchar *tm)//检测CRC
301 {
302 uchar crc[2]; //check CRC
303 _Calc_crc(CRC16,6,tm,crc);//_oo232(0xb0),_os232(crc,2);
304 if((crc[0]!=tm[ 6])||(crc[1]!=tm[ 7])) return NOK;
305 //check range & other
306 if(tm[0]!=(tm[2]^0xff)) return NOK;
307 if(tm[1]!=(tm[3]^0xff)) return NOK;
308 if(tm[0]!=tm[4]) return NOK;
309 if(tm[1]!=tm[5]) return NOK;
310 if(((uint)tm[0]+(uint)tm[1]*256)>JCK_DATASIZE) return NOK;
311 //_oo232(0x31);
312 return OK;
313 }
314 #endif
315
316 uchar ValidJCKINF(uchar *tm)//检测CRC
317 {
318 uchar xdata crc[2]; //check CRC
319 _Calc_crc(CRC16,14,tm,crc);
320 if((tm[0x0e]!=crc[0])||(tm[0x0f]!=crc[1])) return NOK;
321 return OK;
322 }
323
324 uchar ValidTJKPRICE(uchar *tm)//检测CRC
325 {
326 uchar xdata crc[2]; //check CRC
327 _Calc_crc(CRC16,6,tm,crc);
328 if((tm[0x06]!=crc[0])||(tm[0x07]!=crc[1])) return NOK;
329 _Calc_crc(CRC16,6,tm+0X08,crc);
330 if((tm[0x0E]!=crc[0])||(tm[0x0F]!=crc[1])) return NOK;
331 return OK;
332 }
333
334 uchar hxz1,hxz2;//hxz1已读的黑匣子 hxz2未读的黑匣子
335
336 extern void port_ini();
337
338 void re_crc(uchar *crc,uchar *buffer,uint length, uchar *out)
339 {
340 uint len;
341 uchar xdata buff[35]; //max==100
342 len=length/32;
343 buff[0]=crc[0];
344 buff[1]=crc[1];
345 memcpy(buff+2,buffer,32);
346 _Calc_crc(CRC16,34,buff,out);
347
348 }
349
350 uchar ValidLenData(uchar *buff)
351 {
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 7
352 uchar xdata crc[2];
353
354 _Calc_crc(CRC16,6,buff,crc);//_oo232(0xb0),_os232(crc,2);
355 if((crc[0]!=buff[ 6])||(crc[1]!=buff[ 7])) return NOK;
356 if(buff[CC_PHPB]!=CC_PB1)return NOK;
357 if(buff[CC_PHPB+1]!=CC_PB2)return NOK;
358 return OK;
359 }
360
361 long ReadLen()
362 {
363 uchar xdata buff[9];
364 int i;
365 uint len=0;
366 for(i=0;i<8;i++) buff[i]=_FlashByteRead(3 ,i );
367 if(ValidLenData(buff)==OK) len=buff[2]+buff[3]*0x100;
368 return len;
369 }
370
371 uchar WriteLen(uint len)
372 {
373 uchar xdata tmp[20];
374 uchar i;
375
376 memset(tmp,0,8);
377 tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
378 tmp[2]=(uchar)len;
379 tmp[3]=(uchar)len>>8;
380 _Calc_crc(CRC16, 6, tmp, tmp+6);
381 i=_FlashSectormodfiy(3,tmp,0,8);
382 return i;
383 }
384
385 uchar WriteLSZ(uchar *buff,uint beginaddr, uint length)
386 {
387 uint i;
388 for(i=0;i<length;i++)
389 {
390 _FlashByteWrite(20 ,beginaddr+i ,buff[i]);
391 }
392 return OK;
393 }
394
395 uchar ValidFlow(uchar *tm)//检测CRC
396 {
397 uchar xdata crc[2]; //check CRC
398 _Calc_crc(CRC8,7,tm,crc);
399 if(tm[0x07]!=crc[0]) return NOK;
400 return OK;
401 }
402
403 void display(char line,uchar *buff)
404 {
405 _Display(0,line-1,buff,strlen(buff));
406 }
407
408 void Test_loadin()
409 {
410 uint xdata i,j,x=0,many_card,money,y=0,z=0,z1=0,out,cs;
411 long len;
412 float mon;
413 unsigned int fp=0,fp1=0,len1,len2;
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 8
414 //uchar cin=1;
415 unsigned char price=0,m1,m2,ret1;
416 unsigned long xx,yy,zz,CZJH,beginadd;//
417 uchar xdata buffer[1000],tmp5[8]={0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
418 uchar xdata tmp1[0x20],tmp2[0x20],tmp3[0x20],tmp4[0x20],str[20],key;
419 char wit;
420
421 gostart:
422 _PORT_Init ();_Clr();
423 _Display(0,1," 正在检测 ",16);
424 fp=0;
425 //len=ReadLen();
426 //if(len<0){ _PORT_Init (); _Clr(); _Display(0,1," 内存错误 ",16); _getkeyb(); return; }
427 //if(len>38000){ _PORT_Init ();_Clr();_Display(0,1," POS机已满 ",16); _getkeyb(); return;}
428 //if(len>35000){ _PORT_Init (); _Clr(); _Display(0,1," POS机将满 ",16); _getkeyb();}
429
430 do{
431 _AT24C64_Init();
432 if(_CheckCardIn()!=OK){_Display(0,1," 请插入司机卡 ",16); _delay_1ms(10);}
433 else
434 {
435 _AT24C64_PowerOn(); _delay_1ms(50);
436 if(CheckJCK()!=KZ_SJK){ _Display(0,1," 非司机卡 ",16); }
437 else break;
438 }
439 key=_GetKey(111);
440 if(key==KeyB_No){_AT24C64_PowerOff();return;}
441 }while(key!=KeyB_No);
442 _Display(0,1," OK ",16); _getkeyb(); return;
443 _Clr(); money=0; many_card=0; mon=0;
444 if(read_ATMEL24C64(0x8,JCK_FAT ,tmp1)!=OK) {fp=1;goto gobreak;}
445 if(read_ATMEL24C64(0x8,JCK_FATK,tmp2)!=OK) {fp=1;goto gobreak;}
446 m1=ValidSJKFAT(tmp1);m2=ValidSJKFAT(tmp2);
447 if((m1==OK)&&(m2==OK)) //修复卡
448 {
449 if(memcmp(tmp1,tmp2,8)!=0)
450 {if(write_ATMEL24C64(0x8,JCK_FATK,tmp1)!=OK) {fp=1;goto gobreak;}}
451 many_card=tmp1[0]+tmp1[1]*256;//many_card=tmp2[0]+tmp2[1]*256;
452 }
453 else if((m1!=OK)&&(m2==OK))
454 {
455 if(write_ATMEL24C64(0x8,JCK_FAT,tmp2)!=OK) {fp=1;goto gobreak;}
456 many_card=tmp2[0]+tmp2[1]*256;
457 }
458 else if((m1==OK)&&(m2!=OK))
459 {
460 if(write_ATMEL24C64(0x8,JCK_FATK,tmp1)!=OK) {fp=1;goto gobreak;}
461 many_card=tmp1[0]+tmp1[1]*256;
462 }
463 else {fp=1;goto gobreak;}
464 _Clr();
465 if(read_ATMEL24C64(0x10,JCK_INF ,tmp4)!=OK)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -