你的位置:九游娱乐(China)官方网站 > 新闻资讯 >
发布日期:2024-11-09 04:15 点击次数:172
FeliCa是Sony所开发出来的非构兵式IC卡期间。称呼由英语中代表“幸福”的 "Felicity" 和 "Card"(卡片)组合而成,是Sony的注册商标。FeliCa 是为了非构兵式IC卡而开发出来的通讯期间。非构兵式IC卡由读写时送出的载波涵养而供给电力,由载波的调变与卡片读写换取。举例 ISO 14443 type B,使用ASK10%调变,及NRZ编码。与此比较,FeliCa的调变雷同是 ASK10%,但不同的是聘任曼彻斯特编码。
开头被提案为 ISO 14443 type C, 但未被采纳。之后,FeliCa和其向后相容样貌被门径化为 ISO 18092(Near Field Communication, NFC, 近距离通讯)。在日本国内,被算作 JICSAP IC卡规格 V2.0 “第四部分 高速处理用IC卡”和日本鉄说念サイバネティクス契约会的IC卡规格而给予门径化。
FeliCa和一般的IC卡雷同有适用于现款卡或识别卡的期间,但为了条件高速处理特质(自动充值开发、大楼收支管束等)或结帐(便利商店)等等的运用,将教唆集加以稀奇化。因此和 ISO 7816-3 的基本教唆并不相容。且 IC芯片里面的内存固定为16字节长的记载,因此和 ISO 7816-3规则的档案结构亦不相容。
加密处理方面,互相认证使用Triple DES,通讯使用DES或Triple DES。莫得公开密钥加密的规格。双模子式(构兵/非构兵)天然不错有公开密钥加密,但只在构兵通讯时使用。
互相认证时、缩退码被作为加解的密码来使用。不是说每一个花样个别认证、它是通过复数的探询码加密生成的键称为腐臭码,这个腐臭码最多可供16个花样使用。缩退码生不能正本的密码。这么,不裁汰安全级别的情况下终了高速化处理。相较于标签NFC期间来说,Felica显得有点“另类而独到”。因此,它的商场占有率低,使用场景较少导致市面上很少有撑抓这类卡的读写开发。
由于Felica卡在咱们这里基本上莫得被使用。是以,当今市面上撑抓Felica卡的智能卡读写器就比较少了。因此,诺塔斯智能科技有限公司为了匡助客户科罚读写Felica卡的周折,研发了一款撑抓多种契约的NFC读写器。
开头,它撑抓ISO14443 TYPE A、ISO14443 TYPE B和ISO15693等多种契约,不错与多种类型的非构兵式智能卡和电子标签进行通讯,从而知足用户在不同场景下的需求。
此外,诺塔斯L12-2823读写器提供了多种平台和多说话的二次开发包,包括丰富的函数接口和范例源码,使得用户在进行二次开发时大略轻便照搬范例,大大裁汰了开发难度,提升了开发服从。以下内容是对于基于Felica期间的NFC标签读写范例,供世界参考。
开头,运行化一下 unit LotusCardDriver;,这是里面界说了开发的多样参数,需要援用进来。windows环境中还需要援用LotusCardDriver.dll;这个文献分为32位和64位,这个要凭证我方花样运行的操作系统弃取正确的版块。
第一步,确立读写器与上位机开发的硬件通讯,这里咱们在使用windows操作系统的
电脑上进行演示。
{/**
* 绽放开发
*
* @param strDeviceName
* 串口开发称呼
* @param nVID
* USB开发VID
* @param nPID
* USB开发PID
* @param unRecvTimeOut
* 收受恭候长度
* @param nUsbDeviceIndex
* USB开发索引
* @return 句柄
*/}
function LotusCardOpenDevice(pszDeviceName:PAnsiChar;nVID, nPID, nUsbDeviceIndex, unRecvTimeOut:Integer;pExtendReadWrite:TLotusCardExtendReadWriteCallBackFunc):Integer;stdcall; external DLL_NAME;
第二步、树立读卡器的读卡类型,由于读写器撑抓多种卡类型,这里需要运行化卡类型。
/**
* 树立卡片类型
* @param nDeviceHandle
* 开发句柄
* @param cCardType 卡片类型 A='A'/'a' B='B'/'b' F='F'/'f' C='C'/'c'
* @return true = 得胜
*/}
function LotusCardSetCardType( nDeviceHandle:Integer; cCardType:AnsiChar):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica寻卡
* @param nDeviceHandle
* 开发句柄
* @param unTimerSlot timer slot 0x00 0x01 0x03 0x07 0x0F
* @param tLotusCardParam 参数(读写缓冲)
* @return true = 得胜
*/}
function LotusCardFelicaPolling(nDeviceHandle:Integer; unTimerSlot:Byte; sttpLotusCardParam:PLotusCardParamStruct):BOOL; stdcall; external DLL_NAME;
{
第三步,引申读写卡函数
function LotusCardNfcVWriteNBlock(nDeviceHandle:Integer; unBlockIndex:DWORD; unBlockCount:DWORD; pUid:PByte; pBuffer:PByte; unBufferLength:DWORD):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica寻卡
* @param nDeviceHandle
* 开发句柄
* @param pUid 参数 UID 8字节
* @param pPMM 参数 PMM
* @param pPSC 参数 Primary System Code
* @return true = 得胜
*/}
function LotusCardNfcFRequest(nDeviceHandle:Integer; pUid, pPMM, pPSC:PByte):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica读卡
* @param nDeviceHandle
* 开发句柄
* @param unBlockIndex 参数 块索引
* @param pUid 参数 UID 8字节
* @param pBuffer 参数 缓冲
* @param punBufferLength 参数 缓冲长度 复返适度长度
* @return true = 得胜
*/}
function LotusCardNfcFReadBlock(nDeviceHandle:Integer; unBlockIndex:DWORD; pUid, pBuffer:PByte; punBufferLength:PDWORD):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica读卡
* @param nDeviceHandle
* 开发句柄
* @param unBlockIndex 参数 块索引
* @param unBlockCount 参数 块数目
* @param pUid 参数 UID 8字节
* @param pBuffer 参数 缓冲
* @param punBufferLength 参数 缓冲长度 复返适度长度
* @return true = 得胜
*/}
function LotusCardNfcFReadNBlock(nDeviceHandle:Integer; unBlockIndex:DWORD; unBlockCount:DWORD; pUid, pBuffer:PByte; punBufferLength:PDWORD):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica写卡
* @param unBlockIndex 参数 块索引
* @param pUid 参数 UID 8字节
* @param pBuffer 参数 缓冲
* @param punBufferLength 参数 缓冲长度 复返适度长度
* @return true = 得胜
*/}
function LotusCardNfcFWriteBlock( nDeviceHandle:Integer; unBlockIndex:DWORD; pUid, pBuffer:PByte; punBufferLength:PDWORD):BOOL; stdcall; external DLL_NAME;
{ /**
* Felica写卡
* @param unBlockIndex 参数 块索引
* @param unBlockCount 参数 块数目
* @param pUid 参数 UID 8字节
* @param pBuffer 参数 缓冲
* @param punBufferLength 参数 缓冲长度 复返适度长度
* @return true = 得胜
*/}
function LotusCardNfcFWriteNBlock( nDeviceHandle:Integer; unBlockIndex, unBlockCount:DWORD; pUid, pBuffer:PByte; punBufferLength:PDWORD):BOOL; stdcall; external DLL_NAME;
引申读写完成之后,不错对开发进行关闭。
/**
* 关闭开发
*
* @param nDeviceHandle
* 开发句柄
*/}
procedure LotusCardCloseDevice(nDeviceHandle:Integer);stdcall; external DLL_NAME;//'LotusCardDriver.dll';
以上是基于Felica期间的NFC标签读写范例,为了浅易用户巡视骨子成果。绽放PC测试器具,双击TestLotusCardReader.exe引申文献,弃取Felica功能菜单。如下图所示:
点击“读数据”按钮,读取适度如下:
示例中修改第5块数据内容,如下所示:
以上内容是基于Felica期间的NFC标签读写九游娱乐(China)官方网站,接待世界进行期间交流。