📄 manage.lst
字号:
744 1 gyt4 tp;
745 1
746 1 I2cRead(SalerNum,1,&i);
747 1 if(i==0)return 1; //没有增加营业员,不需要登陆
748 1 InitLen[0]=0;
749 1 while(1)
750 1 {
751 2 LcdDisplay(0,56,"营业员登陆",3);//清屏后再显示
752 2 LcdDisplay(32,56,"密 码:",1);
753 2 us1=InputSalerNo();
754 2 if(us1==0)return 0;
755 2 I2cRead(us1,4,tp.str);//读取密码
756 2 if(tp.dat==0)
757 2 {
758 3 Hint(48,40,"没有这个营业员!",1);
759 3 continue;
760 3 }
761 2 InitLen[0]=0;
762 2 pwd=GetInt(32,120,0,8,1,InitLen);//输入密码
763 2 if(InitLen[0]==K_TC || InitLen[0]==0xFF)return 0;
764 2 if(tp.dat==pwd)return 1;//密码正确
765 2 Hint(48,16,"密码错误!请重新输入",1);
766 2 }
767 1 }
768
769 //-------------------------------------------------------------------------------
770
771 void Txd_9600_19200(uchar flag,uint Len,uchar *str)
772 {
773 1 if(flag)
774 1 {
775 2 COM1CS;
776 2 //UARTC;
777 2 UARTB;
778 2 if(BautRateFg == Bps19200)
779 2 UART1_Mod1_Timer2_19200;
780 2 else
C51 COMPILER V8.01 MANAGE 03/28/2006 09:49:23 PAGE 14
781 2 UART1_Mod1_Timer1_9600;
782 2 }
783 1
784 1 EA=0;
785 1 TxdNum=0;
786 1 TxdLen=Len;
787 1 while(TxdNum<TxdLen)
788 1 {
789 2 SBUF2 = str[TxdNum];
790 2 while((SCON2 & 0x02)==0);
791 2 SCON2 &= 0xFC;
792 2 TxdNum++;
793 2 }
794 1 }
795
796
797 uchar Rxd_9600_19200(uchar flag,uint Len,uchar *str)
798 {
799 1 uchar Val=0;
800 1 ulong i=0;
801 1 if(flag)
802 1 {
803 2 COM1CS;
804 2 // UARTC;
805 2 UARTB;
806 2 if(BautRateFg == Bps19200)
807 2 UART1_Mod1_Timer2_19200;
808 2 else
809 2 UART1_Mod1_Timer1_9600;
810 2
811 2 }
812 1
813 1 RxdNum=0;
814 1 RxdLen=Len;
815 1 while(RxdNum<RxdLen)
816 1 {
817 2 i=0;
818 2 while((SCON2 & 0x01)==0)
819 2 {
820 3 i++;
821 3 if(GetKey()==K_TC) return K_TC;
822 3 if(i>60000)
823 3 return 0;
824 3 }
825 2 SCON2 &= 0xFC;
826 2 str[RxdNum]=SBUF2;
827 2 RxdNum++;
828 2 }
829 1 return 1;
830 1 }
831
832 //---------------------------------------------------------------------------
833 // 联机函数
834 //return 0 : CrC Error
835 //return 1 : Crc = CS OK
836 //return 2 : Receive Overtime
837 //--------------------------------------------------------------------------
838 uchar Linking()
839 {
840 1 uint CrC,CS;
841 1 while(1)
842 1 {
C51 COMPILER V8.01 MANAGE 03/28/2006 09:49:23 PAGE 15
843 2 if(Rxd_9600_19200(1,7,RxdBuf)==K_TC) return 0;
844 2
845 2 if( RxdBuf[0]==Com0 && RxdBuf[1]==Com1 && RxdBuf[2]==0x01
846 2 && RxdBuf[3]==0x00 && RxdBuf[4]==0x05)
847 2 {
848 3 CS = 0;
849 3 CS = RxdBuf[5];
850 3 CS <<= 8;
851 3 CS |= RxdBuf[6];
852 3
853 3 CrC = CRC16(&RxdBuf[0],5);
854 3
855 3 #if Debug
856 3 if(CS == CrC)
857 3 #endif
858 3 return 1;
859 3
860 3 #if Debug
861 3 else
862 3 return 0;
863 3 #endif
864 3 }
865 2 }
866 1 // return 2;
867 1 }
868
869
870 //-------------------------------------------------------------------------
871 // 接收商品信息下载与项目信息下载与字库下载等
872 //return 0 : Command Error
873 //return 1 : OK
874 //return 2 : Receive Overtime
875 //return 3 : CrC Error
876 //-------------------------------------------------------------------------
877 uchar DownDispose(uchar *len,uchar *Command_Type,uchar *Datanum)
878 {
879 1 uchar n,CrC,CS;
880 1 while(1)
881 1 {
882 2 if(!Rxd_9600_19200(1,5,RxdBuf)) //Receive Command Head and data len
883 2 return 2; //Receive Overtime
884 2
885 2 if(RxdBuf[0]==Com0 && RxdBuf[1]==Com1
886 2 && (RxdBuf[2]==SPDown || RxdBuf[2]==XMDown || RxdBuf[2]==DSPDown
887 2 || RxdBuf[2]==DXMDown || RxdBuf[2]==ZKXW || RxdBuf[2]==ZKZW
888 2 || RxdBuf[2]==DownTC || RxdBuf[2]==BaudrateSet))
889 2 {
890 3 // n = RxdBuf[4]-5+2; //Contioue Receive other data//长度不包括本身
891 3 n = RxdBuf[4]-3; //Contioue Receive other data//长度不包括本身
892 3 if(!Rxd_9600_19200(0,n,&RxdBuf[5]))
893 3 return 2;
894 3
895 3 // crcstrlen=n(接收不函头的长度)-2(CRC长度)+5(头数据长度);
896 3
897 3 CrC = CRC16(&RxdBuf[0],n+3); //n+3 = n-2+5 2 : 接收时的CRC,在计算时不能参与
898 3 CS = 0;
899 3 CS = RxdBuf[n+3];
900 3 CS <<= 8;
901 3 CS |= RxdBuf[n+4];
902 3
903 3 #if Debug
904 3 if(CrC == CS)
C51 COMPILER V8.01 MANAGE 03/28/2006 09:49:23 PAGE 16
905 3 #endif
906 3 {
907 4 *len = n-2;
908 4 *Command_Type = RxdBuf[2];
909 4 *Datanum = RxdBuf[3];
910 4 return 1;
911 4 }
912 3 #if Debug
913 3 else
914 3 #endif
915 3 return 3;
916 3 }
917 2 return 0;
918 2 }
919 1 }
920
921
922 //-------------------------------------------------------------------------
923 // 正确执行的应答
924 //datanum : 已接收到的数据包
925 //len : 接收的数据长度
926 //Redat : 接收的数据
927 //---------------------------------------------------------------------------
928 void ACK(uchar datanum,uchar len,uchar *Redat)
929 {
930 1 uchar i;
931 1 uint CrC;
932 1 TxdBuf[0]='O';
933 1 TxdBuf[1]='K';
934 1 TxdBuf[2]=datanum;
935 1 // if(len != 0) //联机时专用
936 1 TxdBuf[3]=len+4; //命令长度不包函CRC
937 1 // else
938 1 // TxdBuf[3] = 4;
939 1 for(i=0;i<len;i++)
940 1 TxdBuf[4+i]=Redat[i];
941 1
942 1 CrC = CRC16(TxdBuf,len+4);
943 1 TxdBuf[len+4] = CrC>>8;
944 1 TxdBuf[len+5] = CrC;
945 1 Txd_9600_19200(1,len+6,TxdBuf);
946 1 }
947 //--------------------------------------------------------------------------
948 // 不能正确执行的应答
949 //ErrorCode : 错误代码
950 //---------------------------------------------------------------------------
951 void NotACK(uchar ErrorCode)
952 {
953 1 uint CrC;
954 1 TxdBuf[0]='E';
955 1 TxdBuf[1]='R';
956 1 TxdBuf[2]=0;
957 1 TxdBuf[3]=5;
958 1 TxdBuf[4]=ErrorCode;
959 1
960 1 CrC = CRC16(TxdBuf,5);
961 1
962 1 TxdBuf[5]=CrC>>8;
963 1 TxdBuf[6]=CrC;
964 1 Txd_9600_19200(1,7,TxdBuf);
965 1 }
966
C51 COMPILER V8.01 MANAGE 03/28/2006 09:49:23 PAGE 17
967 //--------------------------------------------------------------------------
968 // 请求下一包数据
969 //Redatanum : 接收的数据包序号
970 //---------------------------------------------------------------------------
971 void ApplyNexDat(uchar Redatanum)
972 {
973 1 uint CrC;
974 1 TxdBuf[0]='N';
975 1 TxdBuf[1]='P';
976 1 TxdBuf[2]=0;
977 1 TxdBuf[3]=5;
978 1 TxdBuf[4]=Redatanum;
979 1
980 1 CrC = CRC16(TxdBuf,5);
981 1
982 1 TxdBuf[5]=CrC>>8;
983 1 TxdBuf[6]=CrC;
984 1 Txd_9600_19200(1,7,TxdBuf);
985 1 }
986
987 //--------------------------------------------------------------------------
988 // 请求继续等待
989 //---------------------------------------------------------------------------
990
991
992 //void ApplyWait()
993 //{
994 // uint CrC;
995 // TxdBuf[0]='W';
996 // TxdBuf[1]='T';
997 // TxdBuf[2]=0;
998 // TxdBuf[3]=5;
999 //
1000 // CrC = CRC16(TxdBuf,4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -