在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

USB免驅IC讀卡器QT小程序開發

鄒振豪 ? 來源:jf_51178285 ? 2025-01-04 10:55 ? 次閱讀

經典USB免驅全協議IC卡讀寫器讀取FM1208CPU卡。

FM1208CPU卡是一款由上海復旦微電子股份有限公司(Fudan Microelectronics Group, FMG)研發的高端智能非接觸CPU卡芯片。以下是對該產品的詳細介紹:

一、技術特點
1.先進工藝:FM1208采用先進的超深亞微米EEPROM工藝技術制造,具有高性能和穩定性。
大容量存儲:該芯片擁有64K Byte EEPROM的存儲容量,可以支持多種應用,如公交結算、小額支付等金融行業應用,實現一卡多種功能。
2.高安全性:芯片內置硬件DES協處理器,支持Triple-DES加密,提供比普通卡片更高的安全性。同時,芯片和卡片操作系統(COS)的協同安全技術為CPU卡提供了雙重的安全保證,有效防止金融交易中的數據錯誤,保護消費者交易的私密性、安全性及個人利益。
3.廣泛兼容性:FM1208符合ISO14443 Type A標準和ISO/IEC 7816-5規范,可以兼容現有的非接觸邏輯加密卡,如市場上廣泛應用的S50等,方便在已有應用下的升級和擴展。


二、功能與應用
功能強大:FM1208不僅具有數據存儲功能,還具有命令處理、計算和數據加密等功能。其內置的卡片操作系統(COS)使得該芯片相當于一臺微型計算機,可以根據實際應用情況靈活改變系統,滿足客戶的不同需求。
應用領域廣泛:FM1208CPU卡廣泛應用于城市公交、一卡通、高速公路卡、小額消費卡、校園卡、金融支付電子錢包、身份認證等領域。其高安全性、大容量和廣泛兼容性使得該芯片在這些領域中具有顯著的優勢。


三、性能指標
通信協議:支持ISO 14443-A協議,工作頻率為13.56MHz。
數據傳輸速率:支持高達106Kbps的數據傳輸速率。
程序存儲器:32K x 8bit ROM。
數據存儲器:8K x 8bit EEPROM,滿足10萬次擦寫和10年數據保存指標。
內置RAM:256 x 8bit iRAM和384 x 8bit xRAM。
工作距離:不小于10CM。
識別時間:識別一張卡的時間約為3ms(包括復位應答和防沖突)。
EEPROM擦寫時間:約為2.4ms。
典型交易過程:小于350ms。


四、市場應用與反饋
FM1208CPU卡已在多個城市大面積推廣,如重慶的掌中行、合肥的一卡通等。特別是上海公共交通方面的試點,為非接觸CPU卡在長江三角洲乃至全國的公交領域的應用推廣起到了示范和推動作用。該產品的推出和應用,不僅提高了城市區域經濟合作水平,還實現了城際間的互聯互通,加強了城市間的聯系。

綜上所述,FM1208CPU卡憑借其先進的技術特點、廣泛的應用領域以及卓越的性能指標,在智能卡市場中占據了重要地位。

QT小程序UI界面:

wKgZPGd190WAc959AADXyqHejNw472.png

QT小程序mainWindow.cpp代碼:

