自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (11)
  • 收藏
  • 关注

原创 单片机裸机编程中实用驱动分享

本篇文章编写的目的是为了记录个人在github上看到的优秀的代码模块,同时自己也是有在日常中使用,在这里分享给读者们,感谢github上大佬优秀的代码分享,在这里表示敬仰!!!一个支持多种组合按键的驱动程序FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,支持单击、连击、短按、长按、自动消抖,可以自由设置组合按键,可用于中断和低功耗场景。该按键库解耦了具体的按键硬件结构,理论上支持轻触按键与自锁按键,并可以无限扩展按键数量。另外,FlexibleButton 使用扫描的.

2021-09-03 15:14:18 378

原创 gstreamer插件开发-What are states?

请注意,向上(NULL=>READY, READY=>PAUSED, PAUSED=>PLAYING)和向下(PLAYING=>PAUSED, PAUSED=>READY, READY=>NULL)状态变化是在两个单独的块中处理的,向下的状态变化只有在我们链接到父类的状态变化函数之后才能处理。这样做的原因是,在向下状态变化的情况下,你不想破坏分配的资源,而你的插件的链函数(例如)仍然在另一个线程中访问这些资源。你的链式函数是否在运行取决于插件的垫的状态,而这些垫的状态与元素的状态密切相关。

2023-11-29 19:42:16 1157

原创 图像对比方法介绍及实现

图像对比是在计算机视觉和图像处理中常见的任务之一。它可以用于识别重复图片、图像搜索、图像相似性比较等应用场景。实现图片对比方法的方法有多种,根据不同的需求和图片类型,可以选择适合的实现方案。如果对于简单的图片对比需求,可以选择基于像素比较或直方图比较的方法;如果对于复杂的图片对比需求,可以选择基于特征提取和匹配或深度学习模型的方法。

2023-11-08 22:12:46 3203 1

原创 gstreamer插件开发-Adding Properties

而且在属性的定义中使用非常描述性的(更好的是:国际化的)字符串,如果可能的话使用枚举和标志而不是整数。如果应用程序更改或请求属性的值,这些函数将得到通知,然后可以填充值或采取所需的操作来在内部更改该属性的值。图形化应用程序将使用这些属性,并将显示一个用户可控制的小部件,这些小部件可用于更改这些属性。您可能还希望保留一个实例变量,其中包含您在get和set函数中使用的属性的当前配置值。注意,GObject不会自动将实例变量设置为默认值,您必须在元素的_init()函数中这样做。

2023-10-26 10:13:49 160

原创 gstreamer插件开发-The query function

通过查询函数,元素将接收它必须回复的查询。这些查询包括位置、持续时间,以及元素支持的格式和调度模式。查询可以在上游和下游传递,因此您可以在汇聚节点和源节点上接收它们。对于未知查询,调用默认查询处理程序gst_pad_query_default()是一个好主意。根据查询类型,默认处理程序将转发查询或简单地unref它。下面是一个非常简单的查询函数,我们将它安装在元素的源目录上。

2023-10-26 10:10:46 114

原创 gstreamer插件开发-The event function

对于未知事件,调用默认事件处理程序gst_pad_event_default()是个好主意。根据事件类型,默认处理程序将转发事件或简单地取消它。CAPS事件在默认情况下是不转发的,因此我们需要在事件处理程序中自己执行此操作。event函数通知您数据流中发生的特殊事件(如大写、流结束、新段、标记等)。事件可以在上游和下游传播,因此您可以在汇聚节点和源节点上接收它们。下面是一个非常简单的事件函数,我们将其安装在元素的接收器上。

2023-10-26 10:10:04 75

原创 gstreamer插件开发-Building a Test Application

通常,您会希望在尽可能小的设置中测试新编写的插件。如果你的插件基于gst-plugin模板,那么这看起来就像gst-launch-1.0——gst-plugin-path=$HOME/gst-template/gst-plugin/src/。您可以使用gst_element_factory_make()创建元素,其中第一个参数是您想要创建的元素类型,第二个参数是自由格式的名称。最后的示例使用了一个简单的文件源-解码器-声卡输出管道,但如果有必要,您可以使用特定的调试元素。

2023-10-26 10:03:56 148

原创 gstreamer插件开发-The chain function

gstreamer chain函数

2023-10-26 10:01:42 104

原创 gstreamer插件开发-Specifying the pads

Specif在element _init()函数中,您从pad模板创建pad,该pad模板已经在_class_init()函数中的元素类中注册。创建pad之后,必须设置一个_chain()函数指针,它将接收和处理sinkpad上的输入数据。如前所述,pad是数据进出元素的端口,这使得它们在元素创建过程中成为非常重要的项。在样板代码中,我们已经看到了静态pad模板如何将pad模板注册到元素类中。在这里,我们将看到如何创建实际的元素,使用_event()函数来配置特定的格式,以及如何注册函数来让数据流过元素。

