日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

C++ QT開發(fā),IC讀寫器程序

鄒振豪 ? 來源:jf_51178285 ? 作者:jf_51178285 ? 2024-12-30 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第一步:新建一個qt C++項目

wKgZPGdyP_6AO_KvAAfrLdJihcY379.pngwKgZO2dyQDWABVsZAAgzAvh17MM970.png

在此需要注意,名稱和路徑不能有中文。

第二步:添加控件完成UI布局

wKgZO2dyQKGAQCG_AAF6fUjfXEM123.pngIC讀寫器讀寫IC卡數(shù)據(jù)塊

第三步:開始寫代碼

使設備發(fā)出滴滴響聲

wKgZPGdyQdGAa84uAADRl397VQk748.png

#define BLOCK0_EN   0x01
#define BLOCK1_EN   0x02
#define BLOCK2_EN   0x04
#define NEEDSERIAL  0x08
#define EXTERNKEY   0x10
#define NEEDHALT   0x20
 
//#define NEEDSERIAL  0x08
#define EXTERNKEY   0x10
 
 
//讓讀寫器發(fā)出聲音
typedef  unsigned char (*pcdbeep)(unsigned long xms);
 
//返回本讀寫器獨一無二的設備編號
typedef  unsigned char (*pcdgetdevicenumber)(unsigned long devicenumber);
 
//輕松讀卡
typedef unsigned char (*piccreadex)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *picckey,unsigned char *piccdata0_2);
 
//輕松寫卡
typedef unsigned char (*piccwriteex)(unsigned char ctrlword,unsigned char *serial,unsigned char area, unsigned char keyA1B0,unsigned char *picckey,unsigned char *piccdata0_2);
 
//改單區(qū)密碼
typedef unsigned char (*piccchangesinglekeyex)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *piccoldkey,unsigned char *piccdata);
 
//讀出一塊的數(shù)據(jù),也就是16個字節(jié)
typedef unsigned char (*piccread)(unsigned char block,unsigned char *piccdata);
 
