|
附件里都有,感興趣可以自己看
0.png (119.91 KB, 下載次數(shù): 104)
下載附件
2018-7-25 00:36 上傳
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)行控制
0.png (47.02 KB, 下載次數(shù): 71)
下載附件
2018-7-25 00:37 上傳
Uart主機(jī)例程單片機(jī)源程序如下:
- #include "Prtype.h"
- #include "Uartport.h"
- #include "Protocol.h"
- /***************************************************************************************************
- ** Subroutine : FunHandshakeModule
- ** Function : 注冊(cè)指紋例程
- ** Author : yf
- ** Input : UINT8 nTime -- 注冊(cè)時(shí)需要按幾次手指
- ** UINT16 wID -- 指紋ID號(hào)
- ** Output : 成功:CMD_OK 失敗:CMD_ERR,超時(shí):CMD_TIMEOUT
- ** Description :
- ** Date : 2016/10/26
- ** ModifyRecord:
- ***************************************************************************************************/
- /*
- 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
- 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
- 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
- 4.提取特征
- 5.重復(fù)1到4,如果要求注冊(cè)3次需要重復(fù)5操作
- 6.合成模板
- 8.保存指紋
- */
- UINT8 ExampleErollFp(UINT8 nTime,UINT16 wID)
- {
- UINT8 cRet, ERR, nErrTime, n;
- UINT8 Buf[128];
- UINT16 lenPkg;
- //0.先握手一下,看模塊是否工作正常
- cRet = FunHandshakeModule(1);
- if (cRet != CMD_OK)
- {
- //模塊不正常,再次嘗試一下
- cRet = FunHandshakeModule(1);
- if (cRet != CMD_OK)
- {
- //模塊不正常
- return RT_OVERTIME;
- }
- }
-
- n = 0;
- while(n < nTime)
- {
- //1.采指紋 指令代碼 29H
- nErrTime = 0;
- do
- {
- SY_memset(Buf, 0, 128);
- lenPkg = 0;
- cRet=CommSingleInstruction(MASK_INS, PS_GetEnrollImage, NULL,&lenPkg, Buf,&ERR,500);
- if (cRet==CMD_OK&&ERR==0)//采集到指紋
- {
- break;
- }
- else if (cRet==CMD_TIMEOUT)
- {
- return CMD_TIMEOUT;
- }
- else //CMD_SUM_ERR
- {
-
- }
- //超時(shí)判斷
- if (0)//超時(shí)退出
- {
- return CMD_TIMEOUT;
- }
- }while (1);
- //1.提取特征 指令代碼 02H
- Buf[0]= n+1;
- lenPkg=1;
- cRet=CommSingleInstruction(MASK_INS, PS_GenChar, Buf,&lenPkg, Buf,&ERR,1000);
- if (cRet==CMD_OK)
- {
- if (ERR==0) //取特征成功
- {
- }
- else if (ERR==1) //表示收包有錯(cuò)
- {
- continue;
- }
- else if (ERR==0x06) //表示指紋圖像太亂而生不成特征
- {
- continue;
- }
- else if (ERR==0x07) //表示指紋圖像正常,但特征點(diǎn)太少而生不成特征
- {
- continue;
- }
- else if (ERR==0x28) //表示當(dāng)前指紋模板與之前模板之間有關(guān)聯(lián)
- {
- }
- else if (ERR==0x15) //表示圖像緩沖區(qū)內(nèi)沒(méi)有有效原始圖而生不成圖像
- {
- continue;
- }
- }
- else //提取特征失敗
- {
- return CMD_STEP_ERR;
- }
- n++;
- }
- //合并模板 指令代碼 05H
- lenPkg=0;
- cRet=CommSingleInstruction(MASK_INS, PS_RegModel, NULL,&lenPkg, Buf,&ERR,50);
- if (cRet==CMD_OK&&ERR==0) //合并模板成功
- {
- }
- else //合并模板失敗
- {
- return CMD_STEP_ERR;
- }
- //存儲(chǔ)模板 指令代碼 06H
- Buf[0]= 1; //默認(rèn)為1
- Buf[1]= (wID>>8);
- Buf[2]= (wID&0xff);
- lenPkg=3;
- cRet=CommSingleInstruction(MASK_INS,0x06, Buf,&lenPkg, Buf,&ERR,100);
- if (cRet==CMD_OK&&ERR==0) //注冊(cè)成功
- {
- return CMD_OK;
- }
- else //注冊(cè)失敗
- {
- return CMD_STEP_ERR;
- }
- }
- /***************************************************************************************************
- ** Subroutine : ExampleSeachFp
- ** Function : 注冊(cè)指紋例程
- ** Author : yf
- ** Input : UINT8 nTime -- 注冊(cè)時(shí)需要按幾次手指
- ** UINT16 wID -- 指紋ID號(hào)
- ** Output : 成功:CMD_OK 失敗:CMD_ERR,超時(shí):CMD_TIMEOUT
- ** Description :
- ** Date : 2016/10/26
- ** ModifyRecord:
- ***************************************************************************************************/
- /*
- 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
- 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
- 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
- 4.提取特征
- 5.搜索
- */
- UINT8 ExampleSeachFp(UINT16 *wID)
- {
- UINT8 cRet,ERR,nErrTime,n;
- UINT8 Buf[128];
- UINT16 lenPkg,sSoucre,FpId;
- //1.采指紋 指令代碼 29H
- nErrTime=0;
- do
- {
- SY_memset(Buf,0,128);
- lenPkg=0;
- cRet=CommSingleInstruction(MASK_INS,0x29, NULL,&lenPkg, Buf,&ERR,500);
-
- if (cRet==CMD_OK&&ERR==0)//采集到指紋
- {
- break;
- }
- else if (cRet==CMD_TIMEOUT)
- {
- return CMD_TIMEOUT;
- }
- else //CMD_SUM_ERR
- {
-
- }
- //超時(shí)判斷
- if (0)//超時(shí)退出
- {
- return CMD_TIMEOUT;
- }
- }while (1);
- //1.提取特征 指令代碼 02H
- Buf[0]= 1;
- lenPkg=1;
- cRet=CommSingleInstruction(MASK_INS,0x02, Buf,&lenPkg, Buf,&ERR,1000);
- if (cRet==CMD_OK&&ERR==0) //取特征成功
- {
- }
- else //提取特征失敗
- {
- return CMD_STEP_ERR;
- }
- //搜索 指令代碼 1BH
- Buf[0]= 1;
- Buf[1]= 0;
- Buf[2]= 0;
- Buf[3]= (1024>>8);
- Buf[4]= (1024&0xff);
- lenPkg=5;
- cRet=CommSingleInstruction(MASK_INS,0x1B, Buf,&lenPkg, Buf,&ERR,2000);
- if (cRet==CMD_OK&&ERR==0) //搜索成功
- {
- if (lenPkg==16)
- {
- sSoucre=(Buf[12]<<8)+Buf[13];
- FpId=(Buf[10]<<8)+Buf[11];
- *wID=FpId;
- return CMD_OK;
- }
- return CMD_LOGIC_ERR ;
- }
- else //合并模板失敗
- {
- return CMD_STEP_ERR;
- }
- }
- /***************************************************************************************************
- ** Subroutine : FptEx_SaveChar
- ** Function : 傳感器獲取指紋并生成特征上傳給上位機(jī)
- ** Author : Comon
- ** Input : UINT8 nTime -- 注冊(cè)時(shí)需要按幾次手指
- ** UINT16 wID -- 指紋ID號(hào)
- ** Output : 成功:CMD_OK 失敗:CMD_ERR,超時(shí):CMD_TIMEOUT
- ** Description :
- ** Date : 2016/11/9
- ** ModifyRecord:
- ***************************************************************************************************/
- /*
- 1.主機(jī)->從機(jī):發(fā)送采圖命令采指紋命令
- 2.從機(jī)->主機(jī):返回采集指紋結(jié)果。
- 3.如果沒(méi)有采集到指紋循環(huán)1.2步驟直到采集到指紋 或超時(shí)
- 4.提取特征
- 5.搜索
- */
- UINT8 FptEx_SaveChar()
- {
- UINT8 cRet, cRerr;
- UINT8 nOverTime, n;
- UINT8 Buf[128];
- UINT16 nInBufLen = 0;
- UINT16 i;
- // UINT16 sSoucre, FpId;
-
- memset(Buf, 0, sizeof(Buf));
- nOverTime = 500; //設(shè)定范圍如何確定
- while(1)
- {
- cRet = CommSingleInstruction(MASK_INS, PS_GetImage, NULL, &nInBufLen, Buf, &cRerr, nOverTime);
- if(cRet == CMD_TIMEOUT)
- return cRet;
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
-
- Buf[0] = 1;
- nInBufLen = 1;
- cRet = CommSingleInstruction(MASK_INS, PS_GenChar, Buf, &nInBufLen, Buf, &cRerr, nOverTime);
- if(cRet == CMD_TIMEOUT)
- return cRet;
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
- else
- break;
- }
- do{
- Buf[0] = 1;
- nInBufLen = 1;
- cRet = CommSingleInstruction(MASK_INS, PS_UpChar, Buf, &nInBufLen, Buf, &cRerr, nOverTime);
- if(cRet == CMD_TIMEOUT)
- return cRet;
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
- else
- break;
- }while(1);
- //1.order如何定義;2.數(shù)據(jù)分包大小;3.發(fā)包數(shù)據(jù)總長(zhǎng)度;4.
- // for(i = 0; i < tLen/padLen; i++)
- // {
- // CommUpDataInstruction(MASK_DAT, MASK_DAT, Buf, &padLen, Buf, &cRerr, nOverTime);
- //
- // }
- // CommUpDataInstruction(MASK_DAT_LAST, MASK_DAT_LAST, Buf, &(tLen % padLen), );
-
-
- //接收后續(xù)數(shù)據(jù)包?
- }
- UINT8 FptEx_AutoEnroll()
- {
- UINT8 cRet, cRerr;
- UINT8 Buf[128];
- UINT16 nBufLen = 0;
- UINT16 n = 0, nLevel = 10;
- UINT16 nOutTimeMS = 500;
- //指令合法性,是否握手?
- cRet = FunHandshakeModule(1);
- if(cRet != CMD_OK)
- return CMD_ERR;
-
- while(n < nLevel)
- {
- n++;
- cRet = CommSingleInstruction(MASK_INS, PS_GetEnrollImage, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
- if(cRet == CMD_TIMEOUT)
- return cRet;
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
-
- Buf[0] = n;
- nBufLen = 1;
- cRet = CommSingleInstruction(MASK_INS, PS_GenChar, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
- if(cRet == CMD_TIMEOUT)
- return cRet;
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
-
- Buf[0] = n; //BuffID 取值規(guī)則,范圍
- Buf[1] = n & 0xff; //PageID取值規(guī)則,范圍
- Buf[2] = (n>>8) & 0xff;
- nBufLen = 3;
- cRet = CommSingleInstruction(MASK_INS, PS_StoreChar, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
- if(cRet == CMD_TIMEOUT)
- {
- return cRet;
- }
- else if((cRet != CMD_OK) || (cRerr != 0))
- continue;
- }
-
- cRet = CommSingleInstruction(MASK_INS, PS_RegModel, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
- if((cRet != CMD_OK) || (cRet != 0))
- return cRet;
-
- //指紋重復(fù)檢測(cè)成功???GetEnroll指令?
- cRet = CommSingleInstruction(MASK_INS, PS_GetEnrollImage, Buf, &nBufLen, Buf, &cRerr, nOutTimeMS);
- if((cRet != CMD_OK) || (cRerr != 0))
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
模塊資料及例程.zip
(2.33 MB, 下載次數(shù): 250)
2018-7-24 12:57 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|