(文章目录) 前言 本篇文章来讲解抽象类和接口的概念,抽象类和接口都需要依靠我们之前讲解的虚函数来实现,那么我们就来看看如何使用虚函数来实现抽象类和接口吧。 一、抽象类概念 抽象类是一种不能直接实例化(即创建对象)的类,它被用作其他类的基类或接口。抽象类通过声明纯虚函数(没有具体实现的虚函数)来定义接口,而派生类必须实现这些纯虚函数才能被实例化。以下是抽象类的特点和用途: 1.抽象类不能直接实例化:抽象类只能作为基类用于继承,并为派生类提供接口和共享的行为。由于抽象类中存在纯虚函数,没有为其提供具体实现,因此不能直接创建抽象类的对象。 2.包含纯虚函数:抽象类中至少包含一个纯虚函数,通过在函...

  micz61TEX78l   2023年11月19日   26   0   0 派生类抽象类纯虚函数

(文章目录) 前言 本篇文章将会带大家在ubantu和ARM中使用MQTT。源码地址已经告诉大家了,大家可以去git上面将源码下载下来。 一、在ubantu中使用MQTT 1.安装cmake 使用sudoapt-getinstallcmakeg命令来安装cmake。 2.编译MQTT库 使用./build.sh命令执行脚本编译MQTT的库: 在build/bin目录下生成了4个可执行程序: 使用这些可执行程序可以连接到阿里云,百度云,emqx,onenet等云平台。 使用./build/bin/emqx执行程序可以连接到emqx。 二、在ARM中使用MQTT 创建文件arm-linux.c...

  micz61TEX78l   2023年11月19日   36   0   0 插入图片服务器linux

(文章目录) 前言 本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯,一般对于新人来说都是使用HAL库或者标准库来操作的,但是学习寄存器有助于我们了解更加深入的知识,这加会提高我们对ARM架构的理解。 一、LED原理图 首先第一步我们需要先找到LED的原理图,确定对应的引脚,然后知道是高电平点亮还是低电平点亮。 这里我们用到了三个LED,分别是PB0,PB1,PB5。 二、使用寄存器点灯的步骤 1.使能对应的GPIO 2.引脚模式设置 3.引脚方向设置 4.输出电平设置 这个步骤其实和使用那些库的步骤是一样的,只不过在库中我们总是使用一些结构体来完成这些GPIO的初始化。 三、如何操作寄...

  micz61TEX78l   2023年11月19日   34   0   0 插入图片引脚寄存器

(文章目录) 前言 上次已经实现了LED的点亮了,这篇文章将带大家实现流水灯。 一、延时函数 要想实现流水灯首先就得知道什么是延时函数,延时函数的作用就是等待。比如延时一毫秒就是让程序在这里等待一毫秒。延时函数的本质就是执行一些空指令,因为执行指令需要耗费时间,所以执行一定数量的空指令就能达到延时的效果。 延时函数的实现这里的延时函数就是不断的在执行;表达式来达到延时的效果。 /延时函数 单位:ms x:延时的数值 / voiddelayms(unsignedintx) { unsignedchari; while(x--) { for(i=0;i<113;i); } } ...

  micz61TEX78l   2023年11月19日   33   0   0 JavaScript延时函数

(文章目录) 前言 本篇文章将带大家学习AW2013芯片的使用。 一、AW2013芯片介绍 AW2013是AWINICLED驱动器产品线中支持自动呼吸模式的3通道LED驱动器产品。它可以驱动3个独立的LED或一个RGBLED组。 AW2013通过常阳极恒定电流驱动LED。亮度可以通过256级PWM调制。输出电流可以在4个级别配置:15mA、10mA、5mA、0mA(默认)。 AW2013支持渐变的亮度控制效果,有两种模式:直接PWM控制模式和单次编程模式。在单次编程模式中,可以灵活设置呼吸速度、时序、亮度和重复次数。 工作温度范围为-40℃至85℃,封装为2mmx2mm的DFN-101。 应...

  micz61TEX78l   2023年11月19日   29   0   0 3c插入图片寄存器

(文章目录) 前言 之前我们都是在QWidget中来进行学习的,那么今天我将为大家讲解一下QMainWindow。 一、QMainWindow介绍 QMainWindow是Qt框架提供的一个重要的窗口类,用于创建具有标准应用程序布局的主窗口。它提供了一些常见的功能,如菜单栏、工具栏、状态栏和中央部件区域,可以方便地进行应用程序的组织和布局。下面是QMainWindow的一些特点和常用组件: 1.主窗口特点: QMainWindow继承自QWidget,并提供了一个预定义的布局,将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。主窗口具有一个顶级窗口的外观,可以包含其他控件和布局。 2.菜单栏...

  micz61TEX78l   2023年11月13日   25   0   0 工具栏应用程序#include

(文章目录) 前言 本篇文章继续我们的刷题之路。 资料合集地微信公众号:优质程序猿 一、进程控制块 这里只讲解进程的PCB控制块,线程的TCP控制块作用和进程PCB控制块作用类似。 1.PCB控制块的作用 进程控制块(ProcessControlBlock,PCB)是操作系统中用于管理和跟踪进程信息的数据结构。每个进程在操作系统中都有一个对应的PCB,它存储了与进程执行和管理相关的各种信息。PCB在进程的创建、切换和终止等操作中起着重要的作用。 PCB通常包含以下信息: 1.进程标识符(ProcessID,PID):用于唯一标识一个进程。 2.进程状态(ProcessStatus):表示进...

  micz61TEX78l   2023年11月13日   25   0   0 链表信号量页表

(文章目录) 前言 本篇文章继续带大家来刷题。 一、纯虚函数和虚函数的区别 1.实现:纯虚函数没有具体的实现代码,只有函数原型,通过在函数声明的末尾添加=0来指示。虚函数具有默认的实现代码,但可以在派生类中进行重写。 2.抽象类:包含纯虚函数的类是抽象类(AbstractClass),不能直接实例化对象,只能被用作其他具体类的基类。而包含虚函数的类可以实例化对象,但如果包含了至少一个纯虚函数,则其仍然是抽象类。 3.继承和实现要求:派生类必须实现基类中的纯虚函数,否则派生类仍然是抽象类。对于虚函数,派生类可以选择性地重写或继承基类中的实现。 4.调用方式:虚函数通过动态绑定来调用,根据对象的...

  micz61TEX78l   2023年11月13日   25   0   0 #pragma链表纯虚函数