//檢測輸入數(shù)據(jù)是否為16進制數(shù)
static bool checkinput(QString inputstr){
    QString inputyes="0123456789abcdefABCDEF";
    for(int i=0;isetupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
 
void MainWindow::on_pushButton_4_clicked()//讓設備發(fā)出聲響
{
    unsigned char result;
    QLibrary mylib("OUR_MIFARE.dll");
    if (!mylib.load())                //判斷是否正確加載
    {
        QMessageBox::information(NULL, "提示", "動態(tài)庫沒裝載!原因是動態(tài)庫OUR_MIFARE.dll沒放在生成exe文件相同目錄下!");
        return;
    }
 
    pcdbeep mypcdbeep = (pcdbeep)mylib.resolve("pcdbeep");
    if (mypcdbeep == NULL)                   //是否成功連接上 idr_beep()函數(shù)
    {
        mylib.unload();
        QMessageBox::information(NULL, "提示", "請檢查函數(shù)名是否正確!");
        return;
 
    }
 
 
    result = mypcdbeep(30);      //這里函數(shù)指針調用dll中的idr_beep() 函數(shù)
    mylib.unload();
    if(result > 0)
    {
        if(result == 23)
        {
            QMessageBox::information(NULL, "提示", "機器沒連上或者驅動沒下載");
        }
        else
        {
            QMessageBox::information(NULL, "提示", "錯誤代碼:" + QString::number(result));
        };
    }
    //qDebug()

讀卡功能

void MainWindow::on_pushButton_3_clicked()//輕松讀卡
{
   unsigned char ctrlword;//控制字
   unsigned char serial[4];//可寫數(shù)組
   unsigned char area;//讀出的區(qū)號

   unsigned char keyA1B0;//AB密碼認證
   unsigned char picckey[6];//存放卡密碼的數(shù)組
   unsigned char piccdata0_2[48];//下標0~15存放作為讀出的塊0的數(shù)據(jù),下標16~31存放作為讀出的塊1的數(shù)據(jù),下標32~47存放作為讀出的塊2的數(shù)據(jù)

   unsigned char status;//返回
unsigned char status1;
   unsigned char result;
   QString piccdata[16];  //卡數(shù)據(jù)緩沖

  //unsigned char myareano = ui->lineEdit_5 ; '指定為第8區(qū)

   //以下控制字含義:讀塊0、塊1、塊2,僅讀指定序列號的卡,需要每次指定密碼
   if (ui->radioButton->isChecked())
   {

       ctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;

   }
   else
   {//內部密碼
       ctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN;
   }



   area = ui->comboBox->currentText().toUShort();

   keyA1B0 = 1;//用A密碼

   //qDebug()text().mid(0,2);
   //qDebug()text().mid(2,2);

   // qDebug()text().mid(2,2);
   // qDebug()text().mid(2,2);

   QString Key_str = ui->lineEdit->text().trimmed();


   if(Key_str.length() < 12)
   {
       QMessageBox::information(NULL, "提示", "密碼長度不夠12位!");
       ui-?>lineEdit->setFocus();
       return;

   }

   char c;
   for (int var = 0; var < 12; ++var)
   {
       c = Key_str.at(var).toLatin1();
       if(!((('0' <= c) && (c <= '9')) || (('A' <= c) && (c <= 'F')) || (('a' <= c) && (c <= 'f'))))
       {
         QMessageBox::information(NULL, "提示", "密碼輸入字符不正確!");
         //ui-?>lineEdit->setSelection(var,1);
         ui->lineEdit->setSelection(var,1);
         ui->lineEdit->setFocus();
         return;
       }
   }


   bool ok;
//    picckey[0]=(unsigned char)(Key_str.mid(0,2).toUShort(nullptr,16));
//    picckey[1] = Key_str.mid(2,2).toShort();
//    picckey[2] = Key_str.mid(4,2).toShort();
//    picckey[3] = Key_str.mid(6,2).toShort();
//    picckey[4] = Key_str.mid(8,2).toShort();
//    picckey[5] = Key_str.mid(10,2).toShort();

   for(int i = 0; i < 6; i++)
   {
       picckey[i]=QString(Key_str.mid(i*2,2)).toInt(&ok,16);
   }



   QLibrary mylib("OUR_MIFARE.dll");
   if (!mylib.load())                //判斷是否正確加載
   {
       QMessageBox::information(NULL, "提示", "動態(tài)庫沒裝載!原因是動態(tài)庫OUR_MIFARE.dll沒放在生成exe文件相同目錄下!");
       return;
   }

   piccreadex mypiccreadex = (piccreadex)mylib.resolve("piccreadex");

   status = mypiccreadex(ctrlword,serial,area,keyA1B0,picckey,piccdata0_2);

   if(status == 0)
   {
       //qDebug()setText(QString::asprintf("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",picckey[0],picckey[1],picckey[2],picckey[3],picckey[4],picckey[5],picckey[6],serial[1],serial[2],serial[3]));
       ui->lineEdit_2->setText(QString::asprintf("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X ",piccdata0_2[0],piccdata0_2[1],piccdata0_2[2],piccdata0_2[3],piccdata0_2[4],piccdata0_2[5],piccdata0_2[6],piccdata0_2[7],piccdata0_2[8],piccdata0_2[9],piccdata0_2[10],piccdata0_2[11],piccdata0_2[12],piccdata0_2[13],piccdata0_2[14],piccdata0_2[15]));
       ui->lineEdit_3->setText(QString::asprintf("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X ",piccdata0_2[16],piccdata0_2[17],piccdata0_2[18],piccdata0_2[19],piccdata0_2[20],piccdata0_2[21],piccdata0_2[22],piccdata0_2[23],piccdata0_2[24],piccdata0_2[25],piccdata0_2[26],piccdata0_2[27],piccdata0_2[28],piccdata0_2[29],piccdata0_2[30],piccdata0_2[31]));
       ui->lineEdit_4->setText(QString::asprintf("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X ",piccdata0_2[32],piccdata0_2[33],piccdata0_2[34],piccdata0_2[35],piccdata0_2[36],piccdata0_2[37],piccdata0_2[38],piccdata0_2[39],piccdata0_2[40],piccdata0_2[41],piccdata0_2[42],piccdata0_2[43],piccdata0_2[44],piccdata0_2[45],piccdata0_2[46],piccdata0_2[47]));


       piccread mypiccread = (piccread)mylib.resolve("piccread");
       //typedef unsigned char (*piccread)(unsigned char block,unsigned char *piccdata);

      status1 = piccread(area * 4 + 3,piccdata);

       pcdbeep mypcdbeep = (pcdbeep)mylib.resolve("pcdbeep");
       if (mypcdbeep == NULL)                   //是否成功連接上 idr_beep()函數(shù)
       {
         mylib.unload();
         QMessageBox::information(NULL, "提示", "請檢查函數(shù)名是否正確!");
         return;

       }


       result = mypcdbeep(30);      //這里函數(shù)指針調用dll中的idr_beep() 函數(shù)
       mylib.unload();



   }
   else if(status == 8)
   {
       ui->lineEdit_2->clear();
       ui->lineEdit_3->clear();
       ui->lineEdit_4->clear();
       QMessageBox::information(NULL, "提示", "尋卡錯誤,根本就沒有卡在感應區(qū)");

   }
   else if(status == 12)
   {
       ui->lineEdit_2->clear();
       ui->lineEdit_3->clear();
       ui->lineEdit_4->clear();
       QMessageBox::information(NULL, "提示", "密碼認證失敗");

   }
   //qDebug()

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

    關注

    36

    文章

    6485

    瀏覽量

    186462
  • 讀寫器
    +關注

    關注

    3

    文章

    761

    瀏覽量

    40738
  • C++
    C++
    +關注

    關注

    22

    文章

    2131

    瀏覽量

    77426
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    USB RFID讀寫器的四個常見應用

    任何需要小型、低成本讀卡的應用,都值得考慮USB RFID讀寫器。USB讀寫器具備大部分大型同類的基本功能,只是功率稍低一些。如果你有一款非常適合RFID的應用,但又想控制預算,可以看看斯科的USB桌面
    的頭像 發(fā)表于 04-13 14:51 ?660次閱讀

    集成式RFID讀寫器與非集成RFID讀寫器

    集成RFID讀寫器將典型的固定RFID讀寫器和RFID天線集成為一體,無需外部天線。如果需要額外的天線,一些集成讀寫器會有一個額外的天線端口,允許用戶連接到另一個天線。集成式RFID讀寫器
    的頭像 發(fā)表于 03-16 15:46 ?257次閱讀
    集成式RFID<b class='flag-5'>讀寫器</b>與非集成RFID<b class='flag-5'>讀寫器</b>

    什么是超高頻rfid讀寫器?一文讀懂其原理、優(yōu)勢及應用場景

    作為物聯(lián)網感知層的關鍵技術,RFID讀寫器承擔著物理對象自動識別與數(shù)據(jù)采集的核心功能,已廣泛滲透倉儲、物流、醫(yī)療等多個行業(yè)。本文從基礎定義出發(fā),詳細拆解RFID讀寫器的核心工作原理、非接觸識別、多
    的頭像 發(fā)表于 02-06 14:39 ?795次閱讀
    什么是超高頻rfid<b class='flag-5'>讀寫器</b>?一文讀懂其原理、優(yōu)勢及應用場景

    工業(yè)RFID讀寫器,你知道哪幾種?#RFID讀寫器#三格電子

    讀寫器
    三格電子科技
    發(fā)布于 :2026年01月30日 17:11:42

    探秘MFRC522:高效非接觸式讀寫器IC的全方位解析

    探秘MFRC522:高效非接觸式讀寫器IC的全方位解析 在當今的電子設備領域,非接觸式通信技術正發(fā)揮著越來越重要的作用。作為一名電子工程師,我最近深入研究了NXP Semiconductors推出
    的頭像 發(fā)表于 01-19 16:55 ?895次閱讀

    探秘TRF7960A:13.56-MHz RFID讀寫器IC的卓越之選

    探秘TRF7960A:13.56-MHz RFID讀寫器IC的卓越之選 在當今的科技領域,RFID(射頻識別)技術憑借其高效、便捷的數(shù)據(jù)識別與傳輸能力,在眾多行業(yè)中得到了廣泛應用。而TRF7960A
    的頭像 發(fā)表于 01-06 09:55 ?325次閱讀

    深入解析TRF7964A:13.56-MHz RFID讀寫器IC的卓越之選

    深入解析TRF7964A:13.56-MHz RFID讀寫器IC的卓越之選 在當今的物聯(lián)網時代,RFID(射頻識別)技術作為一種重要的自動識別技術,廣泛應用于各個領域。TI(德州儀器)推出
    的頭像 發(fā)表于 01-06 09:15 ?520次閱讀

    深度解析MFRC522:高性能非接觸式讀寫器IC的設計與應用

    深度解析MFRC522:高性能非接觸式讀寫器IC的設計與應用 在電子工程師的設計世界里,非接觸式通信技術一直是備受關注的領域。NXP的MFRC522作為一款標準性能的MIFARE和NTAG前端讀寫器
    的頭像 發(fā)表于 12-29 16:55 ?1271次閱讀

    什么是超高頻rfid讀寫設備,RFID讀寫器遠距離讀取能達到15米嗎?

    在物聯(lián)網技術飛速發(fā)展的當下,RFID讀寫器作為數(shù)據(jù)采集的核心設備,已廣泛滲透到生產生活的多個領域。其中,超高頻rfid讀寫器憑借獨特的性能優(yōu)勢,成為物流、零售、制造等行業(yè)的“得力助手”。很多人會好
    的頭像 發(fā)表于 11-06 15:08 ?645次閱讀
    什么是超高頻rfid<b class='flag-5'>讀寫</b>設備,RFID<b class='flag-5'>讀寫器</b>遠距離讀取能達到15米嗎?

    RK3506開發(fā)QT Creator開發(fā)手冊,交叉編譯工具鏈與QT應用示例,入門必備

    本文基于觸覺智能RK3506核心板/開發(fā)板介紹QTCreator交叉編譯配置與QT應用示例。如需購買開發(fā)板進行評估驗證簡介QTCreatorQtCreator?是由TheQtCompany開發(fā)
    的頭像 發(fā)表于 09-30 16:26 ?3977次閱讀
    RK3506<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>QT</b> Creator<b class='flag-5'>開發(fā)</b>手冊,交叉編譯工具鏈與<b class='flag-5'>QT</b>應用示例,入門必備

    IO-link協(xié)議高頻工業(yè)RFID讀寫器售后講解視頻#三格電子

    讀寫器
    三格電子科技
    發(fā)布于 :2025年08月01日 16:01:51

    IO-link協(xié)議高頻工業(yè)RFID讀寫器#三格電子

    讀寫器
    三格電子科技
    發(fā)布于 :2025年07月31日 11:15:31

    東集RFID讀寫器有什么用

    在當今信息高度發(fā)達的時代,RFID(射頻識別)技術正在逐漸改變我們周圍的世界。隨著物聯(lián)網(IoT)的興起,RFID讀寫器作為這一技術的核心組件,正在發(fā)揮著越來越重要的作用。東集小編將深入探討RFID
    發(fā)表于 06-20 10:36

    超高頻RFID讀寫器漏讀

    超高頻RFID讀寫器出現(xiàn)漏讀的情況怎么解決
    發(fā)表于 06-12 19:55

    高頻工業(yè)RFID讀寫器

    高頻工業(yè)RFID讀寫器 型號:SG-HF40-485、SG-HF40-TCP 產品功能 高頻工業(yè)讀寫器(RFID)產品用在自動化生產線,自動化分揀系統(tǒng),零部件組裝產線等情境下,在自動化節(jié)點的工位上部
    的頭像 發(fā)表于 05-06 15:33 ?1145次閱讀
    高頻工業(yè)RFID<b class='flag-5'>讀寫器</b>
    扶沟县| 阿勒泰市| 西峡县| 汉寿县| 乌苏市| 中牟县| 潼关县| 镇巴县| 巨野县| 晋中市| 绩溪县| 惠州市| 潜山县| 天台县| 合山市| 洪雅县| 旺苍县| 郑州市| 兴安盟| 修文县| 左云县| 措美县| 南阳市| 金阳县| 宝坻区| 永春县| 崇信县| 沁源县| 无锡市| 余干县| 南雄市| 建宁县| 洛南县| 皋兰县| 永和县| 长子县| 安康市| 谢通门县| 凤庆县| 茂名市| 固阳县|