上位机开发过程中的一些方法和错误记录

本文介绍了在VisualStudio中添加第三方库的方法,禁用编译警告,C++代码生成策略,预编译头的使用,以及在Qt、TwinCAT和Windows平台上的编码设置、开机自启动、错误诊断和教程链接等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vs添加第三方库

  1. c++ 常规 附加包含目录 添加头文件路径
  2. 链接器 常规 附加库目录 添加lib文件路径
  3. 链接器 输入 附加依赖项 添加lib文件名称
  4. dll 拷贝到exe同目录,或者把dll路径添加到环境变量,或者放在“配置属性 常规 输出目录”的路径中

vs禁用警告

c++ 高级 禁用特定警告

vs发布方式,c++ 代码生成运行库

  1. /MD 表示不链接VC的运行时库,采用动态库
  2. /MT 表示静态链接
  3. /MDD与/MTD 用于Debug版本

vs C1010 错误信息:cpp文件中未添加预编译头

c++ 预编译头 找到预编译头文件 添加到cpp文件中

修改lib和dll名称

  1. 保持长度与原来一致
  2. 修改lib和dll的名称
  3. lib编辑打开,里面dll名称全部替换
    ./jsoncpp/include
    ./jsoncpp/lib

Qt 中给当前进程添加环境变量,需要在 QGuiApplication 定义之前

qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”));

Qt 中计算耗时

QElapsedTimer timer;
timer.start();
… do something …
qint64 elapsedTime = timer.elapsed();
qDebug() << “run time: " << elapsedTime << " ms”;

Qt 设置中文编码

  1. main.cpp
#include <QTextCodec>

// 设置编码为UTF-8
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
  1. mainwindow.cpp
#include <QTextCodec>

QTextCodec *codec;

// 设置文本编码为UTF-8
codec = QTextCodec::codecForName("UTF-8");
QString chineseText = codec->toUnicode("中文文本");

Qt6

  1. qt 6.0 中模块合并、移除、重构,3D引擎 6.5 版本与之前不兼容。所以qt版本选择5.15.2或者6.5,6.5之前的6.0版本不建议使用
  2. 商业版 qt on mcu 是第三种qt框架,程序可以跑在单片机上。qml 转 C++
  3. qt on mcu 依赖系统,不同 ARM 架构都可支持
  4. 官网查看信息,qt 6时代,打算在pc上qml转c++,效率更高
  5. qt on android 适配不方便,不再用qt开发安卓
  6. qt 5.6.3 是最后一个GPL授权,后面都是LGPL授权
  7. qt quick designer 已移除
  8. 用鼠标键盘点击的操作,静态界面,可以用widget开发。有手势操作,像素级要求比较高,界面动态元素较多时用qml开发
  9. design studio 可支持其他软件的设计文件导入(photoshop,maya等),插件收费?
  10. design studio 4.2 不支持 qt5,qt 5.15.2 可配 design studio 4.1.1

windows 编译 dlib

参考:https://zhuanlan.zhihu.com/p/67297010

  1. 显式地禁止使用blas,lapack,cuda和mkl依赖
  2. 编译生产dlib.lib
  3. 将 dlib-19.24\output\dlib\config.h 替换 dlib-19.24\dlib\config.h
  4. 调用 dlib 库时报错,error: C2872: “ACCESS_MASK”: 不明确的符号,需要注释 “using namespace cv;”

Win10平板边缘滑动手势大全及开启/关闭方法

  1. 打开注册表编辑器,regedit
  2. 定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows
  3. 新建文件夹 EdgeUI
  4. 在 EdgeUI 中新建 DWORD(32位) 值,重命名为 AllowEdgeSwipe
  5. 设置为 0 禁用边缘滑动手势,设置为 1 则启用
  6. 重启电脑生效

windows 设置软件开机自启

把软件的快捷方式拷贝到:C:\Users\DELL\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
或者通过 win + r 输入 shell:Common Startup 就会自动跳出启动文件夹

设置 TwinCAT 中的变量可以进行ADS通信

  1. 选择 Instance 或者 Obj
  2. 选择 Data Area
  3. 勾选 CS 选项

Qt Creator 经常出现红色下划线,报 semantic issues

帮助 -> 关于插件 -> C++ -> ClangCodeModel 不勾选,重启 Qt Creator

子类继承一个静态库中的基类,子类中无法添加成员变量

子类成员变量导致父类成员变量的偏移量发生变化。在静态库中,类的成员变量的偏移量是固定的。如果子类添加成员变量,则会导致父类成员变量的偏移量发生变化,从而导致程序异常

vs中同一个解决方案下多个项目的构建顺序

可以修改项目生产顺序,添加项目依赖项
在这里插入图片描述

error C1010: 在查找预编译头时遇到意外的文件结尾,是否忘记了向源中添加“#include “stdafx.h””?

