精倫安全模塊-身份證讀卡器對接-Qt調用SDK

文章目錄

精倫身份證讀卡器

在這裏插入圖片描述

SDK

使用的是通用二次開發包V3.2的sdklinux

Dewlt.dll
JpgDll.dll
SavePhoto.dll
sdtapi.dll
sdtapi.h
Sdtapi.lib
二次開發接口說明V3.2.doc
複製代碼

sdk挺簡單,庫文件和頭文件;
開發文檔也挺詳細,文檔裏帶了一個c語言的例子,在這個例子基礎上,稍做修改就能夠拿到身份證信息。ios

qt調用測試讀取身份證

庫文件添加

在qtcreater中打開項目文件(.pro),而後右鍵選擇「添加庫」:
添加庫
選擇外部庫:
選擇庫類型-外部庫
點擊「瀏覽」添加庫文件,我這邊是用window平臺,就把linux和mac都去掉了。
選擇庫
而後點下一步、完成便可。
完成
添加後的內容以下:git

win32: LIBS += -L$$PWD/card/ -lSdtapi

INCLUDEPATH += $$PWD/card
DEPENDPATH += $$PWD/card
複製代碼

編譯器

這些dll庫通常是用VS的編譯的,因此項目須要使用vs的便器:api

編譯器

測試代碼

#include <QCoreApplication>
#include "sdtapi.h"
#include <QDebug>
#include <QTextEncoder>
#include <iostream>
#include <stdio.h>

int readCard() {
    int ret;
    int iPort=1;

    //初始化
    ret=InitComm(iPort);
    if ( ret )
    {
        //認證
        ret= Authenticate ();
        if (ret)
        {
// ReadBaseMsg接口調用測試;

            char Msg[200];
            ret= ReadBaseMsg ((unsigned char*)Msg, 0 );
            qDebug()<<"readBaseMsg: "<<ret<<", data: "<<QByteArray(Msg, 200).toHex();

            if (ret > 0 ){
            //顯示文字及圖片信息
                char buf[64] = {0};
                QByteArray data = QByteArray(Msg, 200);
// QString strUnicode;
// QByteArray strUtf8;
// QTextCodec* gbk = QTextCodec::codecForName("gbk"); //讀卡器讀出來的中文都是國標編碼,若是須要UTF-8的編碼,這裏能夠經過一下步驟轉換爲UTF-8編碼
// QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");

                //姓名
                memcpy(buf, data.left(31).data(), 31);
// strUnicode = gbk->toUnicode(buf);
// strUtf8 = utf8->fromUnicode(strUnicode);
                std::cout<<"name: "<<buf<<std::endl;
                std::cout<<"sex : "<<data.mid(31, 3).data()<<std::endl;


            }


            //ReadBaseInfos接口調用測試
            char name[32] = {0};
            char sex[8] = {0};
            char folk[8] = {0};
            char birth[16] = {0};
            char code[32]  = {0};
            char addr[128] = {0};
            char agency[32]= {0};
            char start[16]  = {0};
            char end[16]  = {0};

            ret= ReadBaseInfos (name, sex,folk,birth,code,addr,agency,start,end );
            if (ret > 0 )
            {
                printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",name, sex,folk,birth,code,addr,agency,start,end);
            }

        }
    }

    ret= CloseComm();
    return ret;


}
int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    readCard();

    return a.exec();
}
複製代碼

編譯運行

運行結果
上面是原始數據,下面是ReadBaseInfos接口返回的分段解析好的數據。bash

代碼上傳至git:gitee.com/fensnote/de…微信

歡迎關注微信公衆號:fensnote
在這裏插入圖片描述markdown

相關文章
相關標籤/搜索