static bool checkinput(QString inputstr){
    QString inputyes="0123456789abcdefABCDEF";
    for(int i=0;isetupUi(this);
 
    QPalette pa;
    pa.setColor(QPalette::WindowText,QColor(255, 0, 0));
    ui->label_7->setPalette(pa);
    ui->label_8->setPalette(pa);
    ui->label_9->setPalette(pa);
    ui->label_19->setPalette(pa);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
void MainWindow::on_pb_beep_clicked()
{
    if(!checkdllos()){return;}      //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;
    if (mypcdbeep != NULL){         //是否成功連接上 pcdbeep()函數
        status = mypcdbeep(30);
        if(status==0){
        }
        else
        {
            disperrinf(status);
        }
    } else{
        QMessageBox::critical(NULL, "提示", "函數‘pcdbeep’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_getdevnum_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char devicenumber[4];    //設備編號緩沖
    unsigned char status;             //函數返回狀態
    if (mypcdgetdevicenumber != NULL){         //是否成功連接上 pcdgetdevicenumber()函數
        status = mypcdgetdevicenumber(devicenumber);
        if(status==0){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", QString::asprintf("設備編號:%03d-%03d-%03d-%03d", devicenumber[0],devicenumber[1],devicenumber[2],devicenumber[3]));
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘pcdgetdevicenumber’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_request_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char mypiccserial[4];    //卡序列號
    unsigned char myparam[4];         //參數
    unsigned char myver[1];           //版本
    unsigned char mycode[1];          //廠商代碼(復旦為90)
    unsigned char status;             //函數返回狀態
 
    if (mycpurequest != NULL){        //是否成功連接上 cpurequest()函數
        status = mycpurequest(mypiccserial,myparam,myver,mycode);
        if(status==0  || status==52){
            mypcdbeep(30);
            QString uidstr=QString::asprintf("%02X%02X%02X%02X", mypiccserial[0],mypiccserial[1],mypiccserial[2],mypiccserial[3]);
            QString parstr=QString::asprintf("%02X%02X%02X%02X", myparam[0],myparam[1],myparam[2],myparam[3]);
            QString verstr=QString::asprintf("%02X", myver[0]);
            QString codestr=QString::asprintf("%02X", mycode[0]);
 
            ui->lineEdit_uid->setText(uidstr);
            QMessageBox::information(NULL, "提示", "卡號:"+uidstr+",參數:"+parstr+",版本號:"+verstr+",廠商代碼:"+codestr+" 的CPU卡已激活進入14443-4協議模式,可以繼續以下的功能操作!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpurequest’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_init_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char ctrlword;           //是否先清空卡
    unsigned char mylen[1];           //密鑰長度
    unsigned char keybuf[20];         //密鑰
    int keylen;
    int spacesize;                    //空間大小
 
    if(ui->checkBox_clear->isChecked()){
        ctrlword=1;
    }else{ctrlword=0;}
 
    QString writinf = ui->lineEdit_cardkey->text().trimmed();
    keylen=checkhexdata(writinf,keybuf);
    if(keylenlineEdit_cardkey->setFocus();
        return;
    }
 
    mylen[0]=keylen;
    spacesize=ui->spinBox_maxsize->value();
 
    if (mycpursinit != NULL){        //是否成功連接上 cpursinit()函數
        status = mycpursinit(ctrlword,keybuf,mylen,spacesize);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "CPU卡初始化成功!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursinit’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
void MainWindow::on_pb_addeasyfile_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char readkeylen[1];      //只讀密鑰長度
    unsigned char readkeybuf[20];     //只讀密鑰
    unsigned char rwkeylen[1];        //讀寫密鑰長度
    unsigned char rwkeybuf[20];       //讀寫密鑰
    int keylen;
    int spacesize;                    //空間大小
    QString keystr;
 
    fileno=ui->comboBox_addfile->currentIndex(); //新增加的文件號
 
    keystr = ui->lineEdit_readkey->text().trimmed();
    keylen=checkhexdata(keystr,readkeybuf);
    if(keylenlineEdit_readkey->setFocus();
        return;
    }
    readkeylen[0]=keylen;
 
    keystr = ui->lineEdit_rwkey->text().trimmed();
    keylen=checkhexdata(keystr,rwkeybuf);
    if(keylenlineEdit_rwkey->setFocus();
        return;
    }
    rwkeylen[0]=keylen;
 
    spacesize=ui->spinBox_2->value();
 
    if (mycpursfileadd_s != NULL){        //是否成功連接上 cpursfileadd_s()函數
        status = mycpursfileadd_s(fileno,readkeybuf,readkeylen,rwkeybuf,rwkeylen,spacesize);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "CPU卡創建易寫文件成功,需要使用易寫函數寫入文件數據!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfileadd_s’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
 
void MainWindow::on_pb_addfile_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char readkeylen[1];      //只讀密鑰長度
    unsigned char readkeybuf[20];     //只讀密鑰
    unsigned char rwkeylen[1];        //讀寫密鑰長度
    unsigned char rwkeybuf[20];       //讀寫密鑰
    int keylen;
    int spacesize;                    //空間大小
    QString keystr;
 
    fileno=ui->comboBox_addfile->currentIndex();  //新增加的文件號
 
    keystr = ui->lineEdit_readkey->text().trimmed();
    keylen=checkhexdata(keystr,readkeybuf);
    if(keylenlineEdit_readkey->setFocus();
        return;
    }
    readkeylen[0]=keylen;
 
    keystr = ui->lineEdit_rwkey->text().trimmed();
    keylen=checkhexdata(keystr,rwkeybuf);
    if(keylenlineEdit_rwkey->setFocus();
        return;
    }
    rwkeylen[0]=keylen;
 
    spacesize=ui->spinBox_2->value();
 
    if (mycpursfileadd != NULL){        //是否成功連接上 cpursfileadd()函數
        status = mycpursfileadd(fileno,readkeybuf,readkeylen,rwkeybuf,rwkeylen,spacesize);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "CPU卡創建標準文件成功,需使用寫標準文件函數寫入數據!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfileadd’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_changkey_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char ctrlword;           //控制字
    unsigned char oldkeylen[1];       //舊密鑰長度
    unsigned char oldkeybuf[20];      //舊密鑰
    unsigned char newkeylen[1];       //新密鑰長度
    unsigned char newkeybuf[20];      //新密鑰
    int keylen;
    QString keystr;
 
    fileno=ui->comboBox_changekeyfile->currentIndex();  //要更改密鑰的文件號
 
    if(ui->comboBox_changekey->currentIndex()==0){
        ctrlword=NEWKEYR;       //更改只讀密碼
    }else{ctrlword=NEWKEYWR;}   //更改讀寫密碼
 
    if(ui->comboBox_authkey->currentIndex()==0){
        ctrlword=ctrlword+OLDKEYR;      //用只讀密碼來認證
    }else{ctrlword=ctrlword+OLDKEYWR;}  //用讀寫密碼來認證
 
    keystr = ui->lineEdit_authkey->text().trimmed();
    keylen=checkhexdata(keystr,oldkeybuf);
    if(keylenlineEdit_authkey->setFocus();
        return;
    }
    oldkeylen[0]=keylen;
 
    keystr = ui->lineEdit_newkey->text().trimmed();
    keylen=checkhexdata(keystr,newkeybuf);
    if(keylenlineEdit_newkey->setFocus();
        return;
    }
    newkeylen[0]=keylen;
 
    if (mycpursfilekeychg != NULL){        //是否成功連接上 cpursfilekeychg()函數
        status = mycpursfilekeychg(fileno,ctrlword,oldkeybuf,oldkeylen,newkeybuf,newkeylen);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "修改文件密碼成功");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfilekeychg’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_read_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char ctrlword;           //控制字
    unsigned char oldkeylen[1];       //舊密鑰長度
    unsigned char oldkeybuf[20];      //舊密鑰
    int staradd;                      //讀寫起始地址
    int datalen;                      //讀寫長度
    unsigned char rwbuf[8000];        //讀寫數據緩沖
    int keylen;
    QString keystr;
 
    fileno=ui->comboBox_rwfile->currentIndex();  //要讀寫的文件號
    staradd=ui->spinBox_rwbegin->value();        //讀寫起始地址
    datalen=ui->spinBox_rwlen->value();          //讀寫數據長度
    if(datalen255){
        QMessageBox::critical(NULL, "提示", "每次讀卡最多255字節,請輸入正確的讀卡長度!");
        ui->spinBox_rwlen->setFocus();
        return;
    }
 
    if(ui->comboBox_authrwkey->currentIndex()==0){
        ctrlword=OLDKEYR;      //用只讀密碼來認證
    }else{ctrlword=OLDKEYWR;}  //用讀寫密碼來認證
 
    keystr = ui->lineEdit_authkey2->text().trimmed();
    keylen=checkhexdata(keystr,oldkeybuf);
    if(keylenlineEdit_authkey2->setFocus();
        return;
    }
    oldkeylen[0]=keylen;
 
    if (mycpursfiledataread != NULL){        //是否成功連接上 cpursfiledataread()函數
        status = mycpursfiledataread(fileno,ctrlword,oldkeybuf,oldkeylen,staradd,rwbuf,datalen);
        if(status==0 ){
            mypcdbeep(30);
            QString datastr="";
            for(int i=0;iplainTextEdit->setPlainText(datastr);
 
            QMessageBox::information(NULL, "提示", "讀取數據成功!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfiledataread’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
 
void MainWindow::on_pb_write_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char ctrlword;           //控制字
    unsigned char oldkeylen[1];       //舊密鑰長度
    unsigned char oldkeybuf[20];      //舊密鑰
    int staradd;                      //讀寫起始地址
    int datalen;                      //讀寫長度
    unsigned char rwbuf[8000];        //讀寫數據緩沖
    int keylen;
    QString keystr;
    QString datastr;
 
    keystr = ui->lineEdit_authkey2->text().trimmed();
    keylen=checkhexdata(keystr,oldkeybuf);
    if(keylenlineEdit_authkey2->setFocus();
        return;
    }
    oldkeylen[0]=keylen;
 
    datastr = ui->plainTextEdit->toPlainText().trimmed();
    datalen=checkhexdata(datastr,rwbuf);
    if(datalenplainTextEdit->setFocus();
        return;
    }
 
    fileno=ui->comboBox_rwfile->currentIndex();  //要讀寫的文件號
    staradd=ui->spinBox_rwbegin->value();        //讀寫起始地址
    datalen=ui->spinBox_rwlen->value();          //讀寫數據長度
    if(datalen247){
        QMessageBox::critical(NULL, "提示", "每次寫卡最多247字節,請輸入正確的寫卡長度!");
        ui->spinBox_rwlen->setFocus();
        return;
    }
 
    if(ui->comboBox_authrwkey->currentIndex()==0){
        ctrlword=OLDKEYR;      //用只讀密碼來認證
    }else{ctrlword=OLDKEYWR;}  //用讀寫密碼來認證
 
    if (mycpursfiledatawrite != NULL){        //是否成功連接上 cpursfiledatawrite()函數
        status = mycpursfiledatawrite(fileno,ctrlword,oldkeybuf,oldkeylen,staradd,rwbuf,datalen);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "寫入數據成功!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfiledatawrite’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_easy_write_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char fileno;             //文件號
    unsigned char ctrlword;           //控制字
    unsigned char oldkeylen[1];       //舊密鑰長度
    unsigned char oldkeybuf[20];      //舊密鑰
    int staradd;                      //讀寫起始地址
    int datalen;                      //讀寫長度
    unsigned char rwbuf[8000];        //讀寫數據緩沖
    int keylen;
    QString keystr;
    QString datastr;
 
    keystr = ui->lineEdit_authkey2->text().trimmed();
    keylen=checkhexdata(keystr,oldkeybuf);
    if(keylenlineEdit_authkey2->setFocus();
        return;
    }
    oldkeylen[0]=keylen;
 
    datastr = ui->plainTextEdit->toPlainText().trimmed();
    datalen=checkhexdata(datastr,rwbuf);
    if(datalenplainTextEdit->setFocus();
        return;
    }
 
    fileno=ui->comboBox_rwfile->currentIndex();  //要讀寫的文件號
    staradd=ui->spinBox_rwbegin->value();        //讀寫起始地址
    datalen=ui->spinBox_rwlen->value();          //讀寫數據長度
 
    if(ui->comboBox_authrwkey->currentIndex()==0){
        ctrlword=OLDKEYR;      //用只讀密碼來認證
    }else{ctrlword=OLDKEYWR;}  //用讀寫密碼來認證
 
    if (mycpursfiledatawrite_s != NULL){        //是否成功連接上 cpursfiledatawrite_s()函數
        status = mycpursfiledatawrite_s(fileno,ctrlword,oldkeybuf,oldkeylen,staradd,rwbuf,datalen);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "寫入數據成功!");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpursfiledatawrite_s’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_clear_clicked()
{
    if(!checkdllos()){return;}      //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;
    if (mycpurscardclr != NULL){         //是否成功連接上 cpurscardclr()函數
        status = mycpurscardclr();
        if(status==0){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "cpu卡強制清空卡成功");
        }else{
            if(status==64){
                QMessageBox::information(NULL, "提示", "此卡為未經過我們cpursinit函數成功初始化的卡");
            }else{
                disperrinf(status);
            }
        }
    } else{
        QMessageBox::critical(NULL, "提示", "函數‘cpurscardclr’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_changecardkey_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char status;             //函數返回狀態
    unsigned char oldkeylen[1];       //舊密鑰長度
    unsigned char oldkeybuf[20];      //舊密鑰
    unsigned char newkeylen[1];       //新密鑰長度
    unsigned char newkeybuf[20];      //新密鑰
    int keylen;
    QString keystr;
 
    keystr = ui->lineEdit_cardoldkey->text().trimmed();
    keylen=checkhexdata(keystr,oldkeybuf);
    if(keylenlineEdit_cardoldkey->setFocus();
        return;
    }
    oldkeylen[0]=keylen;
 
    keystr = ui->lineEdit_cardnewkey->text().trimmed();
    keylen=checkhexdata(keystr,newkeybuf);
    if(keylenlineEdit_cardnewkey->setFocus();
        return;
    }
    newkeylen[0]=keylen;
 
    if (mycpurscardkeychg != NULL){        //是否成功連接上 cpurscardkeychg()函數
        status = mycpurscardkeychg(oldkeybuf,oldkeylen,newkeybuf,newkeylen);
        if(status==0 ){
            mypcdbeep(30);
            QMessageBox::information(NULL, "提示", "修改卡片密碼成功");
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpurscardkeychg’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 
 
void MainWindow::on_pb_request1_clicked()
{
    if(!checkdllos()){return;}        //判斷運行目錄內動態庫文件是否存在
 
    unsigned char mypiccserial[4];    //卡序列號
    unsigned char atqasakbuf[3];      //參數
    unsigned char status;             //函數返回狀態
 
    if (mypiccrequest1 != NULL){        //是否成功連接上 cpurequest()函數
        status = mypiccrequest1(mypiccserial,atqasakbuf);
        if(status==0  || status==52){
            mypcdbeep(30);
            QString uidstr=QString::asprintf("%02X%02X%02X%02X", mypiccserial[0],mypiccserial[1],mypiccserial[2],mypiccserial[3]);
            QString atqastr=QString::asprintf("%02X%02X", atqasakbuf[0],atqasakbuf[1]);
            QString sakstr=QString::asprintf("%02X", atqasakbuf[2]);
 
            ui->lineEdit_uid->setText(uidstr);
            QMessageBox::information(NULL, "提示", "卡號:"+uidstr+",ATQA:"+atqastr+",SAK:"+sakstr);
        }
        else
        {
            disperrinf(status);
        }
    }else{
        QMessageBox::critical(NULL, "提示", "函數‘cpurequest’未正確載入,請查詢DLL文件版本是否正確!");
    }
}
 

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IC卡
    +關注

    關注

    2

    文章

    168

    瀏覽量

    34161
  • 讀卡器
    +關注

    關注

    2

    文章

    419

    瀏覽量

    39408
  • EEPROM
    +關注

    關注

    9

    文章

    1027

    瀏覽量

    81769
  • 小程序
    +關注

    關注

    1

    文章

    238

    瀏覽量

    12187
收藏 人收藏

    評論

    相關推薦

    IC讀卡器

    `IC讀卡器型號:HBTZ---920本公司供應IC讀卡器,品牌河北泰澤,型號HBTZ---920。質量保證,歡迎咨詢洽談。`
    發表于 09-18 15:24

    關于LABVIEW讀取USB-RFID讀卡器卡號問題

    有沒有那位大神用LABVIEW程序讀取過USB-RFID刷卡的(讀取ID卡和IC卡2種讀卡器,每刷一次讀取里面的卡號數據)!!指教下。
    發表于 12-23 23:35

    電腦相關的讀卡器

    讀卡器是從卡形存儲介質讀取數據的數據輸入設備。讀卡器可根據不同類型的卡分為接觸式和非接觸式IC讀卡器和遠程讀卡器。觸點
    發表于 09-16 16:51

    關于USB讀卡器的問題如何解決

    今天在測試USB讀卡器這個例程,我把程序下載到開發板后,電腦檢測可移動磁盤。但是我雙擊該移動磁盤,彈出“請將磁盤插入驅動G”請教原子大哥和
    發表于 06-17 04:20

    usb讀卡器萬能驅動下載

    usb讀卡器萬能驅動下載
    發表于 01-12 10:15 ?451次下載

    基于ARM的射頻IC讀卡器設計

    本文根據TCP/IP 網絡中讀卡器的訪問需求,提出基于ARM 的射頻IC讀卡器的設計方案,并給出了詳細的設計過程
    發表于 09-12 16:58 ?63次下載

    門禁系統非接觸式IC讀卡器的設計

    門禁系統非接觸式IC讀卡器的設計摘要: 非接觸式IC讀卡器是非接觸式IC 卡技術應用的關鍵之一。文中給出了門禁系統非接觸式
    發表于 05-30 17:03 ?435次下載

    支持可編程密集讀卡器模式的RFID讀卡器IC上市

    支持可編程密集讀卡器模式的RFID讀卡器IC上市 奧地利微電子公司(SWX 股票代碼:AMS)今天推出AS3992,擴展了旗下面向Gen 2應用的、市場領先的UHF RFID讀卡器
    發表于 12-16 09:33 ?1298次閱讀
    支持可編程密集<b class='flag-5'>讀卡器</b>模式的RFID<b class='flag-5'>讀卡器</b><b class='flag-5'>IC</b>上市

    讀卡器的接口類型

    讀卡器的接口類型              接口類型是指讀卡器與電腦主機之間的連接方式和類型。目前讀卡器都是采用
    發表于 01-09 15:06 ?4435次閱讀

    ID讀卡器程序

    ID讀卡器程序,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-05 14:48 ?21次下載

    基于STM32的USB讀卡器的設計

    基于STM32的USB讀卡器的設計
    發表于 09-25 11:11 ?29次下載
    基于STM32的<b class='flag-5'>USB</b><b class='flag-5'>讀卡器</b>的設計

    IC讀卡器輸出設置格式應用程序免費下載

    本文檔的主要內容詳細介紹的是IC讀卡器輸出設置格式應用程序免費下載。
    發表于 09-30 17:29 ?219次下載
    <b class='flag-5'>IC</b><b class='flag-5'>讀卡器</b>輸出設置格式應用<b class='flag-5'>程序</b>免費下載

    ID讀卡器TCP協議QT程序開發

    ID卡網絡讀卡器TCP協議QT程序開發。 TCP(傳輸控制協議,Transmission Control Protocol)是互聯網中最核心、最基本的協議之一。以下是對TCP協議的詳
    的頭像 發表于 12-31 10:19 ?102次閱讀
    ID<b class='flag-5'>讀卡器</b>TCP協議<b class='flag-5'>QT</b>小<b class='flag-5'>程序</b><b class='flag-5'>開發</b>

    液顯ID讀卡器C#小程序開發

    液顯WIFI無線讀卡器ID-10F用C#語音開發HTTP協議讀卡程序讀卡器圖片如下:? ID讀卡器
    的頭像 發表于 01-10 15:31 ?57次閱讀
    液顯ID<b class='flag-5'>讀卡器</b>C#小<b class='flag-5'>程序</b><b class='flag-5'>開發</b>

    ID讀卡器Python小程序開發

    液顯ID讀卡器UDP協議開發Python小程序。代碼如下: ? # pip install netifacesimport subprocessimport structimport
    的頭像 發表于 01-10 16:05 ?83次閱讀
    主站蜘蛛池模板: 你懂的网站在线观看网址| 久精品在线观看| 天堂最新版免费观看| 天天色影视综合网| 色咪网| 欧美黄色片免费看| 国产精品一区牛牛影视| 国产亚洲papapa| 2021国产精品成人免费视频| 五月天婷婷基地| 天天操中文字幕| 国产精品美女www爽爽爽视频| 亚洲91在线视频| 一区二区三区四区在线不卡高清| 免费大片a一级一级| 亚洲第一看片| 欧洲妇女成人淫片aaa视频 | 加勒比在线免费视频| 在线观看黄网| 欧美性猛交aa一级| 午色| 久久综合九色婷婷97| 欧美大片一区二区三区| 黄色18网站| 天天综合天天综合色在线| 黄录像欧美片在线观看| 亚洲一二三区在线观看| 亚洲bt天堂| 理论片人人51| 亚洲成人午夜影院| 99综合在线| 2021色噜噜狠狠综曰曰曰| 色视频网| 丁香四月婷婷| 美女被日出白浆| 日本欧美一区二区三区视频| 天堂成人在线观看| 国产一二三区在线观看| 酒色网址| 欧美日本视频一区| 色天使久久|