找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2849|回复: 2
打印 上一主题 下一主题
收起左侧

指纹模块FPM10A实现代码和指纹扫描视频

[复制链接]
跳转到指定楼层
楼主
ID:201655 发表于 2017-5-17 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整代码下载:
Fpm10A.zip (1.57 KB, 下载次数: 48)

2楼还附带了扫描视频

程序预览:
  1. static unsigned char Get_Package_Len(unsigned char Cmd)
  2. {
  3. unsigned char Len;
  4. switch( Cmd )
  5. {
  6.   case eCmdReadSysPara: // 0x0f
  7.   case eCmdReadTempleteNum: // 0x1d
  8.   case eCmdGetImg: // 0x01
  9.   case eCmdUpImage: // 0x0a
  10.   case eCmdDownImage: // 0x0b
  11.   case eCmdRegModel: // 0x05
  12.   case eCmdEmpty:  // 0x0d
  13.   case eCmdMatch:  // 0x03
  14.   case eCmdGetRandomCode: // 0x14
  15.   case eCmdUnknownCmd_0x16: // 0x16
  16.    Len = 3;
  17.    break;
  18.   case eCmdPortCtrl: // 0x17
  19.   case eCmdImg2Tz: // 0x02
  20.   case eCmdUpChar: // 0x08
  21.   case eCmdDownChar: // 0x09
  22.   case eCmdReadNotePad: // 0x19
  23.   case eCmdUnknownCmd_0x1F: // 0x1f
  24.    Len = 4;
  25.    break;
  26.   case eCmdSetSysPara: // 0x0e
  27.    Len = 5;
  28.    break;
  29.   case eCmdStore:  // 0x06
  30.   case eCmdLoadChar: // 0x07
  31.    Len = 6;
  32.    break;
  33.   case eCmdVfyPwd: // 0x13
  34.   case eCmdSetPwd: // 0x12
  35.   case eCmdSetAddress: // 0x15
  36.   case eCmdDeleteChar: // 0x0c
  37.    Len = 7;
  38.    break;
  39.   case eCmdSearch: // 0x04
  40.    Len = 8;
  41.    break;
  42.   case eCmdWriteNotePad: // 0x18
  43.    Len = 36;
  44.    break;
  45.   default:
  46.    Len = 0;
  47.    break;
  48. }
  49. return Len;
  50. }
  51. static void ReloadCmdHeader(u8 Cmd)
  52. {
  53. TxPacketHeaderH = 0xEF;
  54. TxPacketHeaderL = 0x01;
  55. TxModuleAddrHH = Module.CurrAddrHH;
  56. TxModuleAddrHL = Module.CurrAddrHL;
  57. TxModuleAddrLH = Module.CurrAddrLH;
  58. TxModuleAddrLL = Module.CurrAddrLL;
  59. TxPacketSign = eTxPackageSign;  // 0x01
  60. TxPacketLengthH = 0x00;
  61. TxPacketLengthL = Get_Package_Len(Cmd);
  62. TxCommandCode = Cmd;
  63. }
  64. static void GetPackageChkSum(u8 *ChkSumH,u8 *ChkSumL)
  65. {
  66. unsigned char i=0;
  67. unsigned int Temp_Checksum = 0x0000;
  68. for(i=6;i<TxPacketLengthL+7;i++)
  69. {
  70.   Temp_Checksum += TxPcData[i];
  71. }
  72. *ChkSumH = Temp_Checksum>>8;
  73. *ChkSumL = Temp_Checksum&0x00ff;
  74. }
  75. static void Send_One_Package(void )
  76. {
  77. unsigned char i=0;
  78. for(i=0;i<TxPacketLengthL+9;i++)
  79. {
  80.   UART_Send_Byte(TxPcData[i]);
  81. }
  82. }

  83. void FPMxx_Cmd_Vfy_Pwd (void)  // 验证口令 VfyPwd
  84. {
  85. ReloadCmdHeader(eCmdVfyPwd);
  86. #if 1
  87. // TxModulePwdHH = Module.CurrPwdHH;
  88. // TxModulePwdHL = Module.CurrPwdHL;
  89. // TxModulePwdLH = Module.CurrPwdLH;
  90. // TxModulePwdLL = Module.CurrPwdLL;
  91. TxModulePwdHH = 0;
  92. TxModulePwdHL = 0;
  93. TxModulePwdLH = 0;
  94. TxModulePwdLL = 0;
  95. #else
  96. TxModulePwdHH = 'L';
  97. TxModulePwdHL = 'o';
  98. TxModulePwdLH = 'v';
  99. TxModulePwdLL = 'e';
  100. #endif
  101. GetPackageChkSum(&TxPwdChkSumH,&TxPwdChkSumL);
  102. Send_One_Package();
  103. }
  104. #if 0
  105. void FPMxx_Cmd_Set_Pwd (void)  // 设置口令 SetPwd
  106. {
  107. ReloadCmdHeader(eCmdSetPwd);
  108. #if 1
  109. // TxModulePwdHH = Module.CurrPwdHH;
  110. // TxModulePwdHL = Module.CurrPwdHL;
  111. // TxModulePwdLH = Module.CurrPwdLH;
  112. // TxModulePwdLL = Module.CurrPwdLL;
  113. TxModulePwdHH = 0;
  114. TxModulePwdHL = 0;
  115. TxModulePwdLH = 0;
  116. TxModulePwdLL = 0;
  117. #else
  118. TxModulePwdHH = 'L';
  119. TxModulePwdHL = 'o';
  120. TxModulePwdLH = 'v';
  121. TxModulePwdLL = 'e';
  122. #endif
  123. GetPackageChkSum(&TxPwdChkSumH,&TxPwdChkSumL);
  124. Send_One_Package();
  125. }
  126. void FPMXX_Cmd_Read_Sys_Para (void)  // 读系统参数
  127. {
  128. ReloadCmdHeader(eCmdReadSysPara);
  129. GetPackageChkSum(&TxReadSysParaChkSumH,&TxReadSysParaChkSumL);
  130. Send_One_Package();
  131. }
  132. #endif
  133. void FPMXX_Cmd_Get_Img(void)
  134. {
  135. ReloadCmdHeader(eCmdGetImg);
  136. GetPackageChkSum(&TxGetImgChkSumH,&TxGetImgChkSumL);
  137. Send_One_Package();
  138. }
  139. #if 0
  140. void FPMXX_Cmd_Read_Note_Pad (void)  // 读记事本
  141. {
  142. ReloadCmdHeader(eCmdReadNotePad);
  143. TxReadNotePadPage = 0x00;
  144. GetPackageChkSum(&TxReadNotePadChkSumH,&TxReadNotePadChkSumL);
  145. Send_One_Package();
  146. }
  147. #endif
  148. void FPMXX_Cmd_Build_Img_Tz (unsigned char ID)  // 图像生成特征
  149. {
  150. ReloadCmdHeader(eCmdImg2Tz);
  151. TxImg2TzBuffID = ID;
  152. GetPackageChkSum(&TxImg2TzChkSumH,&TxImg2TzChkSumL);
  153. Send_One_Package();
  154. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:201655 发表于 2017-5-17 09:49 | 只看该作者
附件是51实现指纹扫描视频

51实现指纹扫描视频.zip

9.21 MB, 下载次数: 36, 下载积分: 黑币 -5

回复

使用道具 举报

板凳
ID:906199 发表于 2021-5-6 02:24 | 只看该作者
这代码用不了呀,楼主能发一份完整的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表