自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT中给界面设置qss样式

1.在main函数中添加qss样式表。2.在使用的地方设置。

2025-01-25 22:59:19 470

原创 Qt中QVariant的使用

方法:通过type函数返回数值的类型,然后通过setValue来构造一个QVariant类型的返回值。1.使用QVariant实现不同类型数据的相加。

2025-01-25 17:37:04 535

原创 QT中多线程的使用(三线程池)

【代码】QT中多线程的使用(三线程池)

2025-01-18 18:05:42 138

原创 Qt Desiogn生成的ui文件转化为h文件

3.在1中的工具输入uic/xx/xxx.ui-o/xx/xxx.h即可得到结果。2.查找到ui文件以及要转化为的h文件的路径。

2025-01-18 17:46:00 341

原创 QT中多线程使用(二)

5.将工作对象移动到创建的子线程对象中,需要调用QObject类提供的moveToThread方法。6.启动子线程,调用start(),这时候线程启动了,但是移动到线程中的对象并没有工作。7.调用工作对象的工作函数,让这个函数开始执行,这时候是在移动到的那个子线程中运行的。2.在这个类中添加一个公共的成员函数,函数体就是我们在子线程中执行的业务逻辑。4.在主线程中创还能工作的类对象(千万不要给创建的对象指定父对象)3.在主线程中创建一个QThread对象,这就是子线程的对象。

2025-01-18 17:41:52 346

原创 QT中多线程的使用(一)

在Qt中使用多线程来处理比较复杂的逻辑时,可以将这个逻辑写到一个类中。这个类继承QThread类,并且重写其中的run()方法,当调用start()方法的时候,run()方法会被自动调用。2.例子:使用多线程实现对10000个数据的排序,并通过冒泡排序和快速排序分别对二者进行排序,得到的结果显示在界面上。假设现在要生成10000个随机数,如果在主线程中直接生成,那么主界面会非常的卡顿,此时需要重新创建一个子线程。当主线程需要使用的时候,可以通过run()方法来调用这个类的处理逻辑。

2025-01-18 16:56:28 361

原创 在QTextEdit中显示文本文件信息

【代码】在QTextEdit中显示文本文件信息。

2024-12-22 14:05:30 162

原创 Qt复习学习

1.4环境变量的设置。

2024-12-04 22:56:36 334

原创 CMAKE的使用

2.2设置C++标准,如C++11 C++14 C++17 C++20;通过CMKAE_CXX_STANDARD = 11/14/17/20。问题:add_executable中的第二个参数太长了,怎么办?6.将当前项目中的文件编译成库文件(动态库和静态库)2.3通过set给生成可执行文件设置路径,也可以在后边cmake的时候指定C++标准。通过这四个文件制作运算库,命令为。发布的时候要发布库文件和头文件。但是会出现问题:找不到头文件。指定生成的库文件的路径。7.在程序中链接静态库。将这些内容存在变量中。

2024-12-02 22:13:28 506

原创 统计字符串中单词出现的次数

【代码】统计字符串中单词出现的次数。

2024-11-28 20:24:29 149

原创 vector中基本操作

【代码】vector中基本操作。

2024-11-24 11:37:12 106

原创 图像加密中的效果评价

2024-11-17 21:16:12 123

原创 C++中STL

【代码】C++中STL。

2024-11-17 21:03:24 216

原创 C++复习

【代码】C++复习。

2024-11-17 10:12:58 369

原创 文件的简单操作

以a+打开文件,读取不到数据,以r却可以,这是为什么?是因为指针指向了文件末尾吗?

2024-11-16 21:14:25 212

原创 结构体的简单操作

【代码】结构体的简单操作。

2024-11-16 20:29:01 206

原创 函数指针示例

【代码】函数指针示例。

2024-11-16 20:09:19 420

原创 二维数组操作

【代码】二维数组操作。

2024-11-16 19:33:05 126

原创 单向链表基本操作

第一版程序:包含链表创建,增删改查查找。

2024-11-16 12:01:56 229

原创 基于IMX6ULL的电子产品量产工具

2.3Framfbuffer中结构体。2.2DispOpr 结构体。2.1显示管理器框架。

2024-11-02 10:06:01 268

原创 linux-UART

UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。图中的电平分为TTL/CMOS以及RS-232电平。1.1接线:把串口的Tx和Rx连接起来。1.app发送接受数据。

2024-11-01 20:44:24 458

原创 Linux中SPI

基于平台总线设备驱动模型实现。在probe函数中除了生成spi_master,还会创建spi_device结构体。根据SCK的电平以及数据在第一个跳变沿还是第二个跳变沿传输,SPI传输总共有四种模式。spi设备也有自己的驱动程序,提供spi设备的访问能力。spi控制器有驱动程序,提供spi的传输能力。3.SPI总线设备驱动模型。4.1SPI控制器驱动程序。4.spi设备驱动框架图。4.2SPI设备驱动程序。

2024-10-30 19:59:46 541

原创 VIM的使用

修改键盘映射的方式:交换Linux中大写锁定键和Esc按键的位置。安装命令 yum-install xmodmap。7.文本对象 范围文本对象。9.设置标记,快速回跳。4.VIM学习初体验。

2024-10-30 19:35:28 340

原创 GCC及GDB的使用

(假如程序出错的时候,没有产生core文件,就要通过ulimit来设置;ulimit -c unlimited)这里还是没出来core文件,后续再排查为什么。r: 没有设置断点的时候,r会将程序运行完。5.当程序出现错误的时候,比如指针越界。6.调试一个正在运行的进程。su root之后重新查看。4.3观察某个变量的值。会产生一个core文件。1.GDB的主要功能。

