久久久人妻视频免费-国产会所性服务视频在线-国产精品久久久久久av密臀-成人在线丰满少妇av

非接觸式IC卡讀寫器二次開發SDK文檔說明-M1卡的讀寫操作簡化流程

2019-06-04 14:45:00
諾塔斯智能科技
原創
7649
摘要:首先,感謝選擇并使用諾塔斯智能科技有限公司產品的客戶。為了方便用戶在使用我司非接觸式IC卡讀寫器進行二次開發,我們對SDK進行了優化和封裝,開發人員能讀懂我們的開發范例,根據范例源碼就可以實現二次開發了。

首先,感謝選擇并使用諾塔斯智能科技有限公司產品的客戶。為了方便用戶在使用我司非接觸式IC卡讀寫器進行二次開發,我們對SDK進行了優化和封裝,開發人員能讀懂我們的開發范例,根據范例源碼就可以實現二次開發了。這里我們重點介紹一下如何使用我們的非接觸式IC卡讀寫器結合我們提供的SDK對M1(S50、S70)非接觸式IC卡進行二次開發。 

在使用我司提供的SDK進行二次開發之前,開發人員應該對M1卡的主要指標、存儲結構、工作原理、與讀寫器的通信機制。關于M1卡的相關知識可以理解"M1卡的區塊讀寫控制"和“M1卡的簡介”。

M1卡與讀寫器的通信過程中主要有:復位應答、防沖突機制、選擇卡片、三次相互驗證、對數據庫的操作。如下圖所示:

M1卡讀寫操作流程


復位應答(Answer to request)

M1射頻卡的通訊協議和通訊波特率是定義好的,當有卡片進入讀寫器的操作范圍時,讀寫器以特定的協議與它通訊,從而確定該卡是否為M1射頻卡,即驗證卡片的卡型。

 

防沖突機制 (Anticollision Loop)

當有多張卡進入讀寫器操作范圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。

 

選擇卡片(Select Tag)

選擇被選中的卡的序列號,并同時返回卡的容量代碼。

 

三次互相確認(3 Pass Authentication)

選定要處理的卡片之后,讀寫器就確定要訪問的扇區號,并對該扇區密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。(在選擇另一扇區時,則必須進行另一扇區密碼校驗。)

 

對數據塊的操作

 (Read):讀一個塊;

(Write):寫一個塊;

(Increment):對數值塊進行加值;

(Decrement):對數值塊進行減值;

存儲(Restore):將塊中的內容存到數據寄存器中;

傳輸(Transfer):將數據寄存器中的內容寫入塊中;

        中止(Halt):將卡置于暫停工作狀態;  

為了方便用戶進行快速的二次開發,我們將這個流程進行了簡化,簡化后的M1卡讀寫操作流程如下圖所示:

簡化后的M1卡讀寫操作流程


Request:對應調用LotusCardRequest函數

設備句柄nDeviceHandle為OpenDevice返回值。
M1/CPU/NTAG系列卡片尋卡動作。
nRequestType參數取值:  RT_ALL = 0x52; // /< 符合14443A卡片
RT_NOT_HALT = 0x26; // /< 未進入休眠狀態的卡
	/**
	 * 尋卡
	 * 
	 * @param nDeviceHandle
	 *            設備句柄
	 * @param nRequestType
	 *            請求類型
	 * @param tLotusCardParam
	 *            結果值 用里面的卡片類型
	 * @return true = 成功
	 */
	public native boolean Request(long nDeviceHandle, int nRequestType,
			LotusCardParam tLotusCardParam);


Anticollission:對應調用LotusCardAnticoll函數

設備句柄nDeviceHandle為OpenDevice返回值。

/**

 * 防沖突

 *

 * @param nDeviceHandle

 *            設備句柄

 * @param tLotusCardParam

 *            結果值 用里面的卡號

 * @return true = 成功

 */

public native boolean Anticoll(long nDeviceHandle,

LotusCardParam tLotusCardParam);



Select:對應調用LotusCardSelect函數

設備句柄nDeviceHandle為OpenDevice返回值。
	/**
	 * 選卡
	 * 
	 * @param nDeviceHandle
	 *            設備句柄
	 * @param tLotusCardParam
	 *            參數(使用里面的卡號)與結果值(使用里面的卡容量大小)
	 * @return true = 成功
	 */
	public native boolean Select(long nDeviceHandle,
			LotusCardParam tLotusCardParam);


Authentication:對應調用LotusCardAuthentication函數

M1需要,CPU/NTAG系列不需要

設備句柄nDeviceHandle為OpenDevice返回值。

nSectionIndex:S50(卡型0x04)為0~15,共16個扇區。

S70(卡型0x02)為0~39,共40個扇區。

/**

 * 密鑰驗證

 *

 * @param nDeviceHandle

 *            設備句柄

 * @param nAuthMode

 *            驗證模式

 * @param nSectionIndex

 *            扇區索引

 * @param tLotusCardParam

 *            參數(使用里面的卡號)

 * @return true = 成功

 */

public native boolean Authentication(long nDeviceHandle, int nAuthMode,

int nSectionIndex, LotusCardParam tLotusCardParam);



Read:對應調用LotusCardRead函數

設備句柄nDeviceHandle為OpenDevice返回值。
特別說明:如果是NTAG系列,nAddress參數為PAGE索引,每次可以讀4個PAGE,每個PAGE有4字節,共16字節。
S50:
nAddress = 扇區索引(0~15) * 4 + 塊(0~3);
如讀取0扇區2塊,nAddress = 0*4 +2=2;
如讀取5扇區2塊,nAddress = 5*4 +2=22;
S70:
0~31扇區計算方式同S50;
nAddress = 扇區索引(0~31) * 4 + 塊(0~3);
如讀取0扇區2塊,nAddress = 0*4 +2=2;
如讀取5扇區2塊,nAddress = 5*4 +2=22;
扇區32~39 每個扇區16個塊 nAddress = 32 * 4 +(扇區索引-32)*16 + 塊(0~15);
如讀取32扇區2塊,nAddress = 32*4 +(32-32)*16+2=130;
如讀取37扇區12塊,nAddress = 32*4 +(37-32)*16 + 12 =220;
	/**
	 * 讀指定地址數據
	 * 
	 * @param nDeviceHandle
	 *            設備句柄
	 * @param nAddress
	 *            塊地址
	 * @param tLotusCardParam
	 *            結果值(讀寫緩沖)
	 * @return true = 成功
	 */
	public native boolean Read(long nDeviceHandle, int nAddress,
			LotusCardParam tLotusCardParam);


Write:對應調用LotusCardWrite函數


設備句柄nDeviceHandle為OpenDevice返回值。
特別說明:如果是NTAG系列,nAddress參數為PAGE索引,每次可以讀4個PAGE,每個PAGE有4字節,共16字節。
S50:
nAddress = 扇區索引(0~15) * 4 + 塊(0~3);
如讀取0扇區2塊,nAddress = 0*4 +2=2;
如讀取5扇區2塊,nAddress = 5*4 +2=22;
S70:
0~31扇區計算方式同S50;
nAddress = 扇區索引(0~31) * 4 + 塊(0~3);
如讀取0扇區2塊,nAddress = 0*4 +2=2;
如讀取5扇區2塊,nAddress = 5*4 +2=22;
扇區32~39 每個扇區16個塊 nAddress = 32 * 4 +(扇區索引-32)*16 + 塊(0~15);
如讀取32扇區2塊,nAddress = 32*4 +(32-32)*16+2=130;
如讀取37扇區12塊,nAddress = 32*4 +(37-32)*16 + 12 =220;
	/**
	 * 讀指定地址數據
	 * 
	 * @param nDeviceHandle
	 *            設備句柄
	 * @param nAddress
	 *            塊地址
	 * @param tLotusCardParam
	 *            結果值(讀寫緩沖)
	 * @return true = 成功
	 */
	public native boolean Read(long nDeviceHandle, int nAddress,
			LotusCardParam tLotusCardParam);

M1卡的讀寫操作簡化流程操作后,函數可以復用。方便二次開發,提升工作效率。



發表評論
評論通過審核后顯示。
熱門文章推薦
關于PSAM卡、SAM卡、SIM卡的特征和區別 2019-03-22 由于人們對PSAM卡、SAM卡、SIM卡的概念理解不到位加之很少仔細的對PSAM卡、SAM卡、SIM卡實物進行區別,容易將PSAM卡、SAM卡、SIM卡混為一談。諾塔斯智能科技就PSAM卡、SAM卡、SIM卡三者特征和作用進行介紹,幫助大家對PSAM卡、SAM卡、SIM卡進行深刻的認識和區分。
M1卡常見問題和處理方法 2019-02-21 M1卡是恩智浦出品的芯片縮寫,全稱為NXP Mifare1系列,常用的有S50及S70兩種型號,截止到2013年11月4日,已經有國產芯片與其兼容,利用PVC封裝M1芯片、感應天線,然后壓制成型后而制作的卡即是智能卡行業所說的M1卡。M1卡的優點是可讀可寫的多功能卡,缺點是:價格稍貴,感應距離短,目前適合非定額消費系統、停車場系統、門禁考勤系統等,目前應用最廣泛的非接觸式IC卡。
NFC數據交換格式(NDEF)規范 2019-05-28 為實現標簽和NFC設備,及NFC設備之間的交互通信,NFC論壇定義了稱為NFC數據交換格式(NDEF)的通用數據格式。 NDEF是輕量級的緊湊的二進制格式,可帶有URL,vCard和NFC定義的各種數據類型。
非接觸式IC卡(M1卡)區塊讀寫控制 2019-02-21 非接觸式IC卡系列中的Mifare One (M1卡)的優點是可讀可寫的多功能卡,缺點是:價格稍貴,感應距離短,目前適合非定額消費系統、停車場系統、門禁考勤系統等,目前應用最廣泛的 非接觸式IC卡。諾塔斯智能科技專業從事非接觸式IC卡讀寫器的研發與銷售,為各行業用戶提供專業的IC卡系統解決方案。
聯系我們
聯系人: 張經理
電話: 400-023-6659
傳真: 023-68798110
Email: 843718693@qq.com
QQ: 843718693
微信: Lotus-Smart
微博: lotusreader
旺旺: 諾塔斯智能科技有限公司
地址: 重慶市江北區宏帆路36號宏帆天地1棟6樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關注微信
  • 諾塔斯智能科技網上商城
    網上商城
移動訪問