<samp id="ov9xx"></samp>

          国内精品久久久久久中文字幕_人妻少妇精品无码专区二区_蜜臀AV人妻久久无码精品麻豆_99精品国产一区二区三区_国内精品久久久久久TV

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

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

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

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

          QT平臺(tái)

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

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

          第二、在main()函數(shù)中對(duì)設(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è)備初始化通過(guò)LotusCardOpenDevice("",0,0,0,0,NULL)方法實(shí)現(xiàn)。參數(shù)strDeviceName:為字符長(zhǎng)度為0使用USB通道,否則使用串口通道
          參數(shù)nVID\nPID參數(shù)如果為0,動(dòng)態(tài)庫(kù)使用內(nèi)部定義值,原則上建議使用0,除非范例有明確賦值。
          特別聲明:使用外部讀寫(xiě)接口優(yōu)先,參見(jiàn)回調(diào)函數(shù)
          /**
          * 打開(kāi)設(shè)備

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

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

          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;
                //獲取卡號(hào) 同執(zhí)行下面三個(gè)函數(shù)
                memset(&sttLotusCardParam, 0x00, sizeof(sttLotusCardParam));
                bResult = LotusCardGetCardNo(hLotusCard,nRequestType, &sttLotusCardParam);
                if(FALSE == bResult) return;
                memcpy(&nCardNo, sttLotusCardParam.arrCardNo, 4);
                printf("卡號(hào)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;
                //驗(yàn)證密碼
                bResult =LotusCardAuthentication(hLotusCard, AM_A, 0, &sttLotusCardParam);
                if(FALSE == bResult) return;
                //讀
                bResult=LotusCardRead(hLotusCard, 2, &sttLotusCardParam);
                if(FALSE == bResult) return;
                //寫(xiě)
                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卡讀寫(xiě)器在QT平臺(tái)的讀寫(xiě)范例,用戶(hù)在開(kāi)發(fā)過(guò)程中如有技術(shù)問(wèn)題,請(qǐng)聯(lián)系我們。

          發(fā)表評(píng)論
          評(píng)論通過(guò)審核后顯示。
          熱門(mén)文章推薦
          關(guān)于PSAM卡、SAM卡、SIM卡的特征和區(qū)別 2019-03-22 由于人們對(duì)PSAM卡、SAM卡、SIM卡的概念理解不到位加之很少仔細(xì)的對(duì)PSAM卡、SAM卡、SIM卡實(shí)物進(jìn)行區(qū)別,容易將PSAM卡、SAM卡、SIM卡混為一談。諾塔斯智能科技就PSAM卡、SAM卡、SIM卡三者特征和作用進(jìn)行介紹,幫助大家對(duì)PSAM卡、SAM卡、SIM卡進(jìn)行深刻的認(rèn)識(shí)和區(qū)分。
          M1卡常見(jiàn)問(wèn)題和處理方法 2019-02-21 M1卡是恩智浦出品的芯片縮寫(xiě),全稱(chēng)為NXP Mifare1系列,常用的有S50及S70兩種型號(hào),截止到2013年11月4日,已經(jīng)有國(guó)產(chǎn)芯片與其兼容,利用PVC封裝M1芯片、感應(yīng)天線,然后壓制成型后而制作的卡即是智能卡行業(yè)所說(shuō)的M1卡。M1卡的優(yōu)點(diǎn)是可讀可寫(xiě)的多功能卡,缺點(diǎn)是:價(jià)格稍貴,感應(yīng)距離短,目前適合非定額消費(fèi)系統(tǒng)、停車(chē)場(chǎng)系統(tǒng)、門(mén)禁考勤系統(tǒng)等,目前應(yīng)用最廣泛的非接觸式IC卡。
          NFC數(shù)據(jù)交換格式(NDEF)規(guī)范 2019-05-28 為實(shí)現(xiàn)標(biāo)簽和NFC設(shè)備,及NFC設(shè)備之間的交互通信,NFC論壇定義了稱(chēng)為NFC數(shù)據(jù)交換格式(NDEF)的通用數(shù)據(jù)格式。 NDEF是輕量級(jí)的緊湊的二進(jìn)制格式,可帶有URL,vCard和NFC定義的各種數(shù)據(jù)類(lèi)型。
          非接觸式IC卡(M1卡)區(qū)塊讀寫(xiě)控制 2019-02-21 非接觸式IC卡系列中的Mifare One (M1卡)的優(yōu)點(diǎn)是可讀可寫(xiě)的多功能卡,缺點(diǎn)是:價(jià)格稍貴,感應(yīng)距離短,目前適合非定額消費(fèi)系統(tǒng)、停車(chē)場(chǎng)系統(tǒng)、門(mén)禁考勤系統(tǒng)等,目前應(yīng)用最廣泛的 非接觸式IC卡。諾塔斯智能科技專(zhuān)業(yè)從事非接觸式IC卡讀寫(xiě)器的研發(fā)與銷(xiāo)售,為各行業(yè)用戶(hù)提供專(zhuān)業(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號(hào)宏帆天地1棟6樓
          • 諾塔斯智能科技在線客服
            在線客服
          • 重慶諾塔斯智能科技有限公司微信公眾號(hào)
            關(guān)注微信
          • 諾塔斯智能科技網(wǎng)上商城
            網(wǎng)上商城
          移動(dòng)訪問(wèn)
          日本添下边视频全过程_人妻少妇精品无码专区二区_蜜臀AV人妻久久无码精品麻豆_99精品国产一区二区三区

                <samp id="ov9xx"></samp>