2024-10-29 21:44:15 287

原创 Makefile使用

Makefile的使用及基本语法

2024-10-29 20:39:40 315

原创 linxu-i2c驱动-adapter

结合下边的文件来访问0x2e设备。在虚拟总线上实现0x2e的设备。

2024-10-27 21:51:33 133

原创 linxu-i2c驱动-eeprom

经过排查是由于,读写之后,没有加延时,可能会导致数据的覆盖。这个程序中还存在一些小问题,不过实现了数据的传输。后续可以把这个延时时间取短点,这里直接取值2s。eeprom的地址为0x50。对driver程序进行更改。

2024-10-27 21:24:25 254

原创 linux-i2c驱动-ap3216c

2.i2c-driver程序。3.i2c-client程序。

2024-10-27 18:35:12 232

原创 linxu - I2C

I2C 协议采用双线结构传输数据,包括一个数据线和一个时钟线(即 SDA 和 SCL 线),其中 SDA(Serial Data)线用于双向数据传输,而 SCL(Serial Clock)线则用于同步数据传输的时钟信号。IIC 协议(Inter-Integrated Circuit,可简写为 I2C),是一种用于各种电子设备之间进行通信和数据交换的串行通信协议。I2C 设备的地址为 8 位,但是时序操作时最后一位不属于地址,而是 R/W 状态位。所以有用的是前 7 位,使用时地址整体右移一位处理即可。

2024-10-27 15:59:32 298

原创 10.Linux按键驱动-中断的线程化处理threadirq

1.1在probe函数中申请thread_irq。

2024-10-27 10:09:33 155

原创 9.Linux按键驱动-工作队列

1.2 在probe函数中初始化工作队列。1.1在gpio结构体中定义工作队列。1.3.在中断服务程序中调度工作队列。

2024-10-27 09:52:48 243

原创 8.Linux按键驱动-中断下半部

由运行结果可知,在驱动中检测到两次按键按压事件(tasklet函数被调用两次),由于上节中的定时器消抖,导致key_timer_expire函数只被调用了一次,故read函数只执行了一次,应用程序只能获取后一个按键值。1.1在gpio结构体中添加tasklet_struct结构体。1.2在probe函数中初始化tasklet结构体。1.3在中断服务程序中调度tasklet。应用程序和Makefile和上节一致。1.4在这个函数中执行其它任务。

2024-10-27 09:34:54 323

原创 7.Linux按键驱动-定时器

3.2在probe函数中,设置定时器,修改定时器超时时间,添加定时器。3.4在超时函数中,唤醒等待队列,执行原来中断服务程序执行的那些任务。3.1 在按键结构体中,添加timer_list成员。3.3在按键中断函数中,修改定时器超时时间。

2024-10-27 09:04:49 335

原创 6.Linux按键驱动-阻塞与非阻塞

核心在于驱动程序中的.read函数的支持。立即返回,无法读出,返回-1。默认打开文件时候是阻塞的。1.设置打开方式为非阻塞。

2024-10-26 23:37:08 323

原创 5.Linux按键驱动-fasync异步通知

当应用程序收到SIGIO信号的时候, sig_func函数就会被调用,调用read函数读取按键的值。2.2APP把自己的pid告诉驱动程序。2.1绑定信号和信号处理函数。

2024-10-26 23:02:44 276

原创 4.Linux按键驱动-poll监听文件描述符

在while循环中读取数据之前,首先调用poll函数(对应于驱动中的gpio_poll),如果产生了按键按压事件,那么 ret为1,且fds的revens为POLLIN。当产生中断时,中断服务程序中回唤醒等待队列,.poll函数会返回POLLIN | POLRDNORM。根据上述分析可知,只有当产生了按压之后,才会进入到if的第一个分支,调用read函数。那么,在这种情况下,可以去掉gpio_read函数中第87行的代码。3.在驱动程序中,添加对poll函数的支持。2.1定义文件监听描述符及超时时间。

2024-10-26 22:14:22 337

原创 3.Linux按键驱动-添加循环队列

3.在open函数中,等待条件变量。当获得条件变量时,判断条件是否为真,为真时,将数据从内核空间拷贝到用户空间。2.在中断服务程序中,记录按键值,并且唤醒等待队列。1.添加环形缓冲区的代码。

2024-10-26 21:25:43 314

原创 2.Linux按键驱动-创建字符设备,通过应用程序读取按键值

3.在中断处理函数中唤醒等待队列,然后在read函数中返回按键值。4.4在中断服务程序中,给全局变量赋值,并且唤醒等待队列。4.2 gpio_remove函数中添加对应的删除代码。4.5此时,.read函数会将数据拷贝回用户空间。4.1 gpio_probe中添加字符设备代码。1.在上一个博客的基础上,添加一个字符设备。2.在probe函数中注册字符设备。4.3 定义全局变量,等待队列。3.3Makefile文件。

2024-10-26 18:14:37 419

原创 1.Linux按键驱动

使用设备树来实现按键驱动

2024-10-26 16:06:48 357

原创 Linux复习-C++

7.define和inline的区别。8.前置++和后置++区别。4.静态链接和动态链接。3.C与C++的区别。5.指针和引用的区别。6.类和结构体的区别。

2024-10-26 13:53:26 539

C语言软考程序员资料源C语言软考程序员资料

C语言软考程序员资料

2019-08-11

空空如也

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

TA关注的人

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