(文章目录) 前言 C语言中的控制语句是非常重要的一个知识点,其实说白了,C语言中的控制语句就是我们在生活中经常会说到的:如果,否则,或者。。。。其实这些控制语句都是非常贴近于我们的生活的。 一、分支语句 C语言中的分支语句可以根据条件执行不同的代码分支。 其中,常用的分支语句包括: 1.if语句 if语句:用于根据条件的真假执行不同的代码。语法结构如下: if(条件表达式){ //条件为真时执行的代码 }else{ //条件为假时执行的代码 } 其中,条件表达式返回值为非0时为真,为0时为假。用我们生活中的话这里可以翻译为如果条件表达式是真的那么就执行if括号里面的代码,否则就执行els...

  micz61TEX78l   2023年11月13日   22   0   0 嵌套for语句if语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 (文章目录) 前言 本篇文章将引入一个重要的知识:TCP的粘包问题,在发送数据的时候可能会出现粘包的问题,很多初学者应该都不知道什么是粘包,那么本篇文章将讲解什么是粘包,又怎么样解决粘包,这将是一个重点问题,希望大家好好理解。下面我们先做一个小实验。 一、一次发送多个数据实验 改写之前编写的client程序: include<unistd.h> include<stdio.h> include<sys/types.h>/SeeNOTES/ include<sys/socket.h&...

  micz61TEX78l   2023年11月13日   21   0   0 帮助文档自动生成#include

(文章目录) 前言 本篇文章将给大家介绍套接字地址结构和字节操作函数的使用。 一、IPV4套接字地址结构 IPV4套接字地址结构通常也称为"网际套接字地址结构"它以sockaddr_in命名。定义在<in.h>头文件中。 sin_family:表示协议族,一般为AF_INET。sin_port:表示端口号,需要以网络字节序存储,通常使用htons()函数进行转换。sin_addr:表示IP地址,类型为in_addr结构体指针,也需要以网络字节序存储。可以使用inet_aton()或inet_addr()函数进行转换,或者手动设置。sin_zero:用于填充,保证长度为sockad...

  micz61TEX78l   2023年11月13日   28   0   0 客户端IPV4套接字

(文章目录) 前言 上篇文章讲解了如何创建一个客户端,这篇文章将创建一个服务端用来和上篇文章的客户端进行通信。 一、编程前的准备 1.相关函数的了解 (1)socket函数创建套接字这个函数上篇文章讲解过了这里就不过多讲解。 (2)bind绑定函数在man手册中找到这个函数的具体用法:函数原型: intbind(intsockfd,conststructsockaddraddr, socklen_taddrlen); sockfd:要绑定的套接字的文件描述符(filedescriptor)。需要注意的是,这个套接字必须在调用bind函数前通过socket()系统调用创建(即先创建,再绑定)...

  micz61TEX78l   2023年11月13日   21   0   0 插入图片客户端服务端

(文章目录) 前言 本篇文章我们来讲解按键的驱动程序,按键驱动程序的主要思路就是使用中断的方式,当按键按下时会发生中断这个时候就可以通过中断来获取按键的状态。 一、设备树编写 我的开发板上有两个按键,那么我们就在gpios里面添加两个gpio的信息。 mykey:mykey{ compatible="my,gpio_key"; gpios=<&gpio51GPIO_ACTIVE_LOW>, <&gpio414GPIO_ACTIVE_LOW>; }; 二、驱动程序编写 按键的驱动程序总的来说是非常常规的,这里我主要讲解一下难点。 这里首先需要提供一个...

  micz61TEX78l   2023年11月13日   24   0   0 驱动程序#include引脚

(文章目录) 前言 本篇文章我们来讲解链接器的意义。 一、链接器概念介绍 链接器(Linker)是计算机编译器系统中的一个重要组成部分,它用于将编译后生成的目标模块(ObjectModule)链接在一起,生成可执行文件或动态链接库(DynamicLinkingLibrary)。 链接器的主要任务是将符号(Symbol)引用解析到符号定义上,将多个目标模块合并为一个可执行文件或动态链接库,生成符号表(SymbolTable),并对程序代码做最后的检查和优化。 在编译过程中,C、C等程序源代码先经过编译器的处理,生成目标代码文件,然后由链接器将多个目标代码合并成单个可执行文件或动态链接库,以便于...

  micz61TEX78l   2023年11月13日   21   0   0 目标文件链接脚本数据段

(文章目录) 前言 本篇文章我们来介绍一下Linux中的调试利器GDB工具,在Linux的调试中GDB可以帮助我们来解决非常多的问题。 一、GDB概念 GDB是一个功能强大的调试工具,可以用于分析程序崩溃,跟踪程序执行过程,查看内存和寄存器状态等。以下是使用GDB进行基本调试的步骤和命令: 1.编译程序并使用-g参数开启调试信息 在使用GDB进行调试前,需要在编译程序时添加-g参数开启调试信息。 gcc-g-oprogramprogram.c 2.启动GDB 在shell中输入gdb命令来启动GDB调试器,并将编译的程序作为参数传递给GDB。 gdbprogram 3.设置断点 使用br...

  micz61TEX78l   2023年11月13日   23   0   0 插入图片GDB#include

(文章目录) 前言 上篇文章讲解了如何创建一个客户端,这篇文章将创建一个服务端用来和上篇文章的客户端进行通信。 一、编程前的准备 1.相关函数的了解 (1)socket函数创建套接字这个函数上篇文章讲解过了这里就不过多讲解。 (2)bind绑定函数在man手册中找到这个函数的具体用法:函数原型: intbind(intsockfd,conststructsockaddraddr, socklen_taddrlen); sockfd:要绑定的套接字的文件描述符(filedescriptor)。需要注意的是,这个套接字必须在调用bind函数前通过socket()系统调用创建(即先创建,再绑定)...

  micz61TEX78l   2023年11月13日   25   0   0 插入图片客户端服务端

(文章目录) 前言 本篇文章将带大家来正式学习Linux网络编程。 一、客户端与服务端 一般认为服务器是一个长时间运行的程序(既守护程序)他只在相应来自网络请求时才发送网络消息协议的另一端是客户端程序,比如某些浏览器等,一般和服务器之前的通信大多数都是由客户端发起一般来说一个客户端每次只能和一个服务器进行通信,但是客户端也可以和多个服务端进行通信,可能在10分钟客户端就和不同的服务器进行通信。 服务器每次能够接收多个客户端程序的连接进行通信。 服务器一次处理多个客户端程序的连接:客户端与服务端在同一个以太网中进行通信: 二、客户端程序编写 这里我们先编写一个简单客户端程序:编写程序的步骤:1...

  micz61TEX78l   2023年11月13日   20   0   0 插入图片服务端f5

(文章目录) 前言 本篇文章将带大家使用HAL库驱动HC-SR04超声波模块。超声波模块作为智能小车必备的模块,要学习智能小车的同学是必须掌握好这个模块的使用的。 一、HC-SR04超声波模块介绍 HC-SR04是一种常用的超声波传感器模块,也被称为超声波测距模块,广泛应用于各种自动化控制和测距系统中。它通常由超声波发射器、接收器、控制电路和外壳组成,可以实现非接触式的距离测量。 下面是HC-SR04超声波模块的一些特性和技术参数: 距离测量范围:2cm400cm(可调)。 测量精度:0.3cm。 工作电压:DC5V。 工作电流:15mA。 频率:40kHz。 传播速度:340m/s。 工作...

  micz61TEX78l   2023年11月13日   28   0   0 外部中断#include引脚

(文章目录) 前言 本篇文章将为大家带来蓝桥杯嵌入式省赛第11届客观题的解析。 一、题目1 积分电路的作用是对输入信号进行积分,因此在输入一个矩形波时,输出波形将是输入波形的积分结果。对于矩形波,它每一个有效部分的斜率都是相同的,所以在输入矩形波时,积分电路会输出一个升降沿斜率都相等的三角波形。具体而言,当矩形波上升沿时,积分电路输出上升斜率相等的三角波;当矩形波下降沿时,积分电路输出下降斜率相等的三角波;而在矩形波的平顶期间,积分电路输出固定斜率的直线。 二、题目2 稳压二极管是利用PN结的反向击穿特性制作而成的。 稳压二极管是一种具有稳定反向击穿电压的二极管,它的工作原理与普通二极管相似...

  micz61TEX78l   2023年11月13日   32   0   0 插入图片逻辑电路数字信号

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 (文章目录) 前言 本篇文章将讲解QWidget改变背景图的方法和会遇到的问题。 一、添加背景图资源文件 添加资源文件添加对应背景图编译后出现资源文件: 二、使用QPalette 在Qt中,可以使用QPalette类和QWidget的setPalette()函数来改变控件的颜色、背景图等。 QPalette类提供了一种处理颜色和绘图相关属性的通用方式,可以作为QWidget的属性之一,在改变控件颜色、背景图等方面被广泛应用。 QPalette的Background属性可以指定控件的背景色或背景图。通过QBrush类型的参数...

  micz61TEX78l   2023年11月13日   22   0   0 插入图片控件背景图
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~