(文章目录) 前言 本专栏将带大家完成一些基于QT和ARMLinux的小项目,其中会涉及到串口助手,网络调试助手,温度曲线,汽车仪表盘等实战小项目。 一、效果图预览 我们在这里实现了基本的串口发送接收等功能,还有一些其他的保存,定时发送等功能,后面我会一一为大家讲解到。 二、创建工程 这里我的QT是6.4版本大家用其他的版本也是可以的。1.创建一个Widgets应用:2.这里我们基于Widget创建工程3.为了方便我们的代码移植所以我们再创建一个QT界面设计类,我们全部的功能代码将放在这个界面设计类中实现这里将名称修改一下即可了: 三、串口界面布局 我们在刚刚创建好的SerialPort.u...

  micz61TEX78l   2023年11月02日   45   0   0 插入图片串口

(文章目录) 前言 本篇文章将正式的带大家实现串口的查找添加,和打开串口的功能。 一、查找存在的串口将串口添加进选择框 创建一个QList用于存储串口的信息。 QList<QSerialPortInfo>m_portList; 在帮助文档中我们看到:使用availablePorts()这个函数可以返回当前存在的串口链表。得到这个链表后,我们使用for循环遍历这个链表将每一个链表的名字添加进入我们创建好存放串口名字的QComBox中。 /查找电脑当前可用串口/ voidSerialPort::FindAndAddSerialPort() { /返回当前存在的串口链表/ m_por...

  micz61TEX78l   2023年11月02日   61   0   0 链表串口配置参数

(文章目录) 前言 本篇文章将带大家实现串口的接收和发送功能。 一、串口数据的发送 1.串口普通发送 首先我们先从数据发送区域得到发送的字符串,QtSerialPort可以使用write函数进行数据的发送,QSerialPort的write函数接受的数据类型是QByteArray,这是因为它是Qt软件框架提供的一个二进制数据缓冲区类。在串口通信时,一般都需要发送二进制数据或者字节数组。因此,QSerialPort的write函数设计为接受QByteArray类型的数据。首先需要得到发送区域的字符串 /按下发送按键/ voidSerialPort::on_sendbtn_clicked() {...

  micz61TEX78l   2023年11月02日   63   0   0 数据字节数串口

(文章目录) 前言 在前几篇文章中我们已经完成了串口的基本布局和串口的收发功能,下面我们对串口的其他功能进行完善。 一、保存接收到的数据 这里首先使用QFileDialog中的getSaveFileName函数打开一个文件对话框得到要保存的文件名,然后判断文件名是否为空,不为空的话打开文件,使用QTextStream将接收到的数据写入文件中,最后关闭文件。 /保存接收到的数据/ voidSerialPort::on_saveRecvbtn_clicked() { /得到选择的文件名/ QStringfilename=QFileDialog::getSaveFileName(this,"另存为...

  micz61TEX78l   2023年11月02日   50   0   0 数据字符串List

(文章目录) 前言 本篇文章将为大家讲解一下QT中线程池的概念和使用的方法。 一、线程池概念讲解 线程池是一种常见的并发编程模型,用于管理和复用多个线程来执行任务。它的基本思想是在应用程序启动时创建一组线程,这些线程可以重复使用,以执行一系列的任务,而不需要为每个任务都创建和销毁线程。 线程池通常由线程池管理器、工作队列和一组工作线程组成。 线程池管理器:负责管理线程池的创建、销毁和线程数量的控制。 工作队列:用于存储待执行的任务。当任务提交至线程池时,会被添加到工作队列中,等待线程池中的线程来执行。 工作线程:线程池中的线程会从工作队列中取出任务,并执行任务的操作。 线程池的优点包括: 1...

  micz61TEX78l   2023年11月02日   43   0   0 线程池应用程序Qt

(文章目录) 前言 本篇文章我们来讲解C中非常重要的一个概念,这个概念就是引用,引用在C中经常使用,下面就让我们来看看到底什么是引用吧。 一、引用概念介绍及使用方法 在C中,引用是一种别名,它允许我们使用一个已经存在的对象来创建一个新的名称。引用提供了一种更直观、简洁和安全的方式来操作对象,同时也增加了代码的可读性。 以下是关于C中引用的一些重要特点和用法: 1.引用的声明和初始化: 引用必须在声明时进行初始化,并指定它所引用的对象,否则会导致编译错误。引用初始化后,一旦绑定到一个对象,就不能再改变其绑定的对象。 intnum=10; int&ref=num;//引用声明和初始化 ...

  micz61TEX78l   2023年11月02日   56   0   0 初始化内存空间内存地址

(文章目录) 前言 最近我打算出一套笔试刷题的总结,帮助大家解决一些笔试的经典和容易出错的题目,并且将这些知识点讲解明白。我将会在牛客网上刷题,节省大家的时间将最值得关注的题目呈现给大家。 一、由for(;;)引出的一系列问题 在C/C的for循环中,我们可以省略循环语句的各个参数,包括初始化语句、循环条件和增量表达式。当省略这些参数时,编译器会按照一定的规则进行默认处理。 下面是省略循环参数时的默认处理规则: 1.省略初始化语句:如果省略初始化语句,那么循环开始之前的初始化操作就会被忽略。通常情况下,我们会在循环外部或者在循环之前对循环变量进行初始化。 2.省略循环条件:如果省略循环条件,...

  micz61TEX78l   2023年11月02日   50   0   0 右值操作数字符串

(文章目录) 前言 本篇文章我们来讲解一下newdelete和mallocfree的区别,这个区别在许多面试题中也会经常问到,那么我们就具体的来看看他们有什么不同吧。 一、区别 new和delete是C中的运算符,用于动态分配和释放内存空间,而malloc和free是C语言中的函数,用于同样的目的。下面是它们之间的区别: 1.类型安全性:new和delete是类型安全的,它们会自动进行对象的构造和析构函数的调用,确保正确的内存管理。而malloc和free是无类型的,它们只是返回一个指向void类型的指针,需要手动处理对象的构造和析构。 2.运算符vs函数:new和delete是C中的运算符...

  micz61TEX78l   2023年11月02日   62   0   0 内存管理内存分配运算符

(文章目录) 前言 本篇文章带大家学习什么是互斥锁,并且学习一下互斥锁中一些函数的使用方法。 一、互斥锁的概念 FreeRTOS中的互斥锁(Mutex)是一种同步机制,用于控制多个任务对共享资源的访问,以确保只有一个任务可以访问该资源,从而避免竞争条件和数据损坏。互斥锁是一种二进制信号量,它只有两个状态:已锁定和未锁定。 二、互斥锁相关函数 1.xSemaphoreCreateMutex(): 函数原型:SemaphoreHandle_txSemaphoreCreateMutex(void);功能:用于创建一个互斥锁。返回值:返回一个指向新创建的互斥锁的句柄(handle)。 2.xSema...

  micz61TEX78l   2023年11月02日   35   0   0 互斥锁优先级信号量

(文章目录) 前言 在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。 一、ADC的基本介绍 ADC指的是模数转换器(Analog-to-DigitalConverter),它是一种用于将模拟信号转换为数字信号的电子设备或电路。模拟信号是连续变化的信号,可以取无限个可能的值,而数字信号则是离散的,只能表示有限个数值。ADC的作用就是将模拟信号转换为离散的数字信号,以便数字电子系统进行处理、存储和传输。ADC的基本工作原理是通过一系列的采样和量化过程来实现模拟到数字的转换: 1.采样(Sampling):ADC根据一定的...

  micz61TEX78l   2023年11月02日   23   0   0 数据寄存器有效位扫描模式

(文章目录) 前言 本篇文章来讲解函数重载,函数重载在C中是非常重要的一个概念。 一、概念讲解 C中的函数重载是指在同一个作用域中定义多个具有相同名称但参数列表不同的函数。函数重载允许使用相同的函数名来表示执行类似但具有不同参数类型或参数数量的操作。这样做可以提高代码的可读性和灵活性,使程序员更加方便地调用适合不同情境的函数。 函数重载的特点如下: 1.函数名称相同:重载函数的名称必须相同。 2.参数列表不同:重载函数的参数列表必须有所区别,例如参数的类型、个数或顺序不同。 3.返回类型不同:函数的返回类型不能作为重载函数的区别,因为编译器无法只根据返回类型确定要调用哪个函数。其他的仅返回类...

  micz61TEX78l   2023年11月02日   31   0   0 重载函数函数重载代码示例

(文章目录) 前言 本篇文章带大家简单的配置一下FreeRTOS 一、FreeRTOS介绍 在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。下面我就带大家使用cuebMX配置一下RTOS。 二、cubeMX配置 1.单片机型号选择2.sys配置3.时钟源选择4.时钟树配置5.打开RTOS6.生成工程代码 总结 通过上面的配置我们就完成了简单的RTOS的配置了,以后我们会带大家学习RTOSAPI函数的使用。

  micz61TEX78l   2023年11月02日   58   0   0 插入图片2d嵌入式

(文章目录) 前言 本篇文章带大家学习一下如何使用RTOSAPI函数创建任务。 一、cuebMX配置 具体配置 二、代码解析 1.系统创建的任务函数 下面我们来看看系统是如何创建一个任务的。 osThreadIddefaultTaskHandle;//任务函数句柄 //StartDefaultTask:任务函数名字 //defaultTask:名字 //osPriorityNormal:任务优先级 osThreadDef(defaultTask,StartDefaultTask,osPriorityNormal,0,128); defaultTaskHandle=osThreadCreate...

  micz61TEX78l   2023年11月02日   59   0   0 句柄优先级释放资源

@TOC 前言 本篇文章来讲解I2C系统的重要结构体,了解这些结构体对于编写I2C驱动来说是至关重要的,所以要想编写好一个I2C驱动程序那么就必须先了解这些结构体。 一、I2C硬件框架 这里使用百问网的一张图片来讲解: 一个芯片中可以有多个I2C控制器,并且一个I2C控制器可以控制多个设备。那么在对应的驱动中I2C控制器和这些设备还有传输的消息都是用什么来表示的呢? 在Linux内核中:使用i2c_adapter这个结构体来代表一个I2C控制器。传输的消息使用i2c_msg结构体表示。设备使用i2c_client结构体表示。 二、i2c_adapter i2c_adapter结构体: s...

  micz61TEX78l   2023年11月02日   50   0   0 #definesed设备驱动程序

@TOC 前言 本篇文章给大家介绍一下如何使用QPainter来画圆弧。 一、QPainter画圆弧方法 drawArc()函数是Qt绘图类库中的一个函数,用于在画布上绘制圆弧。可以通过设置起点角度和圆弧弧度来控制圆弧的绘制效果。 函数原型如下: voidQPainter::drawArc(intx,inty,intwidth,intheight,intstartAngle,intspanAngle); 其中,参数x和y指定圆弧所在矩形的左上角坐标,参数width和height分别指定圆弧所在矩形的宽度和高度。参数startAngle指定圆弧的起始角度,单位为度,范围是从0到360。参数...

  micz61TEX78l   2023年11月02日   72   0   0 顺时针旋转角度Qt

@TOC 前言 在前面的文章中我们都只使用到了.c文件作为依赖但是在实际的工程中肯定是不可能只有.c文件的还存在.h文件,那么在包含了.h文件后又该如何来包含依赖关系呢? 一、makefile不包含.h依赖的后果 首先先在目录下新建四个文件夹,其中就包含了fun.h这个文件。 makefile: OBJS:=fun.omain.o hello:$(OBJS) gcc-o$@$^ $(OBJS):%.o:%.c gcc-o$@-c$^ 运行结果: 通过运行结果可以发现不包含.h文件的依赖,将没有办法找到头文件。 那么这样就需要将头文件包含进来:将头文件的依赖包含进来后就能够成功...

  micz61TEX78l   2023年11月02日   48   0   0 头文件sed命令sed

(文章目录) 前言 本篇文章将讲解include的使用方法,在C语言中使用include是包含头文件,那么在makefile当中使用include的作用是什么呢? 一、include在makefile中的概念介绍 在Makefile中,include用于在当前Makefile中包含另一个Makefile或者一个设置环境变量的脚本。可以使用include将一个大型的Makefile分成多个小的Makefile,方便维护和管理。 include可以在Makefile的任意位置使用。它会读取并处理指定文件中的命令和变量,然后将它们合并到当前的Makefile中。 二、include使用示例 下面使...

  micz61TEX78l   2023年11月02日   46   0   0 插入图片文件名bash

(文章目录) 前言 在前面的文章中我们的文件全部都是放在同一个目录下面的,那么在实际的工程开发中会这样做吗?答案肯定是不会的,因为将全部的文件放在同一个目录下会显得十分凌乱,这样不便于代码的管理。 一、常用的源码管理方式 我们通常将各个模块的源码分开管理,并且将模块中的.c文件和.h文件也分开管理,这样便于我们代码的移植和管理。那么通过这样管理后make怎么样来找到对应的文件在哪里呢? 二、VPATH和vpath 1.VPATH VPATH是Make中的一个变量,用于指定Makefile查找源文件的路径。当Makefile中需要使用一些源文件时,如果这些源文件不在当前目录下,则需要通过VPA...

  micz61TEX78l   2023年11月02日   55   0   0 当前目录源文件搜索

(文章目录) 前言 本篇文章继续为大家讲解QT桌面项目,那么这篇文章我们将实现一个日历程序。在QT中要想实现一个简单的日历程序是非常简单的,使用QT中自带的QCalendarWidget类即可实现。 一、QCalendarWidget介绍 QCalendarWidget是Qt框架中提供的一个日期选择控件,用户可以通过该控件快速选择需要的日期,并且支持显示当前月份的日历。 QCalendarWidget的主要功能包括: 显示日历:QCalendarWidget可以显示当前月份的日历,同时支持快速跳转到其他月份。 选择日期:用户可以通过QCalendarWidget快速选择需要的日期,支持通过单...

  micz61TEX78l   2023年11月02日   31   0   0 控件日期选择#include

(文章目录) 前言 为了和我们这个项目做的更加真实,这里为我们的项目添加上状态栏和导航栏让他变成更加接近手机的桌面效果。 一、状态栏 这个状态栏就是显示时间和wifi状态,电池电量的,这里把颜色都设置为白色因为设置为白色后就不会受到壁纸更换的影响了。那么如何来编写这个状态栏呢?这里先建一个MyStatusBar的类:他继承QWidegt。 这个状态栏的编写方法也是非常简单的,只需要在这个QWidegt中使用QHBoxLayout布局管理器进行布局即可,使用addStretch函数在中间添加一个可伸缩的空间,让显示时间和wifi状态进行左右分隔。 MyStatusBar.cpp include...

  micz61TEX78l   2023年11月02日   37   0   0 状态栏Layout#include
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~