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

非接觸式IC卡讀寫器在QT平臺的二次開發(fā)范例

2019-05-30 18:01:00
諾塔斯智能科技
原創(chuàng)
6102
摘要:?目前有部分客戶在使用QT平臺上接入我們的智能卡讀寫器產(chǎn)品,因此,我們專門為QT用戶提供了一套開發(fā)包,部分范例如下,如需詳細(xì)開發(fā)范例和技術(shù)支持,請聯(lián)系我們! 第一,我們需要導(dǎo)入 我們定義的頭文件,#include "LotusCardDriver.h",這個里面做了一些相關(guān)定義,具體請參考開發(fā)范例源文件。 第二、在main()函數(shù)中對設(shè)備進(jìn)行初始化;

首先我們需要認(rèn)識一下,什么是QT。

是一個1991年由Qt Company開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣埽褂锰厥獾拇a生成擴(kuò)展(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴(kuò)展,并且允許真正地組件編程。

QT平臺

目前有部分客戶在使用QT平臺上接入我們的智能卡讀寫器產(chǎn)品,因此,我們專門為QT用戶提供了一套開發(fā)包,部分范例如下,如需詳細(xì)開發(fā)范例和技術(shù)支持,請聯(lián)系我們!

第一,我們需要導(dǎo)入 我們定義的頭文件,#include "LotusCardDriver.h",這個里面做了一些相關(guān)定義,具體請參考開發(fā)范例源文件。

第二、在main()函數(shù)中對設(shè)備進(jìn)行初始化;

int main(int argc, char *argv[])
{
    BOOL bResult = FALSE;
    LotusHandle  hLotusCard = LotusCardOpenDevice("",0,0,0,0,NULL);
    if( hLotusCard != -1)
    {
        //TestIcCard(hLotusCard);
        ChangeM1Password(hLotusCard);
        LotusCardCloseDevice(hLotusCard);
    }
    else
    {
        printf("error %d\r\n", hLotusCard);
    }
    cout << "Hello World!" << endl;
    return hLotusCard;
//    return 0;
}


設(shè)備初始化通過LotusCardOpenDevice("",0,0,0,0,NULL)方法實現(xiàn)。參數(shù)strDeviceName:為字符長度為0使用USB通道,否則使用串口通道
參數(shù)nVID\nPID參數(shù)如果為0,動態(tài)庫使用內(nèi)部定義值,原則上建議使用0,除非范例有明確賦值。
特別聲明:使用外部讀寫接口優(yōu)先,參見回調(diào)函數(shù)
/**
* 打開設(shè)備

* @param strDeviceName
*            串口設(shè)備名稱
* @param nVID
*            USB設(shè)備VID
* @param nPID
*            USB設(shè)備PID
* @param nUsbDeviceIndex
*            USB設(shè)備索引
* @param unRecvTimeOut
*            接收超時
* @param bUseExendReadWrite
*            是否使用外部讀寫通道 如果沒有設(shè)備寫權(quán)限時,可以使用外部USB或串口進(jìn)行通訊,
*            需要改造callBackProcess中相關(guān)代碼完成讀寫工作 目前范例提供USB操作
* @return 設(shè)備句柄
*/

public native int OpenDevice(String strDeviceName, int nVID, int nPID,
int nUsbDeviceIndex, int unRecvTimeOut, boolean bUseExendReadWrite);
第三、非接觸式IC卡的讀寫操作,需要對密碼的驗證,密碼正確即可實現(xiàn)對IC卡的讀寫。

void TestIcCard(LotusHandle hLotusCard)
{
    LotusCardParamStruct sttLotusCardParam;
    BOOL bResult = FALSE;
    bResult = LotusCardBeep(hLotusCard, 10);
    unsigned int nCardNo = 0;
    if(FALSE == bResult) return;
    int nRequestType = RT_NOT_HALT;
      //獲取卡號 同執(zhí)行下面三個函數(shù)
      memset(&sttLotusCardParam, 0x00, sizeof(sttLotusCardParam));
      bResult = LotusCardGetCardNo(hLotusCard,nRequestType, &sttLotusCardParam);
      if(FALSE == bResult) return;
      memcpy(&nCardNo, sttLotusCardParam.arrCardNo, 4);
      printf("卡號nCardNo 0x%x\r\n", nCardNo);
      //裝載密碼A
      memset(&sttLotusCardParam.arrKeys, 0x00, sizeof(sttLotusCardParam.arrKeys));
      sttLotusCardParam.arrKeys[0]=0xff;
      sttLotusCardParam.arrKeys[1]=0xff;
      sttLotusCardParam.arrKeys[2]=0xff;
      sttLotusCardParam.arrKeys[3]=0xff;
      sttLotusCardParam.arrKeys[4]=0xff;
      sttLotusCardParam.arrKeys[5]=0xff;
      sttLotusCardParam.nKeysSize = 6;
      bResult =LotusCardLoadKey(hLotusCard, AM_A, 0, &sttLotusCardParam);
      if(FALSE == bResult) return;
      //驗證密碼
      bResult =LotusCardAuthentication(hLotusCard, AM_A, 0, &sttLotusCardParam);
      if(FALSE == bResult) return;
      //讀
      bResult=LotusCardRead(hLotusCard, 2, &sttLotusCardParam);
      if(FALSE == bResult) return;
      //寫
      memset(&sttLotusCardParam.arrBuffer, 0x00, sizeof(sttLotusCardParam.arrBuffer));
      sttLotusCardParam.arrBuffer[0] = 0x00;
      sttLotusCardParam.arrBuffer[1] = 0x01;
      sttLotusCardParam.arrBuffer[2] = 0x02;
      sttLotusCardParam.arrBuffer[3] = 0x03;
      sttLotusCardParam.arrBuffer[4] = 0x04;
      sttLotusCardParam.arrBuffer[5] = 0x05;
      sttLotusCardParam.arrBuffer[6] = 0x06;
      sttLotusCardParam.arrBuffer[7] = 0x07;
      sttLotusCardParam.arrBuffer[8] = 0x08;
      sttLotusCardParam.arrBuffer[9] = 0x09;
      sttLotusCardParam.arrBuffer[10] = 0x0a;
      sttLotusCardParam.arrBuffer[11] = 0x0b;
      sttLotusCardParam.arrBuffer[12] = 0x0c;
      sttLotusCardParam.arrBuffer[13] = 0x0d;
      sttLotusCardParam.arrBuffer[14] = 0x0e;
      sttLotusCardParam.arrBuffer[15] = 0x0f;
      sttLotusCardParam.nBufferSize=16;
      bResult=LotusCardWrite(hLotusCard, 2, &sttLotusCardParam);
      if(FALSE == bResult) return;
      bResult = LotusCardInitValue(hLotusCard, 2, 10);
      if(FALSE == bResult) return;
      printf("初始化值成功!\r\n");
      //減值
      bResult=LotusCardDecrement(hLotusCard, 2, 1);
      if(FALSE == bResult) return;
      printf("減值成功!\r\b");
/*      //中止
      bResult=LotusCardHalt(hLotusCard);
      if(FALSE == bResult) return;*/

以上內(nèi)容是非接觸式IC卡讀寫器在QT平臺的讀寫范例,用戶在開發(fā)過程中如有技術(shù)問題,請聯(lián)系我們。

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