自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (1)
  • 收藏
  • 关注

原创 Qt中信号和槽解决了什么问题

信号和槽解决了什么问题。

2024-05-22 17:08:18 13

原创 std::make_pair 介绍

是 C++ 标准库中的一个实用函数,用于在编译时构造一个std::pair对象。std::pair是一个模板类,它包含两个数据成员,通常称为first和second。函数提供了一种方便的方式来初始化std::pair对象,而无需显式调用其构造函数。

2024-05-22 16:52:42 127

原创 QVector<T>::push_back 介绍

则允许你直接传递构造函数的参数列表,以便在容器中直接构造对象。方法本身的调用方式总是相同的:你传递一个值或可以隐式转换为。但是,可以通过不同的方式构造或获取这个值,这可能会让你觉得。方法只有一种基本的使用方式,即直接传递一个类型为。请注意,尽管有多种方式可以获取或构造值并将其传递给。以下是一些示例,展示了如何使用。的值或可以隐式转换为。

2024-05-22 16:51:04 178

原创 堆内存与栈内存

在C++中,内存管理是一个关键的概念,特别是堆内存(heap)和栈内存(stack)的区别。了解这两者的区别有助于编写高效和安全的代码。

2024-05-16 09:48:56 342

原创 std文件中写入内容基础

和类用于文件写入,前者专用于写入,后者可用于读写。打开文件时可以指定不同的模式,如和,根据需求选择合适的模式。多个模式可以通过组合使用。理解这些模式和如何组合使用它们,可以帮助你更灵活和高效地进行文件操作。

2024-05-16 09:48:18 288

原创 std文件中写入内容基础

和类用于文件写入,前者专用于写入,后者可用于读写。打开文件时可以指定不同的模式,如和,根据需求选择合适的模式。多个模式可以通过组合使用。理解这些模式和如何组合使用它们,可以帮助你更灵活和高效地进行文件操作。

2024-05-15 15:34:17 443

原创 一次基类类型对象无法被传递问题的分析

因此,当你试图传递 Triangle 或 Rectangle 的对象(它们都是 CharShape 的派生类)到 fun 函数时,会发生切片(slicing)现象,即只复制了基类 CharShape 的部分(不包括派生类的任何成员),并且因为基类是一个抽象类,所以无法直接创建这个副本。此外,即使 CharShape 不是抽象的,传递基类对象副本到 fun 函数也不会调用派生类的 Show() 方法,因为函数内部处理的是基类对象,它只知道基类的 Show() 方法(如果存在的话)。

2024-05-11 10:10:44 469

原创 利用初始化列表调用基类的构造函数

【代码】利用初始化列表调用基类的构造函数。

2024-05-11 09:59:02 334

原创 模拟栈行为

【代码】模拟栈行为。

2024-04-30 15:28:24 85

原创 浅入浅出理解栈

Item和Stack。

2024-04-29 16:50:39 171

原创 浅入浅出了解指针

指针是程序员不可避免要去了解的,但是相比于哪些要深入了解指针的文章,本文主要是让读者对指针有清晰明了的认知,复杂的指针用法并不涉及。

2024-04-28 14:50:13 170

原创 PLC数据类型介绍

需要注意的是,虽然 PLC 和 C# 中的数据类型可能有一定的对应关系,但在进行数据交换时仍需要考虑数据的编码、大小端格式、数据范围等因素,以确保数据能够正确地传输和解释。在 PLC(可编程逻辑控制器)中,数据块是一种用于存储数据的结构,它可以包含不同类型的数据,例如整数、浮点数、布尔值等。整数类型:在 PLC 中常见的整数类型有 Int、DInt、SInt 等,对应到 C# 中可以使用 int、short、byte 等整数类型。字符串类型:在 PLC 中也有字符串类型,但与 C# 中的字符串类型不同。

2024-04-01 16:35:08 487

原创 TCP服务端主动向客户端发送数据

在此基础上,要修改服务端代码,使其能够每秒向客户端发送当前时间,你需要添加一个循环,每次循环发送当前时间给客户端。同时,你需要在客户端代码中添加接收服务端发送的数据的逻辑。这样修改后,服务端每秒钟向客户端发送当前时间,而客户端接收并打印出来。

2024-04-01 16:09:26 761

原创 tcp服务端,时刻在线

在此基础上,将服务端改为时刻在线。

2024-04-01 16:01:19 528

原创 C++ TCP 服务端和客户端通信的例子

这个例子中,服务器端和客户端之间通过 TCP 进行通信。服务器监听端口8080,并等待客户端连接。一旦有客户端连接进来,服务器端会接收来自客户端的消息,然后向客户端发送一条消息。客户端首先连接到服务器,然后发送一条消息给服务器,然后从服务器接收一条消息。客户端接收来自服务器的响应数据。10. 连接关闭或其他操作。

2024-04-01 15:24:50 563

原创 关于c# 没有显式头文件的优劣分析

在C#中,没有像C或C++中的显式头文件(header files)的概念。在C#中,源代码文件通常包含类、接口、结构和其他类型的定义,这些源文件直接包含在项目中,并且通过命名空间(namespace)来组织代码。总的来说,虽然C#没有显式的头文件概念使得代码更加简洁和易于维护,但是在大型项目中,C++的显式头文件机制有助于提高编译效率和代码的模块化。当涉及到C#中没有显式头文件的概念,而C++中有头文件时,两种语言之间存在一些差异,这些差异会影响到代码组织、可读性、编译速度等方面。

2024-04-01 11:31:56 521

原创 C1083: 无法打开包括文件: “pthread.h”: No such file or directory`

中定义的功能,并且你想在Windows平台上进行编译,你可能需要考虑在Windows上使用类似的多线程库,如Windows API 或者 POSIX for Windows。是一个POSIX线程库的头文件,通常用于在Unix/Linux系统上进行多线程编程。中的功能在Windows平台上也有等效的实现,你可以尝试使用Windows平台上的替代头文件。:在代码中使用条件编译,根据操作系统的不同包含不同的头文件。头文件的,因为Windows使用不同的多线程库。解决这个问题的方法取决于你的代码是否真的需要。

2024-03-29 14:19:27 558

原创 error C1083: 无法打开包括文件: “unistd.h”: No such file or directory`

然而,在Windows平台上编译时,编译器通常不会提供此头文件。中的功能在Windows平台上也有等效的实现,你可以尝试使用Windows平台上的替代头文件。:在代码中使用条件编译,根据操作系统的不同包含不同的头文件。中定义的功能,你可能需要在Windows平台上寻找。:如果可能的话,修改代码逻辑,以避免使用需要。解决此问题的方法取决于你的代码是否真的需要。如果不是,可以尝试删除对该头文件的引用。的替代版本,或者修改你的代码以不依赖于。:检查你的代码中是否确实需要。如果你的代码确实需要。

2024-03-29 14:18:39 642

原创 c# modbus 客户端 读modbus 输入寄存器的值

/ Modbus TCP默认端口号。

2024-03-29 10:18:53 219

原创 回调函数例子

回调是一种常见的编程模式,其中一个函数被传递给另一个函数,以便在某个事件发生时执行。函数接受一个整数值和一个回调函数作为参数。在函数内部,它执行一些操作,并在特定条件(这里是值大于10)下调用传递的回调函数。作为回调函数传递进去。当条件满足时,回调函数会被调用,并输出相应的信息。请注意,这只是一个简单的示例,实际应用中可能涉及更复杂的场景和数据传递。

2024-03-29 09:51:54 215

原创 PlcException error code ReadData error msg: Received 12 bytes: ‘32-0 2-00-00-00-00-00-00

如果还是不行,可以考虑重启电脑,重新建项目,也许能解决。博图这个app 的bug太多了。

2024-03-29 09:32:53 228

原创 c#通过s7与plc通信

完成以上步骤后,您的TIA Portal项目应该能够与您的S7 PLC进行通信了。确保配置正确并进行测试,以确保通信正常运行。要配置西门子S7通信,首先确保你有一些必要的信息,比如PLC的IP地址,以及需要访问的数据块。上层软件如何通过s7通信读取数据块。

2024-03-29 09:22:39 476

原创 布局选项卡式文档

在 Qt 中,要实现选项卡式文档,通常使用 QTabWidget 控件。你可以将这两个 QWidget 放置在 QTabWidget 中,并将 QTabWidget 添加到主窗口中,从而实现选项卡式布局。要将这两个 QWidget 设置为 Tabbed Document(选项卡式文档),你需要将它们作为文档窗口添加到主窗口中,并使用适当的布局管理来实现选项卡效果。通过这样的方式,你可以将这两个 QWidget 设置为 Tabbed Document,并在主窗口中以选项卡的形式显示。

2024-03-20 17:29:43 120

原创 c++ 非阻塞休眠一个线程

因此,如果你的项目需要在多个平台上运行,最好使用 C++11 标准引入的。是用于当前线程休眠指定时间的标准方法。然而,如果你正在使用Qt,你可以使用Qt提供的跨平台的睡眠函数。是 C++11 标准引入的线程库的一部分。一种常见的做法是使用系统特定的方法来实现线程的非阻塞休眠。是 C++11 引入的时间库,它提供了与时间相关的类型和函数。在C++11之前,要实现非阻塞的线程休眠比较困难,因为标准C++库没有提供类似于。函数接受的是毫秒为单位的休眠时间。函数接受的是微秒为单位的休眠时间。在C++11标准中,

2024-03-13 11:35:27 650

原创 Qt如何保证控件调用时候的线程安全

Qt 提供了一种方式来确保在正确的线程上执行 Qt 对象的方法,即使用信号槽机制。你可以在新线程中发出信号,然后将这个信号连接到主线程中的槽函数,这样就能在主线程中更新 Qt 组件。)是不安全的,因为 Qt 大部分的类和方法都不是线程安全的。在一个新的线程中被调用,这可能会导致程序崩溃或产生未定义的行为。,这样就确保了在主线程中更新 Qt 组件的安全性。在多线程环境中直接调用 Qt 组件的方法(如。中,当获取到新数据时,它会发出。对象移动到新的线程中,并将信号。,用于更新标题文本。

2024-03-13 11:15:46 588

原创 一个典型的Qt类基础

可以更有效地传递参数给基类的构造函数,确保在对象创建时进行必要的初始化工作。这在Qt框架中是很常见的做法,特别是在派生类中需要调用基类构造函数时。在实际应用中,你可能会在这个类中添加其他成员变量、函数和信号槽等,以满足具体的需求。这样做的好处是,通过初始化列表直接将参数传递给基类构造函数,可以在对象的构造过程中更高效地进行初始化,而不是在构造函数体内使用赋值语句。这个参数通常用于指定新创建的对象的父对象,即新创建的。是所有用户界面对象的基类,表示一个窗口或者一个窗口中的部件。:这是初始化列表的部分。

2024-03-12 17:29:51 342

原创 git切换分支异常,提示fatal:a branch is expected ,got remote branch **

的操作,但是这些命令通常用于本地分支。在 Git 中,远程分支不能直接被检出(checkout)到工作目录,因为它们代表在远程仓库中的状态,不是本地编辑的。为实际的远程分支名和本地分支名。这样你就能在本地创建一个与远程分支相对应的分支,然后在本地分支上工作。在本地分支上进行任何需要的修改,然后提交它们。这个错误表明你试图在一个远程分支上执行类似。分支的内容,并在本地创建一个新的分支。这会将你的本地分支推送到远程仓库。

2024-03-11 17:13:39 781

原创 ImGui::SetWindowFontScale 设置局部字体大小

是一个常用的控件,用于显示文字。它会根据当前的字体设置自动调整文本的大小。如果你想手动控制文本的大小,可以使用。在设置之后,文本将以更大的字体大小显示。在使用完之后,通过再次调用。在局部设置了一个较大的字体缩放比例,用于影响该窗口内的所有。这个方法有一个缺点,就是渲染后的文字边缘锯齿较为严重。函数,该函数允许你在窗口中设置特定的字体缩放比例。以下是一个示例,演示如何使用。在这个例子中,我们使用。恢复默认的字体大小。

2024-03-11 15:30:07 500

原创 一个简单的回调函数

回调是一种常见的编程模式,其中一个函数被传递给另一个函数,以便在某个事件发生时执行。函数接受一个整数值和一个回调函数作为参数。在函数内部,它执行一些操作,并在特定条件(这里是值大于10)下调用传递的回调函数。作为回调函数传递进去。当条件满足时,回调函数会被调用,并输出相应的信息。这只是一个简单的示例,实际应用中可能涉及更复杂的场景和数据传递。

2024-03-08 17:02:18 339

原创 qobject_cast 与 static_cast

和是两个用于进行类型转换的 C++ 操作符,但它们在使用场景和行为上有一些关键的区别。

2024-03-08 15:16:04 530

原创 linux tar.xz 压缩与解压

一、解压解tar.xz文件有两种方法,以php-7.2.0.tar.xz为例。上面两种方法如果不加-C参数,默认解压在当前目录。分两步:先生成tar文件,再生成tar.xz文件。二、生成tar.xz文件。

2024-03-05 15:05:01 988

原创 linux 取消分区的挂载以及挂载到新分区如何操作

完成上述步骤后,sda4 分区将被合并到 sda3 分区,并且 sda4 的空间将成为 / 目录的一部分。请确保在进行任何分区操作之前备份重要数据。接下来,选择 sda3 分区,并选择 “Resize/Move” 选项。将 sda3 分区的大小调整为包含 sda4 分区的空间。文件中,找到与 sda4 分区相关的行,并将其更改为挂载到 / 目录。在进行任何磁盘操作之前,备份是非常重要的,以防止数据丢失。在 GParted 中,选择 sda4 分区,并取消分区的挂载。为 sda4 分区的实际 UUID。

2024-03-05 13:39:04 505

原创 怎么判断需不需要给一段代码新写一个类

如果你发现一组相关的数据和操作被多次使用,而且它们共同形成了一个独立的概念,那么可能值得将其封装成一个类。如果你的代码段涉及到一个抽象的概念,例如“用户”、“订单”等,那么可能是时候创建一个表示这个概念的类。如果你的代码段执行多个不同的责任,可能是时候将其拆分为不同的类了。如果你发现自己在多个地方复制粘贴相似的代码,考虑将这些代码抽象成一个类,以便在整个程序中重用。如果多个人共同开发项目,通过类的使用可以更好地分工合作,每个人负责特定的类或模块。如果你有一组数据和与之相关的操作,这是创建一个类的良好候选。

2024-02-29 14:35:35 380

原创 Qt中信号和槽解决了什么问题

当一个插件中的某个事件发生时,可以通过发射信号来通知其他插件,而其他插件则通过连接到这个信号的槽函数来处理相应的事件。这样,对象之间的通信就变得更加灵活,它们不再需要直接知道对方的实现细节,只需关注信号和槽之间的连接关系。当某个事件发生时,相关对象可以发射一个信号,而其他对象则可以连接到这个信号的槽函数,实现对事件的响应。最令人愉悦的是:qt把信号槽机制推广得极好,大量得三方库同样支持信号槽,使得我在使用得时候极其方便,直到现在,我写软件的时候第一选项依然是qt,其中信号槽的广泛使用非常关键。

2024-02-29 13:43:32 573

原创 什么是虚函数?

虚函数允许在基类中定义一个函数,并在派生类中对该函数进行重写。通过使用虚函数,可以实现运行时多态性,使得程序在运行时能够动态地选择调用哪个版本的函数,而不是在编译时确定。在运行时,程序会根据实际对象的类型来确定调用哪个版本的虚函数。这种动态性允许我们在运行时根据实际对象的类型来决定调用哪个函数,从而实现了多态性。虚函数的动态绑定是实现多态性的关键特性之一。时,实际上调用的是指向对象类型的函数,而不是指针类型的函数。这就是所谓的动态绑定。的指针,但它可以指向派生类的对象。它仍然保持其虚函数的特性。

2024-02-29 13:42:47 376

原创 ImGui显示中文

【代码】ImGui显示中文。

2024-02-02 16:26:19 374

原创 通过截获键盘事件获取扫码枪数据

缺点是焦点必须集中在当前窗口也就是MainWindow上,否则无法截获。更推荐使用串口的方式获取,详见上一篇文章。

2024-02-02 10:47:08 376

原创 通过Qt接口从串口中获取扫码枪数据

cmake 配置serialport。通过Qt接口从串口中获取扫码枪数据。qmake配置serialport。

2024-02-02 10:36:30 515

原创 通过QTcpSocket以Json格式将数据发出

temp temp。

2024-01-31 18:26:16 364

原创 利用windows的接口检测串口

【代码】利用windows的接口检测串口。

2024-01-31 16:51:42 490

热键管理应用(pc)端

新建/管理 热键

2019-01-24

空空如也

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

TA关注的人

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