0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

网络读卡器qt代码示例,包含获取本地ip地址。读取IC卡卡号,读取扇区数据

邹振豪 来源:jf_51178285 作者:jf_51178285 2024-12-30 09:22 次阅读

获取本机所有的网卡IP:

bool listening=false;
QTcpServer m_server;
QTcpSocket m_socket;
QStringList getAllIPAddresses() {
   QStringList ips;
   QList< QHostAddress > list = QNetworkInterface::allAddresses();
   for (int i = 0; i < list.size(); ++i) {
       QHostAddress address = list.at(i);
       // 检查是否为IPv4地址,并排除回环地址
       if (address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress::LocalHost) {
           ips < < address.toString();
       }
   }
   return ips;
}
根据IP地址获取Mac
QString getMacByIp(const QString &ip) {
   QHostInfo info = QHostInfo::fromName(ip);
   foreach (const QHostAddress &address, info.addresses()) {
       if (address.protocol() == QAbstractSocket::IPv4Protocol) {
           foreach (const QNetworkInterface &interface, QNetworkInterface::allInterfaces()) {
               if (interface.flags().testFlag(QNetworkInterface::IsUp) && interface.flags().testFlag(QNetworkInterface::IsRunning)) {
                   foreach (const QNetworkAddressEntry &entry, interface.addressEntries()) {
                       if (entry.ip() == address) {
                           return interface.hardwareAddress();
                       }
                   }
               }
           }
       }
   }
   return QString();
}
//解析读取IC卡卡号-------------------------------------------------------------------------------------------------------------------
void MainWindow::Analyze_c1(QHostAddress ip,quint16 port,unsigned char databuff[], qint64 buflen)
{
   DisableSendAgain(ip, port,databuff,buflen);//确认接收到的信息,否则同一信息读卡器会重发三次
   QString IPAddress=QString::asprintf("%d", databuff[1])+"."+QString::asprintf("%d", databuff[2])+"."+QString::asprintf("%d", databuff[3])+"."+QString::asprintf("%d", databuff[4]); //设备IP地址,广域网上使用,一般不对此IP回应,而是对数据流的 ip及端口 回应
   QString DeviceNumber=QString::asprintf("%05d",databuff[5]+databuff[6]*256);   //设备自编机号
   QString FrameNumber=QString::asprintf("%05d",databuff[7]+databuff[8]*256);    //数据包号
   QString CardnoHexZ=QString::asprintf("%02X%02X%02X%02X", databuff[10],databuff[11],databuff[12],databuff[13]);  //16进制卡号正码
   QString CardnoHexF=QString::asprintf("%02X%02X%02X%02X", databuff[13],databuff[12],databuff[11],databuff[10]);  //16进制卡号反码
   bool status;
   QString Cardno8H10D=QString::asprintf("%010u",CardnoHexF.toUInt(&status,16));  //转8H10D反码卡号
   QString SerialNumber="";        //设备全球唯一硬件序号
   for (int i=14;itextEdit_M1UID->setText(CardnoHexZ);
   if(ui->checkBox_Resp->isChecked()){Respondinfo(getsysdatetime()+"卡号:"+Cardno8H10D,ip,port,DeviceNumber);}  //回应驱动设备显示+蜂鸣响声
}
主动读取扇区数据的返回-
void MainWindow::Analyze_c3(QHostAddress ip,quint16 port,unsigned char databuff[], qint64 buflen)
{
   QString IPAddress=QString::asprintf("%d", databuff[1])+"."+QString::asprintf("%d", databuff[2])+"."+QString::asprintf("%d", databuff[3])+"."+QString::asprintf("%d", databuff[4]); //设备IP地址,广域网上使用,一般不对此IP回应,而是对数据流的 ip及端口 回应
   QString DeviceNumber=QString::asprintf("%05d",databuff[5]+databuff[6]*256);   //设备自编机号
   QString CardnoHex="";
   for (int i=12;i< 16;i++){
       CardnoHex=CardnoHex+QString::asprintf("%02X", databuff[i]);
   }
   int j=databuff[10]*48;
   int m=databuff[11]*48;
   for(int i=0;i< m;i++){
       readcardbuf[j+1]=databuff[16+i];
   }
   if((databuff[10]+databuff[11]) >=databuff[9]){
       m=databuff[9]*48;
       QString DataHex="";
       for (int i=0;i< m;i++){
           DataHex=DataHex+QString::asprintf("%02X ",readcardbuf[i]);
       }
       ui- >textEdit_data->setPlainText(DataHex);
       QString DispInf="读取M1卡扇区数据成功,设备IP:"+IPAddress+",机号:"+DeviceNumber+",16进制卡号:"+CardnoHex;
       listadditems(1,DispInf);
       ui->textEdit_M1UID->setText(CardnoHex);
       if(ui->checkBox_Resp->isChecked()){Respondinfo(getsysdatetime()+"卡号:"+CardnoHex,ip,port,DeviceNumber);}  //回应驱动设备显示+蜂鸣响声
   }
}
wKgZO2dvuAWAAy41AAD5NF8luhw742.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 读卡器
    +关注

    关注

    2

    文章

    417

    浏览量

    39391
  • Qt
    Qt
    +关注

    关注

    1

    文章

    306

    浏览量

    37954
收藏 人收藏

    评论

    相关推荐

    ID读卡器TCP协议QT小程序开发

    ID网络读卡器TCP协议QT小程序开发。 TCP(传输控制协议,Transmission Control Protocol)是互联网中最核心、最基本的协议之一。以下是对TCP协议的详
    的头像 发表于 12-31 10:19 87次阅读
    ID<b class='flag-5'>读卡器</b>TCP协议<b class='flag-5'>QT</b>小程序开发

    USB免驱全协议IC读写 QT程序开发

      读取15693IC读卡器如下入所示: 15693卡片,通常指的是符合ISO/IEC 15693标准的非接触式智能或RFID
    的头像 发表于 12-30 17:42 109次阅读
    USB免驱全协议<b class='flag-5'>IC</b><b class='flag-5'>卡</b>读写<b class='flag-5'>器</b> <b class='flag-5'>QT</b>程序开发

    Android 实现读卡器读取各种卡号的信息

    以超薄便携USB免驱全协议NFC读写为例,开发安卓小程序 超薄便携USB免驱全协议NFC读写 APP的首界面: 页面代码: 使用了ConstraintLayout作为根布局
    的头像 发表于 12-30 15:45 97次阅读
    Android 实现<b class='flag-5'>读卡器</b><b class='flag-5'>读取</b>各种<b class='flag-5'>卡号</b>的信息

    网络读卡器qt代码示例

    指定的IP地址和端口,并在发送后更新一个列表(可能是GUI的一部分)。 解析读取IC卡号: v
    发表于 12-30 10:22

    android如何获取本机ip地址ip归属地

    # 前言 # 本篇文章主要介绍android如何获取本机ip地址ip归属地。   # 定义 # ip
    的头像 发表于 11-20 11:57 250次阅读

    AGV读卡器在AGV自动搬运小车上应用方案

    AGV小车上的AGV读卡器通过读取地面轨道的RFID电子标签信息,做出相应的动作(如改变速度、选择轨道、定位和停车等)。在AGV小车经过站点A处时,AGV读卡器读取A处的电子标签ID号
    的头像 发表于 10-12 17:33 257次阅读
    AGV<b class='flag-5'>读卡器</b>在AGV自动搬运小车上应用方案

    物联网产品快速获取SIMICCID、IMEI的生产测试方案_读卡表方案详解

    软件,以及上位机软件进行设备iID与卡号统计。用这种方式会耗费较长的测试时间。读卡表可以完全的替换传统工装读卡,读设备ID等操作. 使用读卡表统计设备ID与SIM
    的头像 发表于 09-30 15:12 632次阅读
    物联网产品快速<b class='flag-5'>获取</b>SIM<b class='flag-5'>卡</b>ICCID、IMEI的生产测试方案_<b class='flag-5'>读卡</b>表方案详解

    物联网产品在生产测试过程中快速读取贴片SIM卡号的方案

    卡号读卡表产品可以解决在研发测试过程中,方便读取物联网贴片卡号的问题。 二、该问题带来的危害及影响 如果不读出设备的SIM
    的头像 发表于 09-23 16:14 319次阅读
    物联网产品在生产测试过程中快速<b class='flag-5'>读取</b>贴片SIM<b class='flag-5'>卡号</b>的方案

    二代身份证识别仪身份证阅读读卡器

    身份证读卡器通用版 医院社保读卡器 APP集成识别读取身份证 云解码读卡 身份证网络读卡模块
    发表于 09-07 15:09

    身份证云解码模块嵌入式身份证读卡器 (CSYJM-3)

    通信读卡。 有蜂鸣器,支持声音的开启和关闭。 解码类型支持无照片和本地解码照片。 读卡模式支持单次读卡和循环读卡
    发表于 09-04 14:57

    使用.cmm闪存初始SW借助Trace32 SW脚本,数据无法从高速缓存内存读取特定扇区数据,为什么?

    。 对于某个扇区,我们无法从高速缓存地址读取数据。 但通过非缓存地址,我们可以从同一地址
    发表于 06-03 08:20

    网络读卡器_产品手册

    电子发烧友网站提供《网络读卡器_产品手册.pdf》资料免费下载
    发表于 05-19 09:33 0次下载

    CR95HF评估板(M24LR-DISCOVERY)例程能否增加对ISO14443-A数据块和写数据块的函数?

    CR95HF_Development_Software软件开发时,已经成功读取ISO14443-A卡号UID,下一步读卡扇区数据指令是什么,
    发表于 05-14 06:44

    ST25DV04可以读取实体IC吗?

    我最近打算使用ST25DV04做一个NFC,这款芯片可以读取实体IC获取IC
    发表于 03-18 07:04

    获取Telegram的用户IP地址

    最近有个需求,查了些资料发现,Telegram有语音通话功能,也可以类似QQ一样通过语音通话的连接获取对方的IP地址, Denis Simonov (原文为俄语)发表过一篇文章,演示了如何通过 Telegram 语音呼叫
    的头像 发表于 01-12 11:35 1716次阅读
    <b class='flag-5'>获取</b>Telegram的用户<b class='flag-5'>IP</b><b class='flag-5'>地址</b>