📄 appsjk.lst
字号:
466 { if(read_ATMEL24C64(0x10,JCK_INF ,tmp4)!=OK) {fp=1;goto gobreak;} }
467 if(ValidJCKINF(tmp4)!=OK){fp=1;goto gobreak;}
468 for(j=0;j<5;j++) tmp1[j]=0xee; //读卡号
469 memcpy(tmp1+5,tmp4+8,3);
470 z=0;
471 memcpy(buffer+z*8,tmp1,8);
472 z++;
473 display ( 1, " ");
474 CZJH=tmp1[5]+(unsigned long)tmp1[6]*256+(unsigned long)tmp1[7]*0x10000l; //显示卡号
475 sprintf(str,"司机编号:%02lu",CZJH);
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 9
476 display ( 1, str);
477 memcpy(buffer+z*8,tmp4,8);
478 z++;
479 money=0;
480 mon=0;
481 if (many_card==0){display ( 3, "卡上金额:0");goto gobreak2;}
482 display(3,"100% ");
483 cs=0;
484 for(x=0;x<many_card;x++) //读流水账
485 {
486 if (read_ATMEL24C64(0x8,JCK_DATA+x*8 ,tmp1)!=OK) {fp=1;goto gobreak;}
487 if (ValidFlow(tmp1)!=OK){if(_CheckCardIn()!=OK){fp=1;goto gobreak;}}//校验
488 else
489 {
490 if (tmp1[0]==0xA0) //车载机号
491 {
492 _Display ( 0,1, " ",16);
493 CZJH=tmp1[1]+tmp1[2]*256;
494 sprintf(str,"车载机号:%02lu ",CZJH);
495 _Display(0,1,str,16);
496 memcpy(buffer+z*8,tmp1,8);
497 z++;
498 }
499 else if (tmp1[0]==0xA1) //时间
500 {
501 memcpy(buffer+z*8,tmp1,8);
502 z++;
503 }
504 else if (tmp1[0]==0xA2) //单价
505 {
506 if((tmp1[1]<101)&&(tmp1[1]>4))price=tmp1[1];
507 memcpy(buffer+z*8,tmp1,8);
508 z++;
509 }
510 else if (tmp1[0]==0x0)//((tmp1[0]==0x0)&&(memcmp(tmp1,tmp5,strlen(tmp5))!=0))
511 {
512 fp1=0;
513 for(y=0;y<z;y++)
514 {
515 if(memcmp(buffer+y*8,tmp1,8)==0)
516 {_Display(0,2,"卡上有重复数据 ",16);fp1=1,y=z;}
517 }
518 if(fp1!=1)
519 {
520 money=money+price;mon=money/10.0;
521 memcpy(buffer+z*8,tmp1,8);
522 z++;
523 }
524 }
525 else
526 {
527 memcpy(buffer+z*8,tmp1,8);
528 z++;
529 cs++;
530 }
531 if(z>99)
532 {
533 WriteLen(len+z);
534 out=z*8;
535 beginadd=len*8;
536 i=WriteLSZ(buffer,beginadd,out);//in:开始地址 out:数据长度
537 len=len+z;
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 10
538 z=0;
539 }
540 // _PORT_Init ();
541 // sprintf(str,"卡上金额:%1.1f ",mon);
542 // _Display(0,2,str,16);
543 // sprintf(str,"总次数:%02d ",cs);
544 // _Display(0,3,str,16);//TTTTTTTT
545 xx=x;
546 yy=many_card;
547 zz=99l-((xx*100l)/yy);
548 sprintf(str,"%02lu%% ",zz);
549 display ( 3,str);
550 }
551 }
552 display ( 3, "00% ");
553 if (z!=0)
554 {
555 WriteLen(len+z);
556 out=z*8;
557 beginadd=len*8;
558 i=WriteLSZ(buffer,beginadd,out);
559 len=len+z;
560 }
561 gobreak:
562 if (fp==1)
563 {_Clr();display ( 2, "读卡出错 ");BELL(60,4);display ( 3, "请按确认键重读");
564 key=_getkeyb();
565 if (key==KEY_ENTER) goto gostart; else {_AT24C64_PowerOff();return;}
566 }
567 if (fp==0)
568 {
569 tmp4[0]=0; tmp4[1]=0; tmp4[4]=0; tmp4[5]=0; tmp4[2]=0xff; tmp4[3]=0xff;
570 _Calc_crc(CRC16,0x6,tmp4,tmp4+6);
571 wit=write_ATMEL24C64(0x8,JCK_FAT ,tmp4);
572 i=0;
573 if(wit !=OK)
574 {
575 for(i=0;i<10;i++){wit=write_ATMEL24C64(0x8,JCK_FAT ,tmp4); if (wit==OK) break;}
576 }
577 if(write_ATMEL24C64(0x8,JCK_FATK,tmp4)!=OK)
578 {
579 for(i=0;i<10;i++){wit=write_ATMEL24C64(0x8,JCK_FATK ,tmp4); if (wit==OK) break;}
580 }
581 for(i=0;i<0x20;i++) tmp4[i]=0xff;write_ATMEL24C64(0x20,JCK_LASTINF,tmp4);
582 }
583 _FlashRead(HMDPAGE,0,8,tmp3);
584 ret1=ValidLenData(tmp3);
585 if(ret1!=OK)goto gobreak2;
586 read_ATMEL24C64(0x8,JCK_FATHMD,tmp1);
587 len1=(uint)tmp1[2]+(uint)tmp1[3]*0x100;
588 len2=(uint)tmp3[2]+(uint)tmp3[3]*0x100;
589 if(len1>=len2) goto gobreak2;
590 display ( 4, "正在下传黑名单 ");
591 // sprintf(str,"版本号=%d ");
592 // display(1,"版本号=%d ",len2);
593 write_ATMEL24C64(0x8,JCK_FATHMD,tmp3);
594 write_ATMEL24C64(0x8,JCK_FATHMDK,tmp3);
595 for (i=0;i<5;i++)
596 {
597 _FlashRead(HMDPAGE,i*16+8,16,tmp3);
598 write_ATMEL24C64(16,JCK_HMDDATA+16*i,tmp3);
599 write_ATMEL24C64(16,JCK_HMDDATAK+16*i,tmp3);
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 11
600 // display(2,"%x/%x/%x/%x ",(uint)tmp3[0],(uint)tmp3[1],(uint)tmp3[2],(uint)tmp3[3]);
601 // display(3,"%x/%x/%x/%x ",(uint)tmp3[4],(uint)tmp3[5],(uint)tmp3[6],(uint)tmp3[7]);
602
603 // display(2,"%x/%x/%x/%x ",(uint)tmp3[8],(uint)tmp3[9],(uint)tmp3[10],(uint)tmp3[11]);
604 // display(3,"%x/%x/%x/%x ",(uint)tmp3[12],(uint)tmp3[13],(uint)tmp3[14],(uint)tmp3[15]);
605 }
606 gobreak2:
607 _Display (0, 3, "录入完成 ",16);
608 _getkeyb();
609 _AT24C64_PowerOff();
610 return;
611 }
612
613 uchar Test_CheckBuf(int len,uchar *buf)
614 {
615 uchar crc[2];
616 int last_r;
617 last_r=len;
618
619 if(last_r>0)
620 {
621 if((last_r<7)||(last_r==0xff)) //if receve_bytes < 7 means communiaction is fail protocal
622 { return CC_ERROR;}
623 else
624 {
625 if((buf[0]!=0xA0)||(buf[1]!=0x93)||(buf[3]!=(last_r-6))) return CC_NO;
626 _Calc_crc(CRC16,buf[3]+2,&buf[2],crc);
627 if((buf[last_r-2]!=crc[0])||(buf[last_r-1]!=crc[1])) return CC_ERROR;
628 switch(buf[4])
629 {
630 case CC_RFLOW: // Read FLOW.
631 if (last_r!=7) return CC_ERROR;
632 return CC_RFLOW;
633 }
634 return CC_ERROR;
635 }
636 }
637 }
638 void text_upload()
639 {
640 uchar page;
641 ulong i,len1;
642 long len;
643 //int len2;
644 uint beg_addr,j,x;
645 uchar xdata tmp1[0x20],buffer[36],crc[2],key,uret,str[30];
646
647 _pRecBuf=0;i=0;x=0;_Clr();
648 do {
649 _Display(0,1,"正在连接主机 ",16);
650 _Display(0,2,"按取消键退出 ",16);
651 key=_GetKey(111);
652 if(key==KeyB_No)return;
653 len=_Read232(16,tmp1,500);
654 uret=Test_CheckBuf(len,tmp1);
655 }while ( uret != CC_RFLOW );
656 _Clr();
657 len=ReadLen();
658 len=100;
659 if(len<0){_Display(0,1," 内存错误 ",16); _GetChar(); return;}
660 if(len==0) {
661 _S232Buf[CC_ADDRINF]=CC_RFLOW;
C51 COMPILER V6.23a APPSJK 09/03/2004 16:11:25 PAGE 12
662 _ComS232(1);
663 _Display(0,1,"POS机内无数据 ",16);_GetChar();return; }
664 else
665 {
666 _Display(0,1,"正在上传 ", 16);
667 len1=len % 2;
668 if(len1==0)len=len/2;
669 else len=len/2+1;
670 _oo232(0xa0);_oo232(0x93);
671 buffer[0]=0;buffer[1]=0;buffer[2]=CC_RFLOW;
672 buffer[3]=(uchar)(len*32l%0x100l);
673 buffer[4]=(uchar)(len*32l/0x100l);
674 buffer[5]=(uchar)(len*32l/0x10000l);
675 _os232(buffer,6);
676 _Calc_crc(CRC16,6,buffer,crc);
677 for (i=0;i<len;i++)
678 {
679 for(j=0;j<32;j++){page=(i*32+j)/64000+LSZPAGE;beg_addr=(i*32+j)%64000;buffer[j]=_FlashByteRead(page ,beg
-_addr );}
680 _os232(buffer,32);
681 re_crc(crc,buffer,32, crc);
682 x=(i*100)/len;
683 sprintf(str,"%02d%% ",x);
684 _Display(8,1,str,16);
685 }
686 _os232(crc,2);
687 _Display(0,1,"正在上传100% ",16);
688 _Clr(); _Display (0, 1, "上传完成 ",16); _GetChar();
689 }
690 }
691 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1671 ----
CONSTANT SIZE = 450 ----
XDATA SIZE = 4 130
PDATA SIZE = ---- ----
DATA SIZE = 1 23
IDATA SIZE = 1 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -