久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 16008|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

AS608指紋模塊的單片機(jī)源碼與資料

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
附件里都有,感興趣可以自己看


1.1 概述
JM-101 指紋模塊為集成了光路和指紋處理部分的一體化指紋處理模塊,具有體積小、功耗低、接口簡(jiǎn)單的特點(diǎn),可靠性高、識(shí)別速度快、干濕手指適應(yīng)性好,指紋搜索速度快。指紋圖像讀取時(shí),對(duì)干濕手指都有靈敏的反應(yīng)和判斷,獲得最佳的成像質(zhì)量,適用人群廣泛。也可定制自學(xué)習(xí)適應(yīng)功能,根據(jù)使用者的習(xí)慣、氣候等的變化自動(dòng)調(diào)整參數(shù),做到更好的匹配。具備自學(xué)習(xí)功能,指紋識(shí)別過(guò)程中,提取新的指紋特征值識(shí)別成功后將該特征值融合到之前的指紋特征中,實(shí)際使用過(guò)程中越用越好用。
JM-101 模塊還具備感應(yīng)手指功能,當(dāng)手指按壓到指紋采集面時(shí),模塊 Touch 腳輸出高電平。
JM-101 模塊通訊接口為 USB 和 UART 兩種通信接口, 本模塊作為從設(shè)備,由主設(shè)備發(fā)送相關(guān)命令對(duì)其進(jìn)行控制