2023-10-26 10:00:08 93

原创 gstreamer插件开发-Constructing the Boilerplate

gstreamer插件开发中文教程

2023-10-24 21:33:49 520

原创 YUV与RGB格式详解

YUV与RGB格式详解

2022-11-07 17:30:00 3563 2

原创 I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

2022-11-07 11:57:48 621

原创 python使用opencv库对比两张图片并用红框标记出不同点

python使用opencv库对比两张图片并用红框标记出不同点

2022-08-06 11:05:09 3152 8

原创 Python 使用 Opencv 库调用摄像头

python opencv 库调用摄像头

2022-08-06 10:14:12 13698 4

原创 Gstreamer调试方式

Gstreamer调试方式

2022-06-10 16:13:50 520

原创 音视频入门知识-- --相关名词、术语、概念

音视频相关名词、术语、概念1.帧率每秒中显示帧数,表示图形处理器处理场每秒能更新的次数。高帧率就会更流畅、逼真。一般来说30fps就可以接受了。注意:如果帧率超过屏幕的刷新率,就只会浪费图像处理器的能力,因为如果屏幕不能以那么快的速度更新,那么超过屏幕刷新率的帧率就会被浪费。2.刷新率指屏幕每秒画面被刷新的次数。刷新率分垂直刷新率和水平刷新率,一般都指垂直刷新率。垂直刷新率表示屏幕上图像每秒重绘的次数,即每秒屏幕刷新的次数。刷新率越高,图像就越稳定,图像显示也就越自然清晰,对眼睛影响也越小。相反如果

2022-05-11 23:10:59 576

原创 步进电机工作原理

什么是步进电机​ 步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。步进电机的组成步进电机组成最主要的就是转子和定子部分定子,就是由电流控制磁场方向,满足安培右手螺旋定律,步进电机的电流流过定子产生磁场的过程叫做励磁。转子,被定子环绕在中间受定子磁场变化产生转动步进电机的原理

2022-05-10 23:14:01 20207 1

原创 Cortex M0软件复位方法

Cortex M0软件复位方法uint32_t *AIRCR = (uint32_t *)0xE000ED0C;*AIRCR = (0x000005FA<<16)|(1<<2);

2021-09-03 14:54:26 1297

原创 C语言内存分配相关知识

一,内存分配1,内存分配的类型:在C/C++中内存分为5个区,分别为栈区、堆区、全局/静态存储区、常量存储区、代码区。静态内存分配:编译时分配。包括:全局、静态全局、静态局部三种变量。动态内存分配:运行时分配。包括:栈(stack): 局部变量。堆(heap): c语言中用到的变量被动态的分配在内存中。(malloc或calloc、realloc、free函数)2.变量的内存分配:栈区(stack):指那些由编译器在需要的时候分配,不需要时自动清除的变量所在的储存区,如函数执行时,函数的形参以及

2021-09-03 14:52:29 503

原创 操作系统知识杂记

一、进程和线程的区别?什么时候用进程?什么时候用线程?进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。线程是进程的一个实体。进程——资源分配的最小单位,线程——程序执行的最小单位。线程进程的区别体现在几个方面:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数

2021-09-03 14:51:05 103

原创 IIC通讯协议与EEPROM简介

IIC简介​IIC总线(Inter-Integrated Circuit)即集成电路总线,是Philips公司设计出来的一种简单、双向、二线制、同步串行总线。I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。IIC总线是一个多向控制总线,多个器件(从机)可以同时挂载到一个主机控制的一条总线上。每个连接在总线上的设备都是通过唯一的地址和其他器件通信,主机和从机的角色可互换,​

2021-09-02 09:31:36 2675

原创 C语言——按照指定分割符分割字符串

