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

项目研发实录:电子称SDK封装dll给到QT和C#调用

    本文主要初略展示使用QT通过Modbus协议读写电子称数据封装成动态库dll文件,并在QT新的项目中调用sdk的过程和步骤,不涉及详细代码的展示。

一、电子秤SDK功能说明:

打开电子秤:根据当前设置的串口号和默认参数连接电子秤。

关闭电子秤:关闭当前已打开的电子秤连接。

称重:获取当前电子秤上当前物品的重量数据,单位:克,误差范围n克。

清零:如果电子称的称重数据跟真实称重数据误差超出范围时,将称上所有物品移除后,发送清零指令后再称重则会恢复正常。

设置端口号:允许更改设备连接的串口号(如:COM3,COM6)等进行连接。

恢复默认配置:当端口号设置错误或者配置文件人为更改有误时,通过恢复默认配置可重新正确跟电子称进行连接通信。

保存当前配置:当设备连接电脑的端口号有调整时,可以保存当前配置的端口号到配置文件中,下次可直接加载使用当前配置号的设备连接参数。

加载称重配置:从配置文件中加载最新的端口号、波特率等连接参数到SDK中。

获取设备连接状态:进行称重、清零等操作时必须先跟电子称进行连接,如果没有建立串口通信连接则提示连接状态为0,已建立连接则提示为1。

获取所有可用端口:当SDK默认的端口号被别的程序占用或者不可以使用时,可获取当前最新的可用端口号列表,返回多个端口号用分号隔开。

二、电子秤SDK项目创建

 参考网上的QT封装DLL项目架构,调整项目配置文件中的代码如下:

QT       += core gui gui-private concurrent printsupport xml network serialbus serialport
greaterThan(QT_MAJOR_VERSION,4): QT+= widgets
greaterThan(QT_MAJOR_VERSION,5): QT+= core5compatTARGET   = WeightSDK
TEMPLATE = lib
CONFIG += dll
CONFIG += c++11
CONFIG += warn_off
CONFIG += utf8
DLLDESTDIR   = ../../WeightSDKQtDemo/Release/release/

调整公开对外调用接口定义如下:

#ifdef __cplusplus
extern "C"
{
#endifextern "C" __declspec(dllexport) double Add(double arg1,double arg2);//加法运算
extern "C" __declspec(dllexport) void SetName(char *name);//设置名称
extern "C" __declspec(dllexport) char* GetName();//获取名称extern "C" __declspec(dllexport) void _stdcall InitialSdk(WeightDataCallBack pDataCallBack);//初始化系统设置
extern "C" __declspec(dllexport) void _stdcall SetWeightData(int pType, char* pData);//设置称重操作类型和数据#ifdef __cplusplus
}
#endif

编译SDK项目会生成WeightSDK.dll和WeightSDK.lib文件。

三、创建QT调用SDK对应动态库文件的WeightSDKDemo项目

3.1拷贝SDK项目对应的dll文件到当前项目的lib目录下和Release目录下

3.2在.pro项目文件中添加电子秤SDK的引用


#调用WeightSDK.dll配置代码,提前将dll文件拷贝到项目的lib目录下
LIBS += -L$$PWD/lib/ -lWeightSDK

3.3代码中编写调用SDK对应方法代码

//加载动态库QString myLibraryPath = QApplication::applicationDirPath() + "/WeightSDK.dll";QLibrary* myLibrary = new QLibrary(myLibraryPath);if(myLibrary->load()){Log4qt<<"初始化动态库成功!";InitialSdk myFun = (InitialSdk)myLibrary->resolve("InitialSdk");if (myFun){myFun(setCallBackFunc);Log4qt<<"设置回调成功";}else{Log4qt<<"设置消息回调失败";}}else{Log4qt<<QString("初始化动态库失败:%1").arg(myLibraryPath);}

四、QT中调用电子秤SDK实例


文章转载自:

http://a7tzZPW4.pznnt.cn
http://Gos5dljz.pznnt.cn
http://xHs53wlh.pznnt.cn
http://6A0VxCny.pznnt.cn
http://DUXPjDgU.pznnt.cn
http://WEcISC7v.pznnt.cn
http://hwg6zPc2.pznnt.cn
http://WgLFfnSA.pznnt.cn
http://xKnadlsG.pznnt.cn
http://SKmK1SY3.pznnt.cn
http://2RyxzK4u.pznnt.cn
http://zuXU4dJf.pznnt.cn
http://Ms4ch9LH.pznnt.cn
http://PiWuZCBZ.pznnt.cn
http://dotQlxe0.pznnt.cn
http://z7sdK0ZJ.pznnt.cn
http://JESKtoXb.pznnt.cn
http://lrQRNOHm.pznnt.cn
http://Xv2CFgjL.pznnt.cn
http://MjnRylF5.pznnt.cn
http://osvMFQpE.pznnt.cn
http://Xz33ljov.pznnt.cn
http://Rk95e9n6.pznnt.cn
http://r6wPYFNF.pznnt.cn
http://9ZpOcCeY.pznnt.cn
http://0json13M.pznnt.cn
http://Gctec2Cp.pznnt.cn
http://IARlgyEI.pznnt.cn
http://NW56LWD7.pznnt.cn
http://OtVbOIGR.pznnt.cn
http://www.dtcms.com/a/375966.html

相关文章:

  • 短视频矩阵源码-视频剪辑+AI智能体开发接入技术分享
  • 代码随想录算法训练营第三十五天|背包问题 二维 背包问题 一维 46. 携带研究材料 416. 分割等和子集
  • FTP文件传输服务
  • 代码随想录第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 18.四数之和
  • SAP R/3系统模块结构
  • leetcode 217 存在重复元素
  • 前端 Word 模板参入特定数据 并且下载
  • LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
  • 深度学习(五):过拟合、欠拟合与代价函数
  • 【JS】import.meta.env,process.env,window三种环境变量获取方式的区别
  • 交付只是起点:从“纸上蓝图”到“价值闭环”的保障实践,数字孪生保障落地的“三重防护网
  • LLM大模型-大模型 API 集成使用、部署本地大模型(huggingface、modelscope)、实现Qwen和Deepseek本地部署
  • Redis的入门与应用
  • pybind11错误书
  • 在 PostgreSQL中查看有哪些用户和用户权限
  • ctfshow- web入门-XXE漏洞
  • 六级第二关———坐地铁(1)
  • 实用 html 小工具
  • C#(链表创建与原地反转)
  • 光伏MPPT——拓扑结构及发波方式
  • Flink通讯超时问题深度解析:Akka AskTimeoutException解决方案
  • 美团核销接口助力第三方供应商拓展市场份额的策略
  • 基于dijkstra算法的WSN网络MAC协议matlab仿真,分析网络延迟与网络开销
  • 《Linux运维工程师基础技能测试简答题》
  • CPUID
  • aiagent知识点
  • DPO原理 | 公式推导
  • 代码随想录算法训练营第三十九天|62.不同路径 63.不同路径ll
  • Redis(主从复制)
  • 嵌入式 - ARM3