自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 c++线程同步案例分析

开发实时仿真软件时,一般留有实时输入数据接口,根据仿真步长接收实时数据。由于仿真软件还要进行业务处理,如果把业务处理流程直接放在实时输入接口内部,那么相当于把业务挂在了调用方的线程上,很容易把唯一的线程卡住,谈何实时仿真?所以,这里应该给业务运转单独起一个线程,输入接口只负责接收数据,业务线程专门负责内部计算,两个线程共同操作同一缓存,即线程同步。

2024-04-28 17:19:16 235

原创 记余弦定理在实际工程计算中的一个典型案例(附加C++代码)

如图,这是地球🌏的竖剖面,向上为北极方向。黑点为地表上的某一测控站,红白二点表示同一海拔高度的两个空间目标。理想情况下,测控站向北延俯仰角为零看去刚好能观测到白点,显然,“白点-地心-黑点”所成的夹角是容易计算的。然而,由于山脉,树木等的遮挡,测控设备往往存在一个遮蔽角,即“白点-黑点-红点”夹角。此时,如何计算“红点-地心-黑点”夹角?这个问题可以归纳为纯几何问题,即——已知钝角三角形的钝角及其对边和另外任意一个边,求已知的这两个边的夹角。

2024-04-26 16:28:14 268

原创 Qt中只改变控件的文字颜色

真实的软件项目中,UI设计时的颜色以及样式通常是较为复杂的,不是简单的非黑即白。另外,结合特殊的业务需求,有时只想改变Qt控件的某一个属性(比如文字颜色),此时若简单的重新设置样式会把原来的所有样式冲掉,达不到预期效果。本文介绍一种通过修改字符串来只改变控件颜色的方法。

2024-04-10 17:27:14 187

原创 C++度与弧度互相转换——记一个隐晦的BUG

在C++代码中,可以通过定义宏来方便快捷地进行度与弧度的互相转换。然而,这看似平常的操作,如果疏忽,可能会引入一些比较隐晦的BUG,只有在特定情况下才会被触发。

2024-04-10 14:55:12 248 1

原创 C++生成球体内的三维随机数

在航空航天目标模拟,或者3D游戏中,某物体运动的轨迹往往存在一定误差,究其根本是探测设备(比如雷达和望远镜)只能无限逼近真实值,而永远不能测量到绝对的真实值。一维和二维的随机误差生成比较容易,三维随机误差的生成可以利用极坐标生成在一个球体内均匀分布的三维点,再转换为三维直角坐标。

2024-04-01 17:34:33 175

原创 C++线性代数库Eigen简明教程

线性代数在3D游戏建模、深度学习、机器人工程、视频图像处理、航空航天等领域都有着举足轻重的位置。在使用C++编程时,如果从零编写矩阵的乘法、求逆、求特征值等运算,将会是件很麻烦的事情。而且,不管是从计算正确性,还是从效率方面都很难得到保障。因此,成熟稳定的线性代数库显得尤为重要。Eigen是线性代数的C++模板库,它包含矩阵、向量、四元数、数值求解器和相关算法,其拥有良好的稳定性和计算效率,是我们搭建C++工程研究算法的必备利器。

2023-12-02 16:35:39 1155

原创 静态库与动态库从概念到实操——基于VS2019平台

万丈高楼平地起,大型软件工程地构建,离不开”库“。什么是库?库能干啥?怎么生成库?怎样调用库?如何鉴别库?这一系列疑惑,对于初次接触软件工程的人都显得难以捉摸,或者,似乎懂得一些浅显的概念,真正上手实践却发现无从下爪。因此,本文基于VS2019平台,从概念到理解,到实操,再到注意事项,进行详细地探讨。

2023-11-17 15:48:39 237 1

原创 QTcpSocket中readyRead信号不实时触发问题解决

在Qt中使用Tcp通讯时的惯常做法是在服务端将QtcpSocket的readyRead信号与处理业务的槽函数关联,这样每当有新的通讯数据时触发readyRead信号,进而通过槽函数处理业务流程。然而,readyRead信号与客户端的write函数并没有必然的一一对应关系。因此,对一些特别依赖数据实时性的应用场景就会出现通讯中断的情况。

2023-11-07 15:24:56 1465

原创 Qt读写配置文件——以IP端口为例

配置文件的读与写是非常常见操作。在Qt如何将配置文件里数据读到界面显示?相反地,如何将界面设置的数据保存到配置文件?这里以IP与端口的读写操作进行详细演示。

2023-09-18 18:06:40 194

原创 Qt工程自动打包教程——windeployqt命令的用法

软件开发结束后,就需要对编译后的文件进行打包,供用户使用。可以使用Dependencies等软件对exe进行依赖分析,然后手动配置所有需要的库文件。也可以使用Qt中自带的windeployqt命令来帮助我们快速地进行自动打包,然后补充少许缺少动态库即可。

2023-09-13 17:47:37 2005 1

原创 C/C++对结构体的排序——以二维坐标点排序为例

排序是一种很常用的算法,传统冒泡排序和基于递归的快速排序都很经典。一般理解的排序就是对单一数值的排序,比如对年龄的排序和对身高的排序。然而,实际业务应用中的排序往往是复杂的,可能是二维或者三维空间点的排序,甚至是一个抽象复杂的结构体或者类对象的排序。但是,万变不离其宗,只要我们明确了排序的准则,不管多复杂的结构体都可以通过系统自带的sort函数来处理。

2023-09-12 17:21:24 342

原创 Qt信号与槽的两种连接方式

