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

    文章

    462

    浏览量

    41151
  • Qt
    Qt
    +关注

    关注

    2

    文章

    318

    浏览量

    40295
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ST25R100:高性能、低功耗的NFC/HF RFID读卡器IC

    ),数据传输速度高达6Mbit/s。ST25R100读卡器IC设计用于在2.7V至5.5V宽电源电压范围内工作,具有-25°C至85°C宽环境温度范围。典型应用包括美容和生活方式、品牌保护、附件识别、自动参数设置、识别、医疗保健
    的头像 发表于 10-23 14:47 360次阅读
    ST25R100:高性能、低功耗的NFC/HF RFID<b class='flag-5'>读卡器</b><b class='flag-5'>IC</b>

    ST25R200:高性能、低功耗的NFC/HF RFID读卡器IC

    ),具有过冲或下冲保护功能。该读卡器IC设有外部通信接口,即串行外设接口(SPI),数据传输速度高达10Mbit/s。
    的头像 发表于 10-23 14:40 352次阅读
    ST25R200:高性能、低功耗的NFC/HF RFID<b class='flag-5'>读卡器</b><b class='flag-5'>IC</b>

    技术资讯 I 如何设计存储读卡器

    本文重点存储可以适配各类操作系统且存储容量无上限。标准USB接口为读卡器提供了双重功能:既能供电,又能实现高速数据传输。数字读卡器集成电路(IC
    的头像 发表于 10-17 16:16 256次阅读
    技术资讯 I 如何设计存储<b class='flag-5'>卡</b><b class='flag-5'>读卡器</b>

    如何扩展NFC技术的读取距离以满足工业需求?

    NFC技术通过优化标签和读卡器,可实现远距离读取,突破传统短距离限制。
    的头像 发表于 09-03 17:35 713次阅读
    如何扩展NFC技术的<b class='flag-5'>读取</b>距离以满足工业需求?

    DD3118 高集成度读卡器控制芯片数据手册

    DD3118是一款采用40纳米低功耗技术制造的高性能、高集成度读卡器控制芯 片,专为读卡器设计。作为读卡器的核心功能模块,DD3118支持USB 3.0、SD  3.0和eMMC 4.5标准协议,能够稳定访问存储在内存
    发表于 06-16 16:14 7次下载

    MAX14502高速USB至SD读卡器,提供旁路控制技术手册

    变化。在读卡器模式下,MAX14502实现了一个高速USB读卡器,可独立于主机微处理运行。所有全速USB端口和SD插槽的功能都得以保留
    的头像 发表于 05-22 11:32 681次阅读

    MAXQ1743 DeepCover安全磁卡读卡器IC技术手册

    DeepCover 嵌入式安全方案采用多重先进的物理安全机制保护敏感数据,提供最高等级的密钥存储安全保护。 DeepCover MAXQ1743是集成的三轨磁条读卡器IC,在机器/磁卡接口上为POS终端或ATM
    的头像 发表于 05-15 09:44 643次阅读
    MAXQ1743 DeepCover安全磁卡<b class='flag-5'>读卡器</b><b class='flag-5'>IC</b>技术手册

    MFRC522非接触式读卡器IC中文手册

    电子发烧友网站提供《MFRC522非接触式读卡器IC中文手册.pdf》资料免费下载
    发表于 05-12 18:11 9次下载

    用于LEGIC Advant UID/序列号的NFC读卡器,为什么无法读取这些的UID/序列号?

    的是,这个读卡器根本不识别 LEGIC ,只能识别 MIFARE 。 根据产品规格“支持 ISO/IEC 14443 A/MIFARE 和 NTAG”,我认为这是可能的,因为 LEGIC
    发表于 04-02 08:07

    Nand flash 和SD(SD NAND)存储扇区分配表异同

    了解存储扇区的分配情况。 Linux 系统: 使用 fdisk 命令: 将 SD 插入读卡器并连接到电脑。 打开终端,输入命令 “sudo fdisk -l /dev/sdX”(将
    发表于 03-13 10:45

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

      读取15693IC读卡器如下入所示: 15693卡片,通常指的是符合ISO/IEC 15693标准的非接触式智能或RFID
    的头像 发表于 12-30 17:42 894次阅读
    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 742次阅读
    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

    身份证云解码读卡模组CSYJM-6U嵌入式身份证读卡模组

    。· 证类型支持CPU,已适配的卡有:身份证、外国人永居证、港澳台居民居住证、银行IC、社保
    发表于 12-19 13:58