当前位置: 首页 > news >正文

Python判别不同平台操作系统调用相应的动态库读写NFC

本示例使用的发卡器:https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.52de2c1bV0E4YV&ft=t&id=615391857885

import sys
import struct  # struct的pack函数把任意数据类型变成字符串
import ctypes  # 调用DLL动态库要有这个引用if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)mainWindow = MainWindow()screen = QDesktopWidget().screenGeometry()size = mainWindow.geometry()# 获得窗口相关坐标newLeft = (screen.width() - size.width()) // 2newTop = (screen.height() - size.height()) // 2# 移动窗口使其居中mainWindow.pushButton_clearbuff.setStyleSheet("color:red;")mainWindow.pushButton_writetag.setStyleSheet("color:blue;")mainWindow.move(newLeft, newTop)if sys.platform == 'win32':# windows系统加载当前目录下的DLL库dllfile = sys.path[0] + '\OUR_MIFARE.dll'Objdll = ctypes.windll.LoadLibrary(dllfile)elif sys.platform == 'linux':# Linux加载当前目录下的so库dllfile = sys.path[0] + '/libOURMIFARE.so'Objdll = ctypes.cdll.LoadLibrary(dllfile)else:# macOS‌加载当前目录下的.dylib库dllfile = sys.path[0] + '/libOURMIFARE.dylib'Objdll = ctypes.cdll.LoadLibrary(dllfile)mainWindow.show()sys.exit(app.exec_())def pushButton_Url_clicked(self):languagecodestr = "en".encode('gbk')titlestr=self.lineEdit_title.text().strip().encode('gbk')uriheaderindex = self.comboBox_headindex.currentIndex()uristr=self.lineEdit_uri.text().strip().encode('gbk')if len(uristr)<1:QMessageBox.critical(self,'提示','请输入要加入写卡缓冲区的网址URI!',QMessageBox.Yes)self.lineEdit_uri.setFocus()returnelse:status = Objdll.tagbuf_adduri(languagecodestr, len(languagecodestr), titlestr, len(titlestr), uriheaderindex,uristr, len(uristr)) % 256if status == 0:self.ListBottom("网址URL加入NDEF写卡缓冲区成功,可继续添加标签信息到缓冲区,也可以将缓冲区现有信息写入标签!")else:self.ListBottom("网址URL加入NDEF写卡缓冲区失败!")

        


http://www.mrgr.cn/news/82672.html

相关文章:

  • 【unity调用c++动态库,c++和c#相互调用】
  • JMeter + Grafana +InfluxDB性能监控 (二)
  • ubuntu 创建服务、查看服务日志
  • Java 正则表达式入门与应用(详细版)
  • 5.zookeeper可视化工具ZooInspector
  • 云架构Web端的工业MES系统设计之区分工业过程
  • 【教学类-88-01】20250105折纸窗花01——AI剪纸窗花(团花)——01图形的提取
  • SkinnedMeshRenderer相关知识
  • 如何让大模型不再“已读乱回”——RAG技术助力生成更精确的答案
  • 三、GIT与Github推送(上传)和克隆(下载)
  • 奥迪TT MK1(初代奥迪TT、第一代奥迪TT)仪表盘故障/不精准/水温/剩余油量不准,如何修复、测试、复位?
  • windows11安装minikube
  • arm64函数源码和汇编解析(objdump)
  • 线上go内存泄漏分析实战
  • Java100道面试题
  • 网站常用功能模块-鉴权
  • 【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子
  • 后台管理系统用户退出登录方案实现
  • 4进货+后台事务
  • Kubernetes Gateway API-3-TLS配置
  • 如何在 Hive SQL 中处理复杂的数据类型?
  • 安卓触摸对焦
  • 如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
  • 如何使用 Ansys OptiSlang 同时运行多个参数化设计研究
  • 当今世界如何减少暴戾之气和矛盾纷争
  • 【Rust自学】10.5. 生命周期 Pt.1:生命周期的定义与意义、借用检查器与泛型生命周期