📄 mss_spi.lst
字号:
693 5 default:
694 5 HandwareErr=ERROR; // MSS不能正常工作
695 5 break;
696 5 }
697 4 }
698 3 }
699 2 }
700 1
701 1 time_out=100;
702 1 do{}while(time_out!=0);
703 1 time_out=0;
704 1 return ERROR;
705 1 }
706
707 ///////////////////////////////////////////////////////////////////////////////
708 // 指纹1:1比对SPI命令处理过程
709 // 发送:VTF+管理分类+应用分类+用户编号+密码+当前时间时分
710 // 返回:VTFS成功
711 // VTFF+X失败
712 // VTFM提醒用户抬起手指
713 ///////////////////////////////////////////////////////////////////////////////
714 bit Verify()
715 {
716 1 idata uchar i; // 计数器
717 1
718 1 NewMsgNum(); // 信息号
719 1
720 1 SPIbuf[0]='V'; // 1:1匹配VTF
721 1 SPIbuf[1]='T';
722 1 SPIbuf[2]='F';
723 1
724 1 SPIbuf[3]=ManageClass; // 管理员或普通用户
725 1 SPIbuf[4]=AppClass; // 指纹或密码用户
726 1
727 1 for(i=0;i<5;i++) SPIbuf[5+i]=User_id[i];
728 1
729 1 if(AppClass=='P')
730 1 {
731 2 for(i=0;i<6;i++)
732 2 SPIbuf[10+i]=Password[i]; // 密码用户发送用户输入的密码
733 2 }
734 1 else
735 1 {
736 2 for(i=0;i<6;i++)
737 2 SPIbuf[10+i]=Password[i]; // 密码用户发送用户输入的密码
C51 COMPILER V7.07 MSS_SPI 09/14/2005 15:20:47 PAGE 13
738 2 }
739 1
740 1 read_time(); // 获取当前时间
741 1 SPIbuf[16]=cur_time[8]; // 当前用户允许进入时间
742 1 SPIbuf[17]=cur_time[9];
743 1 SPIbuf[18]=cur_time[10];
744 1 SPIbuf[19]=cur_time[11];
745 1
746 1 CommandLen=20; // 命令体长度
747 1
748 1 SendMsg(); // 发送命令
749 1 Rstwdt(); // 喂狗
750 1
751 1 if(AppClass == 'F')
752 1 {
753 2 GLCD_ClearScreen ();
754 2 GLCD_Locate(16,32);
755 2 dprintf(Putf,12); // 提示用户在传感器上按下手指
756 2 }
757 1
758 1 if(ACKReceive()!=ACK) // 收到指纹模块NAK命令,表示命令体错误或命令不能识别或通信错误
759 1 {
760 2 disperr(100); // 显示错误
761 2 }
762 1 else
763 1 {
764 2 liftget_verify:
765 2 if(SPIReceive()) // 接收DSP数据
766 2 {
767 3 Rstwdt(); // 喂狗
768 3
769 3 if(SPIbuf[SOHptr+7]=='V' && SPIbuf[SOHptr+8]=='T' && SPIbuf[SOHptr+9]=='F')
770 3 {
771 4 switch(SPIbuf[SOHptr+10])
772 4 {
773 5 case 'S': // 比对成功
774 5 pulse=1;
775 5 if(!managemode) // 管理操作不需要开门
776 5 {
777 6 switch(wieformat)
778 6 {
779 7 case 1:
780 7 normal_send(); // 自定义韦根发送
781 7 break;
782 7 case 2:
783 7 send26(); // 26位韦根
784 7 break;
785 7 case 3:
786 7 send34(); // 34位韦根
787 7 break;
788 7 default:
789 7 break;
790 7 }
791 6
792 6 GLCD_ClearScreen ();
793 6 GLCD_Locate(24,32);
794 6 dprintf(welcome,4); // 欢迎
795 6 GLCD_Locate(72,32);
796 6 dprintf(User_id,5); // 用户名
797 6 }
798 5
799 5 return OK;
C51 COMPILER V7.07 MSS_SPI 09/14/2005 15:20:47 PAGE 14
800 5 case 'M':
801 5 GLCD_Locate(16,32);
802 5 dprintf(Liftf,12); // 抬手指
803 5 goto liftget_verify;
804 5 break;
805 5 case 'F': // 错误返回
806 5 pulse=3;
807 5 if(AppClass=='P')
808 5 GLCD_ClearScreen ();
809 5
810 5 disperr(SPIbuf[SOHptr+11]);
811 5 break;
812 5 default:
813 5 HandwareErr=ERROR; // MSS不能正常工作
814 5 break;
815 5 }
816 4 }
817 3 }
818 2 }
819 1
820 1 time_out=50;
821 1 do{}while(time_out!=0);
822 1 time_out=0;
823 1 return ERROR;
824 1 }
825
826 ///////////////////////////////////////////////////////////////////////////////
827 // 指纹1:N比对SPI命令处理过程
828 // 发送:ITF+当前时间时分
829 // 返回:ITFS+用户编号,成功
830 // ITFF+X失败
831 // ITFM提醒用户抬起手指
832 ///////////////////////////////////////////////////////////////////////////////
833 bit Identify()
834 {
835 1 idata uchar i;
836 1
837 1 for(i=0;i<6;i++)User_id[i]=0; // 清用户编号
838 1
839 1 NewMsgNum(); // 信息号
840 1
841 1 SPIbuf[0]='I'; // 1:N匹配VTF
842 1 SPIbuf[1]='T';
843 1 SPIbuf[2]='F';
844 1
845 1 read_time(); // 获取当前时间
846 1 SPIbuf[3]=cur_time[8]; // 当前用户允许进入时间
847 1 SPIbuf[4]=cur_time[9];
848 1 SPIbuf[5]=cur_time[10];
849 1 SPIbuf[6]=cur_time[11];
850 1 Rstwdt(); // 喂狗
851 1
852 1 CommandLen=7; // 命令体长度
853 1
854 1 SendMsg(); // 发送命令
855 1 Rstwdt(); // 喂狗
856 1
857 1 GLCD_ClearScreen ();
858 1 GLCD_Locate(16,32);
859 1 dprintf(Putf,12); // 提示用户在传感器上按下手指
860 1
861 1 if(ACKReceive()!=ACK) // 收到指纹模块NAK命令,表示命令体错误或命令不能识别或通信错误
C51 COMPILER V7.07 MSS_SPI 09/14/2005 15:20:47 PAGE 15
862 1 {
863 2 disperr(100); // 显示错误
864 2 }
865 1 else
866 1 {
867 2 liftget_identify:
868 2 if(SPIReceive()) // 接收DSP数据
869 2 {
870 3 Rstwdt(); // 喂狗
871 3
872 3 if(SPIbuf[SOHptr+7]=='I' && SPIbuf[SOHptr+8]=='T' && SPIbuf[SOHptr+9]=='F')
873 3 {
874 4 switch(SPIbuf[SOHptr+10])
875 4 {
876 5 case 'S': // 比对成功
877 5 pulse=1;
878 5 if(!managemode) // 管理操作不需要开门
879 5 {
880 6 for(i=0;i<5;i++) User_id[i]=SPIbuf[SOHptr+11+i];
881 6 switch(wieformat)
882 6 {
883 7 case 1:
884 7 normal_send(); // 自定义韦根发送
885 7 break;
886 7 case 2:
887 7 send26(); // 26位韦根
888 7 break;
889 7 case 3:
890 7 send34(); // 34位韦根
891 7 break;
892 7 default:
893 7 break;
894 7 }
895 6
896 6 GLCD_ClearScreen ();
897 6 GLCD_Locate(24,32);
898 6 dprintf(welcome,4); // 欢迎
899 6 GLCD_Locate(72,32);
900 6 dprintf(User_id,5); // 用户名
901 6 }
902 5
903 5 return OK;
904 5 case 'M':
905 5 GLCD_Locate(16,32);
906 5 dprintf(Liftf,5);// 抬手指
907 5 goto liftget_identify;
908 5 break;
909 5 case 'F': // 错误返回
910 5 pulse=3;
911 5 disperr(SPIbuf[SOHptr+11]);
912 5 break;
913 5 default:
914 5 HandwareErr=ERROR; // MSS不能正常工作
915 5 break;
916 5 }
917 4 }
918 3 }
919 2 }
920 1
921 1 time_out=50;
922 1 do{}while(time_out!=0);
923 1 return ERROR;
C51 COMPILER V7.07 MSS_SPI 09/14/2005 15:20:47 PAGE 16
924 1 }
925
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -