自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BusyBox v1.30.1 (Ubuntu 1:1.30.1-7ubuntu3) built-in shell (ash) Enter ‘help‘ for a list of built-in

问题出现原因:在编译Linux内核的时候,电脑突然卡死了,等了十多分钟都不行,我就直接按电源键重开了,电脑开机之后进入虚拟机发现我使用vi命令进文件都提示只是可读文件,然后:q退出也报错。这时我就发现不对劲了。我就关闭虚拟机重新开机,果然开不机了其他的没记录了第一条显示的是:piix4_smbus 0000:00:07.3 SMBus Host Controller not enabled翻译:piix4_smbus 0000: 00:03 .3 SMBus主机控制器未启用。

2024-06-15 13:29:44 905 1

原创 buildroot编译出错you should not run configure as root

buildroot在图形配置后,执行 sudo make开始编译出现以下错误configure: error: you should not run configure as root (set FOenvironment to bypass this check)直接su切换到超级用户再执行make就成功了。虚拟机版本:ubuntu-22.04.4。这里我尝试了,还是报错并没有成功。后面看到了这个方法,可以解决问题。

2024-06-15 13:27:52 177

原创 Qt笔记:动态处理多个按钮点击事件以更新UI

在开发Qt应用程序时,经常需要处理多个按钮的点击事件,并根据点击的按钮来更新用户界面(UI),如下图。例如,你可能有一个包含多个按钮的界面,每个按钮都与一个文本框和一个复选框相关联。当点击某个按钮时,你希望将该按钮关联的文本框中的文本和复选框的状态更新到主窗口的某个区域。是一个模板函数,用于在 Qt 的对象层次结构中进行安全的类型转换。如果找到匹配的子对象,它会返回该对象的指针;为了解决这个问题,我们可以使用Qt的信号和槽机制,并结合。是 Qt 信号和槽机制中的一个方法,当槽函数被调用时,

2024-05-16 22:12:19 502

原创 E: You must put some ‘deb-src‘ URIs in your sources.list