函数作用 : 分割字符串/*********************************************************************** Function: split_str* Description: Splits the target string by the specified character * Input: psrc: Pointer to the data to be processed psrc_len: The length

2021-03-04 20:08:24 3108 3

原创 环形数据缓冲区的实现 --C语言版本

本篇文章主要给出实现一个环形数据缓冲区的源码!

2021-01-23 18:00:24 866 4

原创 云服务器搭建MQTT消息代理EMQX

阿里云服务器免费获取2月方法免费获取阿里云服务器免费获取2月需要你是学生身份并且注册账号进行学生验证即可申请领取。领取你需要通过一次考试和体验,按提示做就行。领取地址点击此处进入如下界面通过体验和测试之后即可点击领取,按照自己的需求选取操作系统,我选的是Ubuntu18.04,点击购买结算即可。支付成功后点击前往控制台点击概述就能看到自己的购买的实例点击实例,然后重置实例密码重置完重启实例即可重启后进行安全组配置,配置规则可以手动添加以及快速添加。你需要用到那些端口就配置就行,

2020-12-24 21:23:55 1386 11

原创 Zigbee常见错误问题汇总

Flash Programer 给CC2530下载Hex文件 error解决办法 汇总错误提示:HEX file content at address 0x4A390 exceeds chip’s 256 kB flash size解决办法找到 f8w2530.xcl文件并打开,找到以下两行被注释的代码取消注释:// Include these two lines when generating a .hex file for banked code model:(生成Hex文件需要包含两行)

2020-12-24 21:14:30 1543

原创 Source Insight 4.0 安装过程及简单使用

Source Insight 4.0 安装简单使用及常见问题解决第一步:安装 安装sourceinsight4.0

2020-12-16 10:18:53 16985

原创 C++面试知识点

C++多态及其实现原理C ++内存管理

2020-11-30 19:44:47 102

转载 C++ 面向对象的三大特性和五个原则

面向对象的三大特性:封装、继承、多态封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。继承指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类

2020-11-30 19:37:38 214

原创 C/C++之extern“C“

extern"C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标的是“C”的。让我们来详细解读这两重含义。被extern"C"限定的函数或变量是extern类型的:extern 是 C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:extern int a;仅仅是一个变量的声明,其并不是在定义变量 a,并未为 a 分配内存空间。变量 a 在所有模块中作

2020-10-23 15:59:38 188

原创 C/C++ new/malloc 指针与引用的区别

1 、new和malloc的区别new、delete是C++中独有的操作符,而malloc和free是C/C++的标准库函数使用new创建对象在分配内存的时候会自动调用构造函数,同时也可以完成对对象的初始化,同理要记得delete也能自动调用析构函数。因为malloc和free是库函数而不是运算符,不在编译器控制范围之内,所以不能够自动调用构造函数和析构函数,也就是malloc只是单纯地为变量分配内存,free也只是释放变量的内存。new返回的是指定类型的指针,并且可以自动计算所申请内存的大小,而m

2020-10-23 11:19:54 346

转载 进程间的五种通信方法

原文链接https://www.cnblogs.com/zgq0/p/8780893.html进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:它是半双工的(即数据只能在一个方向上流动

2020-10-22 16:13:49 1005

原创 嵌入式面试题之单片机知识

单片机IO口开漏输出和推挽输出有什么区别?推挽输出:既可以输出低电平,也可以输出高电平,可以直接驱动功耗不大的数字器件。导通损耗小、效率高、既提高电路的负载能力,又提高开关速度。开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)单片机里定时器有什么作用和优势?1.可以用做精确延时处理,比较延时1ms时间2.可以当做计数器,比如将这个功能IO口接到一个时钟源,可以统计有多少个脉冲信号3.输入捕获(解码和测量时间间

2020-10-22 09:38:09 5440 1

原创 2020最新天猫双十一自动获取喵币

应用程序下载地址Github下载地址apk下载地址密码:7l5t感谢作者的开源,给作者点波赞

2020-10-21 10:56:35 867 2

原创 C语言面试代码题

用一个宏函数实现交换两个数#define SWAP(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y);用一个宏函数实现输出两个数的最大值#define MAX(x,y) ((x)>(y)?(x):(y))用一个宏函数实现输出两个数的最小值#define MIN(x,y) ((x)>(y)?(y):(x))用一个宏函数实现求数组元素个数#define NTBL(array) (sizeof(array)/sizeof(array[0]))宏

2020-09-27 10:21:14 362

原创 链表反转

输入一个链表,反转链表后,输出新链表的表头。#include <iostream>#include <cstdlib> using namespace std; struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution{public: ListNode *ReverseList(ListNode*

2020-09-26 20:57:50 114

原创 快速编写简单Makefile

Makefile文件语法规则目标:依赖文件集合  命令1  命令2命令列表中的每条命令必须以TAB键开始,不能使用空格第一条规则的目标成为默认目标 例如mainmain: main.o input.o calcu.o gcc -o main main.o input.o calcu.omain.o:main.c gcc -c main.cinput.o:input.c gcc -c input.ccalcu.o:calcu.c gcc -c calcu.cclean: rm

2020-09-26 20:54:41 670

原创 Ubuntu18.04的网络配置(静态IP和动态IP)

网络配置首先打开虚拟网络编辑器进行配置,会加载几秒钟点击更改设置选择添加网络,添加一个Vment0,并设置为桥接模式,桥接到 处设置为自动即可,如下图所示将网络适配器设置为桥接状态网卡与DNS配置打开命令窗口(右键单机桌面选择Open Terminal或者Ctrl+Alt+T),输入ip a查看自己的网卡编号(这里网卡编号每个人的可能不一样)说明Ubuntu从17.10开始,已放弃在/etc/network/interfaces里配置IP地址,即使配置也不会生效,而是改成net

2020-09-05 09:56:21 987

原创 温湿度传感器(AM2312)

AM2321介绍AM2321湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。

2020-08-23 19:47:29 3472 4

原创 设计简单的命令行 myshell

使用方法在Ubuntu下创建一个myshell.c文件 touch myshell.c复制代码到myshell.c文件中编译c文件 gcc -o myshell myshell.c执行文件 ./myshell输入shell支持的有效命令quit或exit退出shell支持功能1.支持任意命令的I/O重定向2.支持任意命令间的管道符操作3.支持在/bin和/usr/bin里的所有可执行命令比如:常见的目录和文件操作,比如新建(/删除/复制/显示)目录或文件实现代码#incl

2020-08-17 16:33:53 2586

原创 Python --正则表达式

使用正则表达式正则表达式相关知识在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉)。如果你在Windows操作系统中使用过文件查找并且在指定文件名时使用过通配符(*和?),那么正则表达式也是与之类似的用来进行文本匹配的工具,只不过比起通配符正则表达式更强大,它能更精确地描述你的需求(当然

2020-08-17 16:32:52 86

toolkit-master.zip

ToolKit是一套应用于嵌入式系统的通用工具包,可灵活应用到有无RTOS的程序中,采用C语言面向对象的思路实现各个功能,尽可能最大化的复用代码,目前为止工具包包含:循环队列、软件定时器、事件集。

2021-09-02

FlexibleButton-master.zip

FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,支持单击、连击、短按、长按、自动消抖,可以自由设置组合按键,可用于中断和低功耗场景。

2021-09-02

Dialog SUOTA软件

最新安卓apk,将apk文件发送到手机安装即可

2021-01-07

python飞机大战.zip

详细请看https://blog.csdn.net/qq_41290252/article/details/106985176

2020-11-04

NXP ZigBee 3.0协议栈用户手册(全中文)API大全

NXP ZigBee 3.0协议栈用户手册(全中文),详细讲述了ZigBee3.0协议栈 ZigBee的3.0堆栈 Zigbee Home Automation (Zigbee HA), Zigbee Light Link(Zigbee LL), Zigbee Building Automation(Zigbee BA), Zigbee Retail Services(Zigbee RS), Zigbee Health Care(Zigbee HC), Zigbee Telecommunication services(Zigbee TS)。

2020-09-27

淘宝618自动获取喵币

1、打开Auto.js(该软件的相关用法就不细说了,无障碍,悬浮窗权限这些),右下角导入脚本 2、打开淘宝,进入活动页面,点开任务列表界面 3、点击Auto.js悬浮窗,点击脚本列表按钮 4、点击运行按钮

2020-06-02

51单片机实现电子闹钟(1602+DS18B20+EEPROM+蜂鸣器+时钟模块)

51电子闹钟实现了:界面LCD1602显示器,显示年、月、日、星期、时、分、秒、温度,具有闹钟设定,铃声变换设定,时间设定,事件设定,掉电不丢失,12/24进制切换功能。 资源含有实验报告及源码(含注释及使用方法)

2020-05-06

java实现学生成绩管理系统(含数据库以及实验报告)

学生成绩管理系统主要实现了 1、 登录验证账号信息 2、 学生注册、教师注册 3、 添加学生成绩信息 4、 修改学生成绩信息 5、 查询学生成绩信息 6、 删除学生成绩信息 7、 文件导入学生成绩信息 8、 学生账号管理 9、 密码修改 资料里含有源码以及实验报告下载导入即可用!

2020-05-06

Python-100-Days.zip

这个文件包含视频教学、视频实验代码,快速学习Python的不二之选,资料齐全,分入门篇、进阶篇、项目篇。

2019-12-13

51实例代码大全.zip

里面包含几百个51的例子,如典型的抢答器、万年历、交通灯、智能温控器、最小系统、 直流电机PI控制和基础的各种实验。

2019-12-13

51单片机230个Proteus仿真实例.zip

学习51单片机的参考程序,几乎涵盖所有的小实验,小项目,甚至是毕业设计都有。各中51上的模块驱动以及芯片的使用

2019-12-13

空空如也

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

TA关注的人

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