记录上位机的Qt开发(一):调用驱动的禁用和重启

记录上位机的Qt开发(一):调用驱动的禁用和重启



前言

  由于硬件的问题,我开发的采集卡在刚开机后无法正确运行,经过我不懈的测试(不断关机、开机、重启),发现需要在开机后重新禁用一下采集卡对应的驱动,再启动驱动,这部分任务可以通过上位机来完成。
  在应用程序调用驱动时,需要的参数是驱动的设备实例路径,这个路径可以在设备管理器——右键驱动的属性——详细信息——设备实例路径中查看。
Alt

1. 提升权限

  在上位机上操作硬件驱动需要管理员权限,需要在qmake步骤实现,即在.pro项目文件中添加管理员权限:

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"

  当在Qt Creator调试项目时,由于项目权限是管理员权限,所以打开Qt Creator时也要以管理员身份运行。

2. 链接库

  对于驱动的操作可以调用Windows驱动开发的API,驱动和应用程序之间的API为SetupAPI,故链接SetupAPI的.lib静态库,涉及到其中的CfgMgr32.dll,链接库后使用时需要导入头文件:

#include <setupapi.h>
#include <Cfgmgr32.h>

3. 驱动的禁用和重启

  在应用程序调用驱动时,需要的参数是该驱动的设备实例路径,但若是直接在源码中调用该路径,那么应用程序发布后便无法修改,隐藏需要给用户提供一个可交互的接口,用来在驱动更新后修改驱动设备实例路径,使得应用程序仍能调用驱动。
(1)获取当前目录并构建文件路径,即应用程序.exe所在目录+文件名:

QString filePath = QDir::currentPath() + "/XXXXXX.txt";

(2)用QFile打开路径,若文件不存在咋创建一个该文件,并写入当前驱动实例路径,这个路径中有反斜杠\,为避免转义,在字符串加上R"(…)"来创建一个原始字符串字面量,例如:

file.write(R"(XXX\XXXXX\XXXXX)");

(3)打开文件读取整个TXT文件的内容;
(4)路径字符串由QString类型转为std::string类型,方便使用Windows的SetupAPI;
(5)获取设备实例句柄,禁用驱动、启用驱动:

CONFIGRET status = CM_Locate_DevNodeA(&devInst, (DEVINSTID_A)instanceId.c_str(), CM_LOCATE_DEVNODE_NORMAL);		//获取设备实例句柄
status = CM_Disable_DevNode(devInst, 0);	//禁用驱动
status = CM_Enable_DevNode(devInst, 0);		//启用驱动

总结

本篇博客是个人开发记录,若有错误请指正,大家一起讨论。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
械臂上位开发基于QT的方法如下: 1. 首先,你需要创建一个基于QT的上位界面。你可以使用QT的界面设计工具来设计界面,包括布局、按钮、文本框等元素,以满足你的需求。 2. 接下来,你需要编写上位的逻辑代码。使用QT的信号和槽制,你可以将按钮的点击事件与串口通信的代码进行连接,实现开发板上LED的亮灭控制。这可以包括打开串口、发送控制命令等操作。 3. 将你的上位程序打包成一个可执行文件。你可以使用QT提供的工具来构建和打包应用程序,以便在其他计算上运行。 4. 进行上位测试。你可以使用QT的调试工具来验证上位的功能是否符合预期。这包括测试串口通信、LED的亮灭控制等。 总结:械臂上位开发基于QT的步骤包括创建上位界面、编写逻辑代码、打包程序和进行测试。你可以使用QT的界面设计工具和信号槽制来实现界面和串口通信的功能。 引用: : 一个基于QT的简单的上位,实现的功能很简单:上位通过串口来控制开发板上的一个LED的亮灭。 : KinectV2 械臂实现目标抓取上位和下位软件。 上位软件通过vs2019 qt5通过C 语言编写。 上夜运行特征点检测算法,获取目标图像,图像配准,目标位置计算,相内参和手眼标定数据结果,逆运动学求解,串口通信。 以上内容和算法均可以自行修改。 下位通过stm32接收上位逆解结果控制械臂抓取。 : 改成QtableModel QTableView快多了,一万条的记录秒杀。所以说还是要清楚你使用的工具啊,QT的这个工MODEL类很好很强大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值