获取本机所有的网卡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);} //回应驱动设备显示+蜂鸣响声 } }
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
读卡器
+关注
关注
2文章
417浏览量
39391 -
Qt
+关注
关注
1文章
306浏览量
37954
发布评论请先 登录
相关推荐
ID读卡器TCP协议QT小程序开发
ID卡网络读卡器TCP协议QT小程序开发。 TCP(传输控制协议,Transmission Control Protocol)是互联网中最核心、最基本的协议之一。以下是对TCP协议的详
Android 实现读卡器读取各种卡号的信息
以超薄便携USB免驱全协议NFC读写器为例,开发安卓小程序 超薄便携USB免驱全协议NFC读写器 APP的首界面: 页面代码: 使用了ConstraintLayout作为根布局
AGV读卡器在AGV自动搬运小车上应用方案
AGV小车上的AGV读卡器通过读取地面轨道的RFID电子标签信息,做出相应的动作(如改变速度、选择轨道、定位和停车等)。在AGV小车经过站点A处时,AGV读卡器读取A处的电子标签ID号
物联网产品快速获取SIM卡ICCID、IMEI的生产测试方案_读卡表方案详解
软件,以及上位机软件进行设备iID与卡号统计。用这种方式会耗费较长的测试时间。读卡表可以完全的替换传统工装读卡,读设备ID等操作. 使用读卡表统计设备ID与SIM
身份证云解码模块嵌入式身份证读卡器 (CSYJM-3)
通信读卡。
有蜂鸣器,支持声音的开启和关闭。
解码类型支持无照片和本地解码照片。
读卡模式支持单次读卡和循环读卡。
发表于 09-04 14:57
使用.cmm闪存初始SW借助Trace32 SW脚本,数据无法从高速缓存内存读取特定扇区的数据,为什么?
。 对于某个扇区,我们无法从高速缓存地址读取数据。 但通过非缓存地址,我们可以从同一地址
发表于 06-03 08:20
CR95HF评估板(M24LR-DISCOVERY)例程能否增加对ISO14443-A卡读数据块和写数据块的函数?
CR95HF_Development_Software软件开发时,已经成功读取ISO14443-A卡号UID,下一步读卡扇区数据指令是什么,
发表于 05-14 06:44
获取Telegram的用户IP地址
最近有个需求,查了些资料发现,Telegram有语音通话功能,也可以类似QQ一样通过语音通话的连接获取对方的IP地址, Denis Simonov (原文为俄语)发表过一篇文章,演示了如何通过 Telegram 语音呼叫
评论