Uart主機(jī)例程單片機(jī)源程序如下:
  1. #include "Prtype.h"
  2. #include "Uartport.h"
  3. #include "Protocol.h"


  4. /***************************************************************************************************
  5. ** Subroutine  : FunHandshakeModule
  6. ** Function    : 注冊(cè)指紋例程
  7. ** Author      : yf
  8. ** Input       : UINT8 nTime  --   注冊(cè)時(shí)需要按幾次手指
  9. **               UINT16 wID   --   指紋ID號(hào)   
  10. ** Output      : 成功:CMD_OK  失敗:CMD_ERR,超時(shí):CMD_TIMEOUT  
  11. ** Description :   
  12. ** Date        : 2016/10/26
  13. ** ModifyRecord:
  14. ***************************************************************************************************/
  15. /*
  16. 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
  17. 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
  18. 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
  19. 4.提取特征
  20. 5.重復(fù)1到4,如果要求注冊(cè)3次需要重復(fù)5操作
  21. 6.合成模板
  22. 8.保存指紋
  23. */
  24. UINT8 ExampleErollFp(UINT8 nTime,UINT16 wID)
  25. {
  26.     UINT8 cRet, ERR, nErrTime, n;
  27.     UINT8 Buf[128];
  28.     UINT16 lenPkg;

  29. //0.先握手一下,看模塊是否工作正常
  30.     cRet = FunHandshakeModule(1);
  31.     if (cRet != CMD_OK)
  32.     {
  33.             //模塊不正常,再次嘗試一下
  34.          cRet = FunHandshakeModule(1);
  35.         if (cRet != CMD_OK)
  36.         {
  37.                 //模塊不正常
  38.             return  RT_OVERTIME;   
  39.         }
  40.     }  
  41.    
  42.     n = 0;   
  43.     while(n < nTime)
  44.     {
  45.         //1.采指紋          指令代碼 29H
  46.         nErrTime = 0;
  47.         do
  48.         {
  49.             SY_memset(Buf, 0, 128);
  50.             lenPkg = 0;
  51.             cRet=CommSingleInstruction(MASK_INS, PS_GetEnrollImage, NULL,&lenPkg, Buf,&ERR,500);        
  52.                 if (cRet==CMD_OK&&ERR==0)//采集到指紋
  53.                 {
  54.                         break;
  55.                 }               
  56.                 else if (cRet==CMD_TIMEOUT)
  57.                 {
  58.                         return CMD_TIMEOUT;
  59.                 }       
  60.                 else //CMD_SUM_ERR
  61.                 {
  62.                        
  63.                 }
  64.             //超時(shí)判斷
  65.             if (0)//超時(shí)退出
  66.             {
  67.                 return CMD_TIMEOUT;       
  68.             }                          
  69.         }while (1);
  70.         //1.提取特征          指令代碼 02H
  71.         Buf[0]= n+1;
  72.         lenPkg=1;
  73.         cRet=CommSingleInstruction(MASK_INS, PS_GenChar, Buf,&lenPkg, Buf,&ERR,1000);      
  74.         if (cRet==CMD_OK)
  75.             {           
  76.             if (ERR==0)    //取特征成功
  77.             {       
  78.             }
  79.             else  if (ERR==1)    //表示收包有錯(cuò)
  80.             {       
  81.                 continue;
  82.             }
  83.             else  if (ERR==0x06)    //表示指紋圖像太亂而生不成特征
  84.             {       
  85.                 continue;
  86.             }
  87.             else  if (ERR==0x07)    //表示指紋圖像正常,但特征點(diǎn)太少而生不成特征
  88.             {       
  89.                 continue;
  90.             }
  91.             else  if (ERR==0x28)    //表示當(dāng)前指紋模板與之前模板之間有關(guān)聯(lián)
  92.             {       
  93.             }      
  94.             else  if (ERR==0x15)    //表示圖像緩沖區(qū)內(nèi)沒(méi)有有效原始圖而生不成圖像
  95.             {       
  96.                 continue;
  97.             }        
  98.             }
  99.             else //提取特征失敗
  100.             {
  101.                     return  CMD_STEP_ERR;
  102.             }           
  103.             n++;
  104.     }  
  105.     //合并模板 指令代碼 05H
  106.     lenPkg=0;
  107.     cRet=CommSingleInstruction(MASK_INS, PS_RegModel, NULL,&lenPkg, Buf,&ERR,50);
  108.     if (cRet==CMD_OK&&ERR==0) //合并模板成功
  109.         {               
  110.         }
  111.         else //合并模板失敗
  112.         {
  113.                 return  CMD_STEP_ERR;
  114.         }
  115.          //存儲(chǔ)模板 指令代碼 06H
  116.         Buf[0]= 1; //默認(rèn)為1
  117.     Buf[1]= (wID>>8);
  118.     Buf[2]= (wID&0xff);
  119.     lenPkg=3;
  120.     cRet=CommSingleInstruction(MASK_INS,0x06, Buf,&lenPkg, Buf,&ERR,100);
  121.     if (cRet==CMD_OK&&ERR==0) //注冊(cè)成功
  122.         {               
  123.         return CMD_OK;
  124.         }
  125.         else //注冊(cè)失敗
  126.         {
  127.                 return  CMD_STEP_ERR;
  128.         }   
  129. }




  130. /***************************************************************************************************
  131. ** Subroutine  : ExampleSeachFp
  132. ** Function    : 注冊(cè)指紋例程
  133. ** Author      : yf
  134. ** Input       : UINT8 nTime  --   注冊(cè)時(shí)需要按幾次手指
  135. **               UINT16 wID   --   指紋ID號(hào)   
  136. ** Output      : 成功:CMD_OK  失敗:CMD_ERR,超時(shí):CMD_TIMEOUT  
  137. ** Description :   
  138. ** Date        : 2016/10/26
  139. ** ModifyRecord:
  140. ***************************************************************************************************/
  141. /*
  142. 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
  143. 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
  144. 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
  145. 4.提取特征
  146. 5.搜索
  147. */
  148. UINT8 ExampleSeachFp(UINT16 *wID)
  149. {
  150.     UINT8 cRet,ERR,nErrTime,n;
  151.     UINT8 Buf[128];
  152.     UINT16 lenPkg,sSoucre,FpId;
  153.     //1.采指紋          指令代碼 29H
  154.     nErrTime=0;
  155.     do
  156.     {
  157.         SY_memset(Buf,0,128);
  158.         lenPkg=0;
  159.         cRet=CommSingleInstruction(MASK_INS,0x29, NULL,&lenPkg, Buf,&ERR,500);
  160.    
  161.             if (cRet==CMD_OK&&ERR==0)//采集到指紋
  162.             {
  163.                     break;
  164.             }               
  165.             else if (cRet==CMD_TIMEOUT)
  166.             {
  167.                     return CMD_TIMEOUT;
  168.             }       
  169.             else //CMD_SUM_ERR
  170.             {
  171.                    
  172.             }
  173.         //超時(shí)判斷
  174.         if (0)//超時(shí)退出
  175.         {
  176.             return CMD_TIMEOUT;       
  177.         }                          
  178.     }while (1);
  179.     //1.提取特征          指令代碼 02H
  180.     Buf[0]= 1;
  181.     lenPkg=1;
  182.     cRet=CommSingleInstruction(MASK_INS,0x02, Buf,&lenPkg, Buf,&ERR,1000);      
  183.     if (cRet==CMD_OK&&ERR==0) //取特征成功
  184.         {               
  185.         }
  186.         else //提取特征失敗
  187.         {
  188.                 return  CMD_STEP_ERR;
  189.         }           

  190.     //搜索 指令代碼 1BH
  191.     Buf[0]= 1;
  192.     Buf[1]= 0;
  193.     Buf[2]= 0;
  194.     Buf[3]= (1024>>8);
  195.     Buf[4]= (1024&0xff);
  196.     lenPkg=5;
  197.     cRet=CommSingleInstruction(MASK_INS,0x1B, Buf,&lenPkg, Buf,&ERR,2000);
  198.     if (cRet==CMD_OK&&ERR==0) //搜索成功
  199.         {
  200.         if (lenPkg==16)
  201.         {
  202.                 sSoucre=(Buf[12]<<8)+Buf[13];
  203.                 FpId=(Buf[10]<<8)+Buf[11];
  204.                 *wID=FpId;
  205.                 return  CMD_OK;
  206.         }                    
  207.         return CMD_LOGIC_ERR ;  
  208.         }
  209.         else //合并模板失敗
  210.         {
  211.                 return  CMD_STEP_ERR;
  212.         }

  213. }

  214. /***************************************************************************************************
  215. ** Subroutine  : FptEx_SaveChar
  216. ** Function    : 傳感器獲取指紋并生成特征上傳給上位機(jī)
  217. ** Author      : Comon
  218. ** Input       : UINT8 nTime  --   注冊(cè)時(shí)需要按幾次手指
  219. **               UINT16 wID   --   指紋ID號(hào)   
  220. ** Output      : 成功:CMD_OK  失敗:CMD_ERR,超時(shí):CMD_TIMEOUT  
  221. ** Description :   
  222. ** Date        : 2016/11/9
  223. ** ModifyRecord:
  224. ***************************************************************************************************/
  225. /*
  226. 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
  227. 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
  228. 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
  229. 4.提取特征
  230. 5.搜索
  231. */
  232. UINT8 FptEx_SaveChar()
  233. {
  234.     UINT8 cRet, cRerr;
  235.     UINT8 nOverTime, n;
  236.     UINT8 Buf[128];
  237.     UINT16 nInBufLen = 0;
  238.     UINT16 i;
  239. //    UINT16 sSoucre, FpId;
  240.    
  241.     memset(Buf, 0, sizeof(Buf));
  242.     nOverTime = 500;     //設(shè)定范圍如何確定
  243.     while(1)
  244.     {
  245.         cRet = CommSingleInstruction(MASK_INS, PS_GetImage, NULL, &nInBufLen, Buf, &cRerr, nOverTime);
  246.         if(cRet == CMD_TIMEOUT)
  247.             return cRet;
  248.         else if((cRet != CMD_OK) || (cRerr != 0))
  249.             continue;
  250.         
  251.         Buf[0] = 1;
  252.         nInBufLen = 1;   
  253.         cRet = CommSingleInstruction(MASK_INS, PS_GenChar, Buf, &nInBufLen, Buf, &cRerr, nOverTime);
  254.         if(cRet == CMD_TIMEOUT)
  255.             return cRet;
  256.         else if((cRet != CMD_OK) || (cRerr != 0))
  257.             continue;
  258.         else
  259.             break;          
  260.     }   

  261.     do{
  262.         Buf[0] = 1;
  263.         nInBufLen = 1;
  264.         cRet = CommSingleInstruction(MASK_INS, PS_UpChar, Buf, &nInBufLen, Buf, &cRerr, nOverTime);
  265.         if(cRet == CMD_TIMEOUT)
  266.             return cRet;
  267.         else if((cRet != CMD_OK) || (cRerr != 0))
  268.             continue;
  269.         else
  270.             break;   
  271.     }while(1);
  272.     //1.order如何定義;2.數(shù)據(jù)分包大小;3.發(fā)包數(shù)據(jù)總長(zhǎng)度;4.
  273. //    for(i = 0; i < tLen/padLen; i++)
  274. //    {
  275. //        CommUpDataInstruction(MASK_DAT, MASK_DAT, Buf, &padLen, Buf, &cRerr, nOverTime);
  276. //           
  277. //    }   
  278. //    CommUpDataInstruction(MASK_DAT_LAST, MASK_DAT_LAST, Buf, &(tLen % padLen), );
  279.    
  280.    
  281. //接收后續(xù)數(shù)據(jù)包?
  282. }   

  283. UINT8 FptEx_AutoEnroll()
  284. {
  285.     UINT8 cRet, cRerr;
  286.     UINT8 Buf[128];
  287.     UINT16 nBufLen = 0;
  288.     UINT16 n = 0, nLevel = 10;
  289.     UINT16 nOutTimeMS = 500;
  290.     //指令合法性,是否握手?
  291.     cRet = FunHandshakeModule(1);
  292.     if(cRet != CMD_OK)
  293.         return CMD_ERR;       
  294.    
  295.     while(n < nLevel)
  296.     {
  297.         n++;
  298.             cRet = CommSingleInstruction(MASK_INS, PS_GetEnrollImage, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
  299.             if(cRet == CMD_TIMEOUT)
  300.             return cRet;
  301.         else if((cRet != CMD_OK) || (cRerr != 0))
  302.             continue;
  303.         
  304.         Buf[0] = n;
  305.         nBufLen = 1;
  306.         cRet = CommSingleInstruction(MASK_INS, PS_GenChar, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
  307.         if(cRet == CMD_TIMEOUT)
  308.             return cRet;
  309.         else if((cRet != CMD_OK) || (cRerr != 0))
  310.             continue;
  311.       
  312.        Buf[0] = n;  //BuffID 取值規(guī)則,范圍
  313.        Buf[1] = n & 0xff;       //PageID取值規(guī)則,范圍
  314.        Buf[2] = (n>>8) & 0xff;
  315.        nBufLen = 3;
  316.        cRet = CommSingleInstruction(MASK_INS, PS_StoreChar, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
  317.        if(cRet == CMD_TIMEOUT)
  318.        {
  319.                    return cRet;
  320.        }      
  321.        else if((cRet != CMD_OK) || (cRerr != 0))
  322.             continue;            
  323.     }
  324.    
  325.     cRet = CommSingleInstruction(MASK_INS, PS_RegModel, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
  326.     if((cRet != CMD_OK) || (cRet != 0))
  327.         return cRet;
  328.         
  329.     //指紋重復(fù)檢測(cè)成功???GetEnroll指令?
  330.     cRet = CommSingleInstruction(MASK_INS, PS_GetEnrollImage, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
  331.     if((cRet != CMD_OK) || (cRerr != 0))
  332. ……………………

  333. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
模塊資料及例程.zip (2.33 MB, 下載次數(shù): 250)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:390243 發(fā)表于 2018-9-5 10:31 | 只看該作者
終于找到了,非常感謝呀。
回復(fù)

使用道具 舉報(bào)

板凳
ID:413080 發(fā)表于 2019-2-18 01:09 來(lái)自手機(jī) | 只看該作者
能提供一下完整的51代碼嗎?謝謝郵箱1337173140@qq.com
回復(fù)

使用道具 舉報(bào)

地板
ID:360887 發(fā)表于 2019-3-11 23:59 | 只看該作者
學(xué)習(xí)了,謝謝!
回復(fù)

使用道具 舉報(bào)

5#
ID:657254 發(fā)表于 2019-12-6 08:47 | 只看該作者
請(qǐng)問(wèn)    cRet = FunHandshakeModule(1);  這個(gè)握手函數(shù)具體是怎么實(shí)現(xiàn)握手呀?
回復(fù)

使用道具 舉報(bào)

6#
ID:299054 發(fā)表于 2019-12-6 10:47 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

7#
ID:636603 發(fā)表于 2019-12-26 08:00 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:460337 發(fā)表于 2019-12-26 13:59 | 只看該作者

謝謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:452950 發(fā)表于 2020-2-17 11:18 | 只看該作者
請(qǐng)問(wèn)這個(gè)JM101是屬于AS608指紋模塊的嗎,是只支持JM101手冊(cè)里的八條指令還是支持AS60X通訊手冊(cè)里的所有三十多條指令呀
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一级二级三级 | 亚洲一区成人 | 亚洲精品一区二区三区中文字幕 | 中文字字幕一区二区三区四区五区 | 伊人伊人伊人 | 国产一区二区三区高清 | www.99精品| 美女视频h | 亚洲美女视频 | 欧美激情在线观看一区二区三区 | 亚洲三区在线 | 久久福利网站 | 91精品国产一区二区三区蜜臀 | 国产在线观看一区二区三区 | 亚洲国产精品福利 | 精品无码久久久久久国产 | 久久国产精品免费一区二区三区 | 亚洲日本中文字幕在线 | 久久夜视频| 国产激情一区二区三区 | 亚洲国产成人av好男人在线观看 | 91精品国产综合久久精品 | 深夜福利亚洲 | 天天干人人 | 成人av资源在线 | 亚洲欧美在线免费观看 | 天天草天天| 国产中文字幕在线观看 | 国产一区二区自拍 | 台湾佬成人网 | 日本精品视频在线 | 日本久久精品视频 | 久久久久成人精品免费播放动漫 | 中文字幕在线观看一区二区 | 我想看国产一级毛片 | 99久久精品免费看国产小宝寻花 | 日韩欧美一区二区三区免费观看 | 国产99久久精品一区二区永久免费 | 欧美色性| 欧美αv | 91精品久久久久久久久 |