在这里插入图片描述

查看 Windows 报错信息

win + x -> 选择事件查看器
可以在 Windows 日志中查看错误信息
在这里插入图片描述

TwinCAT 3 C++/Simulink教程

教程链接

使用 extern 修饰变量,引发LNK2001无法解析的外部符号

extern 修饰变量未做初始化

error C2872: “ACCESS_MASK”: 不明确的符号

注释掉所有的 using namespace cv

Qt6 qml 中的类型断言

Item {
	property color parentColor: (parent as Rectangle)?.color || "red"
}

qml 中验证数据类型

if ( xxx instanceof Image ) {
	console.log("true")
} else {
	console.log("false")
}
<think>好的,用户想了解LabVIEW上位机软件开发的流程步骤。我需要先回忆一下LabVIEW的基本概念开发流程。根据之前的引用资料,LabVIEW是基于图形化编程的,常用于工程控制科学实验。用户可能已经知道这些,所以需要深入流程细节。 首先,用户可能需要一个结构清晰的步骤说明。我应该分阶段来讲解,比如需求分析、架构设计、程序开发、调试测试、部署维护等。每个步骤里要具体说明LabVIEW中的操作,例如前面板设计、程序框图编写、子VI的使用等。 还要注意引用资料中的内容,比如引用[3]提到了上位机开发流程中的需求分析、通信协议确定、界面设计等步骤,可以整合到回答里。同时,用户提供的引用中有提到LabVIEW在串口通信中的应用,可能需要强调通信模块的实现步骤,比如配置VISA、处理数据等。 另外,用户可能关心实际案例,比如串口通信上位机开发,所以可以结合引用[1]提到的案例,具体说明如何应用这些步骤。需要确保每个步骤都有对应的LabVIEW操作示例,比如使用VISA函数进行串口配置。 还要考虑用户可能的后续问题,比如性能优化、错误处理、数据存储等,所以在步骤中可以适当提及这些方面,但不需要展开,留到相关问题部分。最后生成的相关问题要覆盖流程中的关键点,比如通信协议实现、调试技巧、性能优化等,帮助用户深入理解。</think>### LabVIEW上位机软件开发流程及步骤 LabVIEW上位机软件开发遵循**模块化设计****数据流驱动**原则,其核心流程可分为六个阶段: #### 一、需求分析与功能规划(耗时占比约20%) 1. 明确上位机控制对象(如PLC、仪器仪表) 2. 确定通信协议类型(串口RS232/485、TCP/IP、Modbus等)[^1] 3. 定义数据交互格式(ASCII码、二进制、自定义协议) 4. 规划人机交互界面需求(数据展示、控制按钮、报警指示) #### 二、软件架构设计(耗时占比约15%) 1. 创建**多循环架构**:典型采用生产者-消费者模式 ```labview [While循环(数据采集)] -> [队列] -> [While循环(数据处理)] ``` 2. 设计**状态机结构**:用于处理程序逻辑跳转 3. 建立**模块化VI库**:将常用功能封装为子VI 4. 规划**数据存储方案**:TDMS文件、数据库或Excel存储 #### 三、前面板开发(耗时占比约25%) 1. 控件布局设计原则: - 操作区(按钮/开关)左对齐 - 显示区(波形图/数值)右对齐 - 状态指示区顶部固定 2. 关键控件配置: ```labview 波形图表 -> 属性节点 -> 历史数据长度=1000 数值输入 -> 数据范围限制(最小值=0,最大值=100) ``` #### 四、程序框图开发(耗时占比约30%) 1. **通信模块实现**(以串口为例): ```labview VISA配置串口 -> 波特率=9600,数据位=8,停止位=1 VISA写入 -> 发送指令格式:STX+CMD+ETX VISA读取 -> 超时设置=500ms ``` 2. **数据处理模块**: - 添加校验处理(CRC16/MODBUS) - 实现数据解析状态机 3. **异常处理机制**: ```labview 错误簇 -> 条件结构 -> 错误日志记录.vi ``` #### 五、调试与优化(耗时占比约10%) 1. 使用**探针工具**监测数据流 2. 执行**内存性能分析**(工具->性能分析) 3. 压力测试:连续运行24小时监测内存泄漏 4. 通信稳定性测试:模拟数据丢包场景 #### 六、部署与维护 1. 生成**独立应用程序**(需安装Runtime引擎) 2. 制作**安装程序包**(包含驱动配置文件) 3. 建立**版本管理系统**(LabVIEW Project+LVM文件) 4. 编写**用户手册**(前面板说明+操作流程图) ### 典型开发案例:串口温度监控系统 1. 硬件连接:RS485温度传感器 2. 协议实现:MODBUS RTU读取03寄存器 3. 功能模块: - 实时曲线显示(每秒刷新) - 超限报警记录(TDMS存储) - 历史数据回放(XControl实现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值