信号与槽机制是Qt进行UI设计时必须要掌握的一个知识点。信号能触发槽函数的前提条件是已经将信号函数与槽函数用connect函数连接,并且这里的信号函数和槽函数都可进行自定义。另外,还有一种简化方式,即通过对槽函数的规则命名来省略connect函数。这里用一个小例子进行对比说明:

2023-09-08 14:42:38 114 1

原创 Qt多页面时的控件复用——以QStackedWidget为例

在Qt设计多个切换页面时,经常会出现多个页面用到相同的控件,此时就会涉及到控件复用。尤其是当一个复杂子界面需要在多个页面反复出现时,我们往往不希望复制多份(那样比较冗余),此时就需要研究如何让控件或者子界面随着页面的切换反复利用。下面以QStackedWidget中同一日历对象的反复调用为例,介绍如何操作。

2023-09-05 14:44:42 869 1

原创 Qt中上位机给下位机连续发送指令的睡眠问题

提起睡眠,通常我们都喜欢用Windows自带的睡眠函数Sleep(),比如Sleep(100)就表示睡眠100毫秒。但是,和下位机通讯时,调试发现这个Windows睡眠函数会失效,用Qt相关函数自己写了一个功能类似的睡眠函数,发现达到了预期效果。

2023-09-04 13:08:41 105 1

原创 tabWidget与tableWidget混合使用(UI设计思路和要点)

Qt有两个控件名称很相似——tabWidget和tableWidget,前者是容器,可以利用标签进行界面换页,后者是表格控件。巧合的是,实际应用经常二者会混合使用,因此,这里对其要点进行简要说明。

2023-09-01 17:00:15 392 1

原创 基于C++的OpenCV目标质心提取(采用大津法,同时给出Matlab代码)

在OpenCV里灰度化可以调用cvtColor函数,也可以直接用imread把彩色图像读成灰度图像。灰度图像通过图像分割即可转变为二值图像,关键点是阈值的计算。不同目标获取阈值的方法差异较大,对于形态单一目标,可以采用传统的大津法(最大类间方差法)自动计算分割阈值。接下来就是连通域分析,matlab里用的是bwlabel函数,而OpenCV里用的是connectedComponentsWithStats函数。最后求连通域各像素的均值,即可得到目标的质心坐标。

2023-08-31 15:34:41 404 1

原创 如何把float数据存入单字节数组进行数据传输?

在上位机与下位机进行通讯的过程中,需要把float类型的数据存入单字节数据流中,形成报文,然后下位机再对报文进行解析,将单字节数据流转换为float型。char类型是单字节,很容易存入单字节数组,但float占4个字节,如何去存?

2023-08-30 14:55:03 360 1

原创 VS2019安装配置opencv4.4.0教程——以Yolo_mark为例

OpenCV 4.4.0的增强和改进使得它更加适合处理实时图像和视频数据,应用于计算机视觉和深度学习等领域。这里介绍在VS2019平台下配置OpenCV 4.4.0的详细步骤,并且用深度学习中的数据标注采集工具软件——Yolo_mark源码进行测试。

2023-08-30 14:35:33 330 1

原创 C/C++回调函数介绍

程序设计时通常是上级调用下级,比如一个类可以调用它作为成员变量的对象里面的接口,但是如果反过来下级调用上级就不是这么容易了。此时,回调函数的作用就体现出来了,实际应用中,经常把UI的函数指针通过接口存入下级业务类里面,然后业务执行到特定触发点时,调用该函数指针,UI上同步显示数据。

2023-08-29 16:49:29 49 1

原创 虚拟机_Ubuntu22.10_Qt5.12.2_搜狗——环境搭建教程

本文整理了从虚拟机安装到Ubuntu22.10安装,再到Qt5.12.2安装,再到输入法安装等一系列详细教程,并且给出可能遇到问题的解决方法。

2023-08-29 09:55:25 1313 1

原创 MATLAB误差数据多项式拟合

对于采集的一些离散误差数据 ,如果我们想要知道误差的连续变化规律,则需要对误差数据进行拟合,可以得到一个函数,通过该函数可以估算连续误差趋势。这里抛砖引玉,以简单的多项式拟合为例,最终,在matlab平台下拟合出多项式系数。5.我们可以修改多项式次数,比如选择5次多项式拟合。6.根据需要,我们还可以进行指数、傅里叶、高斯拟合。1.输入误差数据,通常是两个数组,分别是x和y。4.选好数据后,这里默认生成的是一次多项式拟合。左下角的p1~p6为最终拟合的多项式系数。可以看到,高次多项式拟合吻合度明显变好。

2023-08-28 14:52:52 873 1

原创 已有Qt安装文件夹时VS2019/Qt5.15.2环境搭建

目前,比较新的Qt版本都需要在线安装,这样安装操作虽然操作方便,但是通常在线下载时间较长,尤其是需要依赖的组件过多时,可能需要下载一天时间。当然,光拷贝Qt文件夹是不够的,给VS2019平台集成Qt时,有一些注意事项要特别留意,一步错过可能就要推翻重来。

2023-08-28 14:02:40 428 1

原创 C++调用C#

若想在C++搭建的工程里调用C#编译的动态库,则需要对C++工程进行简单配置,并且操作符也要做出一些特定变化。这里以VS2019平台下搭建的C++工程为例,调用C#编译的卫星轨道计算动态库,最终通过卫星两行根数成功计算出一段时间的卫星位置信息。

2023-08-28 10:28:16 1053 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除