E:您必须在sources.list中放置一些'deb-src' uri的错误。执行 apt source libinih1命令时出现。执行以下命令刷新仓库信息,包括新添加的源码包仓库。看看deb-src行有没有被注释掉(前面没有。解决方法:进入sources.list文件中。如果它们被注释,请删除。符号以取消注释,然后保存退出。

2024-05-16 22:11:25 150

原创 静态库和动态库的了解

静态库和动态库是程序开发中常用的两种库文件类型,它们各有特点,适用于不同的场景。

2024-05-07 21:04:52 382

原创 C语言头文件的引入使用<>和““有什么区别

时,编译器首先在当前工作目录下查找头文件。这种方式常用于包含用户自定义的头文件,因为这些文件通常位于和源文件相同的目录或相关的子目录中。(双引号)会优先在当前工作目录中查找头文件,这使得在项目开发过程中,可以轻松地包含和测试自定义的或项目特定的头文件。(尖括号)直接从系统目录开始搜索,这意味着它是用来包含标准库头文件的首选方式,确保使用的是官方提供的库定义。时,编译器会首先在系统目录中搜索头文件。这些系统目录通常包含了标准库的头文件,如。在C语言中,引入头文件时使用。

2024-05-07 20:58:47 591

原创 C++基本数据类型

c++的基本数据类型和c语言类似如下表。注意:在qt中使用宽字符型会报错。

2024-04-20 23:18:23 200

原创 linux下摄像头设置固定的设备名

通过我之前的文章配置完摄像头的开机自启动之后我们会发现有的时候会出现启动不了的情况,通过实验我发现是摄像头的设备名发生了改变,而我们在start.sh脚本哪里配置的又是固定的所以就会出现启动不了的情况。到这里说明我们的固定名称已经配置完成了,我们还需要去修改我们的start.sh脚本的内容,把设备名修改成我们固定的名称。通过这些配置,我们摄像头服务就能做到每次开机自动启动,而且也不会因为设备名发生了改变而出现启动失败的情况。udev就是一种规则,能将你插入的设备固定为唯一指定的别名。1.查看usb ID。

2024-04-20 23:17:53 830

原创 香橙派使用摄像头

1.修改start.sh脚本,在自己安装的路径下找到start.sh文件。(注意这里的video0需要根据实际情况来修改)/dev/video0(这个不一定)start.sh脚本来运行摄像头。用于设置生成的照片的名字和路径。后可以使用下面的命令来拍照。选项用设置于跳过前面的帧数。4.然后输入下面的命令启动。然后在和开发板同一局域网的。】就能看到摄像头输出的视频了。选项用于指定照片的分辨率。或者手机的浏览器中输入【摄像头的设备节点信息为。

2024-04-18 22:36:33 1285

原创 D:\QtFile\CPP\textBook01\widget.cpp:4: error: invalid use of incomplete type ‘class Ui::Widget‘ Wid

上网一搜索发现这个问题很简单,可能只是我们在设计页面的时候不小心把主对象名字改掉了。所以我们ui文件的主对象的名字应该和它对应,这样修改完之后就不会报错了。今天在学习qt的时候保存,运行之后突然报这些错误。这里我们的初始类名时Widget。修改完之后就可以正常运行了。

2024-04-18 22:35:49 278

原创 C++基本输入输出

C++中的输入和输出(I/O)主要是通过标准库中的输入输出流来实现的。最常用的是库,它提供了用于输入和输出的基本流类,包括 cincoutcerr和clog。cout。

2024-04-17 16:54:08 212

原创 C++命名空间

例如,你可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。创建自己的命名空间是C++中组织代码的一种好方法,特别是在开发大型项目或库时,命名空间可以帮助你避免名称冲突,并且清晰的组织代码。我们新建一个C++工程,默认生成的代码。的命名空间,其中包含了计算圆的面积和周长的函数,以及圆周率常量 PI。

2024-04-17 16:45:05 887

原创 C语言文件操作函数remove、rename、popen、fget

popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令。依照此type值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。此外,所有使用文件指针(FILE*)操作的函数也都可以使用,除了fclose()以外。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。如果错误,则返回 -1,并设置 errno。

2024-04-15 00:47:34 1305

原创 配置香橙派摄像头服务每次开机自动启动

bin/bash 指定用bash执行。然后重启我们的系统查看服务有没有启动。cd /需要执行文件的目录。./start.sh 执行。

2024-04-15 00:47:00 700

原创 C语言调用Python

C语言调用python需要我们已经安装好了libpython3的dev依赖库,如果还没安装的可以看我之前的文档。

2024-04-07 20:52:31 2665

原创 stm32中断传输的状态信息

1、gState (Tx)发送的状态信息。2、RxState (Rx)接收的状态信息。

2024-04-07 20:51:45 179

原创 搭建python编译环境

通过C语言调用Python代码,需要先安装libpython3的dev依赖库(不同的ubuntu版本下,python版本 可能会有差异, 比如ubuntu 22.04里是1.安装依赖包首先我们可以使用以下命令来查看是否存在python的dev包正常会有类似如下的输出,出现和"dev",如即可:如果没有的话我们可以使用以下命令进行安装如果安装和下面一样显示失败的话,那我们就需要进行换源了。

2024-04-07 20:50:30 510 2

原创 基于C语言实现 SQL数据库和链表的相互转换

这里sqlite3_open、sqlite3_close就不介绍了作用:准备 SQL 语句以供执行。这个函数将 SQL 语句编译为一个预处理语句对象,并返回一个状态码以指示编译过程中的任何错误。参数解释:db:指向已打开的 SQLite 数据库的指针。zSql:要准备的 SQL 语句的字符串。nByte:要准备的 SQL 语句的字节数,如果为负数,则直到遇到字符串的终止符(NULL 终止符)。ppStmt:用于存储编译后的预处理语句对象的指针。pzTail。

2024-04-05 16:39:58 531

原创 C语言操作SQL数据库

sqlite3是打开的数据库对象是一个回调data作为回调函数的第一个参数errmsg将被返回用来获取程序生成的任何错误程序解析并执行由sql参数所给的每个命令,直到字符串结束或者遇到错误为止数据库中有n条数据回调函数就会调用n次,注意return 0;得返回0,经过验证返回其他的只会调用一次。

2024-04-05 16:39:11 1148

转载 sqlite3.h的常用宏定义,错误代码

如 sqlite3_open 、sqlite3_get_table、 sqlite3_exec函数的返回值。函数从这里显示的集合中返回一个整数结果代码,以指示成功或失败。

2024-04-05 16:35:48 63

原创 嵌入式数据库--SQLite

sqlite数据库是轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行。MySQL需要运行服务器,MySQL将需要客户端和服务器架构通过网络进行交互。SQLite与MySQL数据库的优缺点对比(了解)基于嵌入式的数据库主要有:SQLiteFirebirdeXtremeDBFirebird。

2024-03-24 17:25:53 1333

原创 修改开发板内核启动日志输出级别

sudo vi /boot/orangepiEnv.txtverbositg 内核启动的输出权限为1时,日志信息基本都被屏蔽了,改为7最高级别所有日志信息都会输出 console = serial(串口) 将输出的方式改为串口输出

2024-03-24 16:55:46 215

原创 基于官方外设开发

日常使用时,只需传第一个参数,第二个参数传NULL(因为linux内核不会使用这个参数)。Linux下可以使用gettimeofday()来查看当前时间,这个函数会计算从1970年1月1号00:00(UTC)到当前的时间跨度。添加完成之后给文件添加可执行权限 ----chmod -777 shell.sh 注意这里我设置的是最大权限。:计时器的初始值,一般基于这个初始值来加或者来减,看控制函数的参数配置。,进程和系统执行时都递减计时器的值,发送的信号是。,进程执行时递减计时器的值,发送的信号是。

2024-03-24 16:55:20 1097

原创 关于char类型左移八位的问题

在蓝桥杯学习的时候发现up主使用无符号char类型的变量来左移8位的方式来控制PC8-PC15引脚的高低电平。当时我就突然觉得char类型不是只有8位吗?通过代码的验证第三个文章说的应该没什么问题,char在左移位8位后如果是赋值给char类型的变量则结果为0,如果赋值给其他类型比如赋值给int类型则也会保存那8位的数据。1、这个文章说unit16类型的变量不会被附上任何有意义的值,根据上面的运用实验出来的结果这里肯定是错的。带着这些问题,我问了度娘也没有得出准确的答案。3、这个文章说的应该就是正确的。

2024-03-19 11:07:20 655

原创 Orangepi Zero2刷机与启动

这是企业开发调试必用方式,比串口来说不用接线,前提是接入网络并获得板子。的电源适配头,特别是开发板有接多个外设模块的时候。引脚需要通过杜邦线连接到开发板的调试串口上(如果没有SSH服务器就需要我们自己去配置。先格式化sd卡,然后再把系统烧入进去。供电用电脑可以,前提是不接多外设模块。,用于系统烧写后的串口登录开发板。刷机工具都是直接安装下一步就可以了。SSH 的服务器,本镜像自带SSH。sudo passwd 用户名。这里注意接线别接反了)

2024-03-19 11:05:45 384

原创 strstr函数、chdir函数、access函数、strdup函数的介绍

函数返回一个指向新分配字符串副本的指针。需要注意的是,由于它在堆上分配了内存,使用完后需要手动释放这块内存,以防止内存泄漏。函数返回一个指针,指向新分配的以 null 结尾的字符串。是 C 语言中的一个字符串处理函数,用于在一个字符串中查找子字符串的第一次出现。是 C 语言中的一个函数,用于复制字符串,并返回指向新字符串的指针。函数返回一个指向第一次出现子字符串的指针,如果子字符串未找到,则返回。是 C 语言中的一个系统调用,用于检查文件或目录的权限。是 C 语言中的一个系统调用,用于改变当前工作目录。

2024-03-11 20:40:31 510

原创 bind: address already in use端口占用问题的解决

相同的服务,由于异常退出服务关闭时未释放端口。再次启用服务时,无法启动。2、找到被占用的端口(确认该端口对应的服务是即将启用的服务)1、使用 netstat -tulpn 查看 端口使用情况。

2024-03-11 20:40:04 748

原创 Linux网络编程

字节序(Byte Order)指的是在多字节数据类型(如整数、浮点数)在存储或传输时字节的顺序。在计算机中,常见的字节序有两种:大端序(Big-Endian)和小端序(Little-Endian)。在大端序中,数据的高位字节存储在低地址,低位字节存储在高地址。例如,十六进制数0x1234在大端序中存储为0x12 0x34。在小端序中,数据的低位字节存储在低地址,高位字节存储在高地址。例如,十六进制数0x1234在小端序中存储为0x34 0x12网络字节序一般是大端字节序。

2024-03-03 17:08:07 837

原创 Linux系统编程之多线程

而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右,当然,在具体的系统上,这个数据可能会有较大的区别。是线程间方便的通信机制。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

2024-03-03 17:07:01 962

原创 Linux进程间的通信(IPC)

进程间通信(IPC,Inter-Process Communication)是在操作系统中实现不同进程之间数据交流和共享的机制。在多进程环境中,不同进程可能运行在独立的内存空间中,IPC 提供了一些手段让它们之间能够协同工作、共享信息,从而实现更复杂的任务。以下是一些常见的 IPC 机制。

2024-01-09 14:05:21 353

原创 Linux进程通信之共享内存

共享内存是一种进程间通信(IPC)的方式,它允许多个进程访问相同的内存区域,从而实现数据的共享。与其他 IPC 机制(如消息队列和信号量)不同,共享内存直接将一块内存映射到多个进程的地址空间中,使得它们可以直接读写这块内存,而无需进行复制或数据传输。这使得共享内存成为一种高效的 IPC 方法,特别适用于大量数据的共享和频繁的通信需求共享内存的主要优点是速度快,因为它允许进程直接访问共享的内存区域,而不需要复制数据。然而,它也需要进程之间进行同步和互斥,以避免数据一致性问题。

2024-01-09 14:01:59 1384

原创 Linux进程通信之信号

Linux 中信号是一种进程间通信的机制,用于在异步事件发生时通知进程。实际信号是软中断,许多重要的程序都需要处理信号。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。具体的信号名称可以使用来查看信号的名字以及序号,信号是从1开始编号的,不存在0号信号。kill对于信号0有特殊的应用。这里介绍一些常用的信号信号的处理有三种方法,分别是:忽略、捕捉和默认动作忽略信号:大多数信号都可以通过将其处理动作设置为 (表示忽略)来屏蔽,例如但是,对于 和 两个信号,是不能被忽略的。

2024-01-09 14:01:41 943

原创 Linux进程通信之信号量

最简单的信号量是只能取 0 和 1 的变量,这也是信号量最常见的一种形式,叫做二值信号量(Binary Semaphore)。而可以取多个正整数的信号量被称为通用信号量。Linux 下的信号量函数都是在通用的信号量数组上进行操作,而不是在一个单一的二值信号量上进行操作。1.创建或获取一个信号量集2.对信号量进行控制操作,其中cmd为SETVAL时用于初始化信号量的值。3.对信号量进行操作改变信号量的值。

2024-01-09 14:01:25 888

原创 Linux进程通信之消息队列System V

消息队列(Message Queue)是一种在进程间进行通信的机制,是消息的链接表,允许一个进程向另一个进程发送数据。消息队列是通过在内核中创建的一个消息缓冲区来实现的,允许多个进程向同一队列发送消息,并从中读取消息。每一个消息队列都有唯一一个标识符(队列ID)来标识ftok函数用于生成一个与文件路径名和项目 ID 相关的键值函数原型:key_t ftok(const char *pathname, int proj_id);pathname:文件路径名,可以是一个现有的文件。

2024-01-09 14:01:00 1060

原创 Linux进程通信之管道

创建的)不同,它具有文件系统中的名字,并且可以通过文件系统路径来访问。如果要使数据从父进程流向子进程就需要关闭父进程的读端和子进程的写端,反之就使数据从子进程流向父进程。函数创建的管道是阻塞的,如果管道已满(写端写入速度过快),写操作将会被阻塞,直到有空间可用。命名管道(Named Pipe)是一种特殊类型的管道,与无名管道(通过。mkfifo是 "make FIFO" 的缩写,用于创建一个新的命名管道。函数是用于创建管道的系统调用,通常用于在父子进程之间进行单向通信。管道通常指的就是无名管道,

2024-01-09 14:00:42 1033

原创 Linux系统编程之进程

程序是静态的概念比如我们平时使用的qq、微信等都是程序,进程是程序的一次运行活动。一般来说我们的程序跑起来了,系统中就会相应的产生一个或多个进程每一个进程都有一个非负整数表示的唯一id,叫做pid,类似于我们的身份证pid=0;称为交换进程(swapper)作用:进程调度pid= 1;initial进程,作用:系统初始化编程调用getpid函数获取自身的进程标识符,getppid是获取父进程的进程表示符。

2024-01-09 14:00:19 1022

原创 HAL库的常用库函数(根据学习而更新)

EXTI可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。产生中断线路目的是把输入信号输入到 NVIC(中断控制器,处理中断的),进一步会运行中断服务函数,实现功能,这样是软件级的。而 产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的。中断触发类型:0x08//上升沿0x0C//下降沿0x10//上升沿和下降沿都触发;

2023-12-25 20:39:52 4773 1

原创 Linux文件编程

在Linux文件可分为动态文件与静态文件,动态文件是我们打开的文件在缓冲区里面的文件,而静态文件存放在外存当中。:如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或者只写成功打开,则长度截短为0(就是把里面的内容都删掉)返回值:如果成功则返回读取到的字节数,返回0则表示光标位置在文件的尾,发生错误则返回-1。-- 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。

2023-12-25 20:38:26 1074

原创 STM32之定时器

在51单片机的时候我们经常使用软件定时,但是软件定时存在不精确、占用CPU资源(在计时期间CPU都在数数)等缺点,在stm32我们就是用硬件定时可以避免软件定时的那些缺点。116位向上、向下、向上向下自动装载计数器(TIMx_CNT216位可编程可以实时修改预分频器TIMx_PSC,计数器时钟频率的分频系数为165535之间的任意数值。34个独立通道(TIMx_CH1~4),这些通道可以用来作为:A.输入捕获B.输出比较C.P。

2023-11-30 10:14:13 1264

原创 STM32实现温湿度数据管理系统

通过HT11温湿传感器模块,检测温度和湿度,通过串口将数据传输到电脑,通过蓝牙无线透穿传输到 手机,通过lcd1602显示出来,然后可以根据温度对舵机的角度进行控制,也可以通过串口控制舵机。ifndef/define/endif”主要目的是防止头文件的重复包含和编译。因为在第二次包含时 XX_H 已经有定义了,所以就不再 include了。这样如果有两个地方都包含这个头文件,就不会出现两次包含的情况。对于有模块忘记这么使用的可以去看我之前的文章。记得打开Use MicroLIB。lcd1602.h文件。

2023-11-30 10:13:40 1548 2

基于Linux的智能垃圾桶项目

智能垃圾桶雏形流程图

2024-04-08

嵌入式数据库-SQLite

SQLite数据库安装包

2024-03-24

基于官方外设开发=官方外设SDK压缩包

官方外设SDK压缩包

2024-03-19

Orangepi Zero2刷机与启动

ch340驱动

2024-03-19

semctl函数的参数详细介绍

semctl函数的参数详细介绍

2024-01-09

Linux进程通信之信号

sigaction函数的具体介绍

2024-01-07

进程演示.cpp

进程演示.cpp

2023-11-29

空空如也

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

TA关注的人

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