自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (14)
  • 收藏
  • 关注

原创 UART通过DMA接收和发送,使用环形缓冲区,状态机的使用

为了实现UART通过DMA接收和发送不定长度的数据,可以使用环形缓冲区(环形缓冲区)和插入相关的状态机来解析接收到的数据。

2024-10-26 10:08:16 1983

原创 怎样用正则表达式匹配IPV4地址

这里有两个版本,一个是简单的,另一个是准确的。恩,写得不错,都上升到方法学的角度上来了,不过我很赞同,解决问题永远是第一位的,死钻技术牛角尖并不可取,这是面对问题时我们应采取的态度。:number.){3}number的形式,IP地址的前三个数字重复三次,且为非获取性匹配,最后一部分匹配IP地址的最后一个数字。嘿,谁能帮我写一下?上面最后的两个正则表达式做的就是这样的工作,其不是重复三次,而是完全展开,这也是唯一的办法。好了,我们完成了点分十进制的简单描述,同时写了一个基本不可读的怪异的正则表达式。

2024-10-18 09:06:34 1061

原创 嵌入式 GmSSL的SM2,SM3具体使用及对接JAVA的BC库

用嵌入式下的GmSSL库用公钥生成的SM2的密文发送给Java服务端。GmSSL移植到嵌入式可以参考我上一篇博文。

2024-10-17 17:32:57 1910

原创 STM32嵌入式移植GmSSL库

最近在做一个换电柜的项目,需要和云端平台对接json协议,由于服务端规定了,需要采用sm2 sm3 sm4用来加密。在嵌入式方面只能用北京大学的GmSSL了。

2024-10-17 16:49:31 1125

原创 OpenGL 词汇英文缩写

OpenGL: 一个定义了函数布局和输出的图形API的正式规范。GLAD: 一个扩展加载库,用来为我们加载并设定所有- OpenGL函数指针,从而让我们能够使用所有(现代)OpenGL函数。视口(Viewport): 我们需要渲染的窗口。图形管线(Graphics Pipeline): 一个顶点在呈现为像素之前经过的全部过程。着色器(Shader): 一个运行在显卡上的小型程序。很多阶段的图形管道都可以使用自定义的着色器来代替原有的功能。标准化设备坐标(Normalized Device Coo

2024-09-21 23:12:37 474

原创 OpenGL 原生库7 摄像机

OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。

2024-09-21 23:06:05 565

原创 OpenGL 原生库6 坐标系统

为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。

2024-09-21 23:01:32 743

原创 OpenGL 原生库5 变换

尽管我们现在已经知道了如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体。当然,这并不是说我们会去讨论武术和数字虚拟世界矩阵是一种非常有用的数学工具,尽管听起来可能有些吓人,不过一旦你理解了它们后,它们会变得非常有用。

2024-09-21 22:52:46 932

原创 OpenGL 原生库4 纹理

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:33:00 587

原创 OpenGL 原生库3 着色器

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:26:59 495

原创 OpenGL 原生库2 三角形

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:20:52 513

原创 OpenGL 原生库1 窗口

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 21:32:27 752

原创 双立方(三次)卷积插值

图像处理中有三种常用的插值算法:最邻近插值双线性插值双立方(三次卷积)插值其中效果最好的是双立方(三次卷积)插值,本文介绍它的原理以及使用如果想先看效果和源码,可以拉到最底部本文的契机是某次基于canvas做图像处理时,发现canvas自带的缩放功能不尽人意,于是重温了下几种图像插值算法,并整理出来。

2024-09-19 20:52:17 2741 1

原创 OpenGL 着色器类的源码

编写、编译、管理着色器是件麻烦事。在着色器主题的最后,我们会写一个类来让我们的生活轻松一点,它可以从硬盘读取着色器,然后编译并链接它们,并对它们进行错误检测,这就变得很好用了。这也会让你了解该如何封装目前所学的知识到一个抽象对象中。我们会把着色器类全部放在在头文件里,主要是为了学习用途,当然也方便移植。

2024-09-18 09:53:41 584

原创 着色器 简介

Shaders: 暂未校对在 Hello Triangle 教程中提到,着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。前面的教程里我们简要地触及了一点着色器的皮毛,并了解了如何恰当地使用它们。现在我们会用一种更加广泛的形式详细解释着色器,特别是 OpenGL 着色器语言(GLSL)。

2024-09-18 08:56:14 2558

原创 创建两个着色器程序

在这篇博客中,我们将创建两个着色器程序,其中一个将输出橙色,另一个将输出黄色。然后,我们将绘制两个三角形,分别使用这两个不同的着色器程序。创建两个着色器程序,第二个程序使用一个不同的片段着色器,输出黄色;再次绘制这两个三角形,让其中一个输出为黄色。以下是实现代码,包括必要的注释,以帮助你理解每一步。

2024-09-18 08:39:01 559

原创 创建相同的两个三角形,但对它们的数据使用不同的VAO和VBO

在这篇博客中,我们将学习如何使用 OpenGL 绘制两个相连的三角形。我们将创建顶点数据,设置 不同的VAO 和 VBO,并使用 glDrawArrays 渲染两个三角形。以下是实现代码,包括必要的注释,以帮助你理解每一步。

2024-09-18 08:35:52 419

原创 使用glDrawArrays,尝试绘制两个彼此相连的三角形

【代码】使用glDrawArrays,尝试绘制两个彼此相连的三角形。

2024-09-18 08:32:36 309

原创 AT32F415的OTA升级

在物联网应用开发过程中,不可避免的会需要用到软件升级,一般情况下,以AT32系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用J-Link重新烧录代码,这就增加了很多不必要的麻烦。站在公司的角度来说,就是能远程来更换设备里边的代码程序。IAP却能很好的解决掉这个难题。

2024-09-08 10:10:31 1626

原创 在长字符串中提取IP地址

(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})将匹配任何四个数字序列,并用点号分隔它们。然后,它使用regex_search循环遍历输入字符串,并使用变量matches来存储关于匹配项的信息。对于每个匹配项,它将IP地址提取为match字符串,并调用is_valid_ip_address函数来验证它是否有效。最后,is_valid_ip_address函数使用另一个正则表达式来验证IP地址的格式。如果它与模式匹配,将返回true,否则将返回false。

2023-09-04 13:12:42 785

原创 linux进程间的7种通信方式全解析及代码示例

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。

2023-09-04 11:47:29 4057

原创 arm开发板 GDB远程调试方法

1.在linux下开发,免不了使用gdb调试,但是linux下开发嵌入式,都是跑在ARM板子上的,网上有很多GDB的基础教程,但是能在ARM开发板用的时候,会有各种问题。比如:*.cpp: No such file or directory.这是因为用gcc编译的时候,代码还是在本地,并没有在arm平台上来。所以说还是有必要出一个arm端使用gdb教程。

2023-08-18 15:09:33 2211 2

原创 arm海思启动udev的错误

这样就能写出很多可能非常有用的实用程序,而它已经很好了,普通用户就可以写出脚本去做一些事情,比如当某个硬盘驱动器插入时,执行某个任务。当你理解了 udev 的工作原理,你就可以用它去做各种事情,比如当一个游戏手柄连接后加载一个指定的驱动程序,或者当你用于备份的驱动器连接后,自动执行备份工作。该错误通常出现在系统启动时,当 udev 守护程序启动时,如果系统没有足够的随机数种子,就会出现该错误。随机数种子用于创建随机数,在 Linux 中,随机数种子是通过读取 /dev/urandom 设备文件来获取的。

2023-07-04 16:00:49 3261

原创 linux从alsa驱动框架中读取pcm数据源代码

二是plughw:0,0;(设备自适应接口,编程者不必关心硬件,如果软件层设置的参数与硬件支持参数不一致则ALSA会自动转换数据区匹配;0:0表示设备号和次设备号subdevice)(对于硬件参数软件必须设置一致)不知道设备号的可以用arecord -l命令获取。具体的步骤,我在下面的代码的注释写的很清楚了.三是default:0;ALSA编程细节分析。四是default。

2023-06-25 15:34:50 944

原创 64位hi3531d编译QT5.15.10源码

###1.修改qt库的qmake.conf配置文件,在qt源码解压后的qtbase/mkspesc文件夹下,我的是linux-aarch64-gnu-g++,如果是32位的arm开发板,一般是linux-arm-gnueabi-g++。1.工具链一般随开发板提供,我的交叉编译工具链是aarch64-himix200-linux.tar.gz。将编译好的demo和Qt_arm5.15.10/lib上传到开发板,运行。###1.安装交叉编译工具链。路径下能看编译好的qt库了。###4.QT库交叉编译。

2023-06-14 16:19:38 1762

原创 海思编译安装ntp服务端

由于工作需求,需要在海思arm平台搭建ntp服务器,在ntp的移植过程中遇到了一些坑,网络上的一些教程都有各种各样的坑,我把自己的操作记录下来。操作系统: Ubuntu 22.04 LTS开发板 : hisi3531a。

2023-04-25 16:42:57 1399 1

原创 win10下 wsl安装

控制面板,开启windows功能 1.hyper-V 2.适用于linux的windows子系统 3.虚拟机平机。或wsl --list --online 查询可用的发行版 wsl --install 安装。如果报错 0x80370102。

2023-01-28 13:11:21 1400

原创 操作系统 进程,线程,协程的区别。

进程,线程,协程的区别

2023-01-13 11:18:54 739

原创 GDB教程

gdb 使用详细教程gcc gdb-sample.c -o gdb-sample -g在上面的命令行中,使用 -o 参数指定了编译生成的可执行文件名为 gdb-sample,使用参数 -g 表示将源代码信息编译到可执行文件中。如果不使用参数 -g,会给后面的GDB调试造成不便。当然,

2023-01-13 08:51:38 621 1

原创 C++的四种类型转换: static_cast const_cast reinterpret_cast dynamic_cast

本人之前一直使用C语言的类型强制转换,最近写C++代码比较多。在github上看到其他人的代码并没有使用C语言的类型转换,了解到C语言的类型转换在C++中是不安全的。所以整理了一下C++的四种类型转换关键字的用法。...

2022-08-28 18:26:37 207

原创 vmware 虚拟机ubuntu 根分区磁盘扩容

前两天在vmware上创建了一台UBUNTU虚拟机,编译ANDROID源码时,发现40G的磁盘空间不够,在然后在虚拟机点击磁盘扩容。但是在ubuntu系统用fdisk -l并查看磁盘信息发现还有40G的空间没有挂载使用,于是想着把这40G的磁盘空间给扩容到根分区使用。 fdisk -l 查看分区信息,我们此次的目的是要将硬盘的60G空间全部分配给/dev/sda1,然后将其挂载到根目录。思路:删除原有分区 -> 创建新分区 -> 挂载一、删除原有分区用fdisk修改分区,fdisk /dev/sda

2022-06-16 11:08:46 1568

转载 C++ 原子操作(atomic)

1、atomic概述所谓原子操作,就是多线程程序中“最小的且不可并行化的”操作。对于在多个线程间共享的一个资源而言,这意味着同一时刻,多个线程中有且仅有一个线程在对这个资源进行操作,即互斥访问。C++ 11 新增atomic可以实现原子操作2、非原子操作#include <thread>#include <atomic>#include <iostream>using namespace std;int i = 0;const int maxCnt

2022-05-26 08:46:10 8594

转载 采用FFmpeg和nginx推RTMP视频流

一、FFmpeg推RTMP流准备工作首先确保自已已经安装了nginx + rtmp服务器。打开配置文件nginx.conf完成如下配置nginx配置.1二、FFmpeg推流1.推流MP4文件视频文件地址:/Users/xu/Desktop/bangbangbang.mp4 推流拉流地址:rtmp://localhost:1935/rtmplive/ho...

2019-06-12 09:35:38 813

原创 ibeacon UWB GPS 空间四点定位算法

最近在研究uwb空间四点的精准定位,其实是基于RSSI原理的,蓝牙IBEACON,GPS也差不多基于这个原理三维空间的四点定位算法:已知四个基站点的坐标(x1,y1,z1)(x2,y2,z2)(x3,y3,z3)(x4,y4,z4)和到未知点(x,y,z)的距离R1,R2,R3,R4所以四点定位使用矩阵求解方程的方式:其中要求的点的坐标是(x,y,z),已知的四个探针的位置为(...

2019-06-11 13:20:37 12480 5

原创 C++ 裁剪图片 分割图片 截图

我采用的是OPENCV的库#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;Mat img;Mat out;img = ...

2019-06-10 23:27:42 5371 2

转载 linux模拟键盘

#include   #include   #include   #include   #include   #include   #include     /* struct input_event {     struct timeval time;     __u16 type;     __u16 code;     __s32 valu

2017-02-28 09:40:40 852

原创 游戏光枪坐标定位原理及算法

我是做游乐行业的,要研发一款射击游戏机。现在要研发一款光枪,网上能找到的光枪大部分资料都是第一代的游戏机上面用的,用的还是有家里的老式电视机,加上霸王学习机,玩的射击游戏。我们研究是新的光枪好嘛。新型光枪是主要是有两种,一种是WII光枪,原理是红外感应条,加6自由度加速度的传感器。这种是相对位置,每次都要校准,体验感比较差。另一种是摄像头加红外光点来定位。就是摄

2016-06-14 10:46:34 4764 7

原创 树莓派人体感应报警器

买了一个香橙派。琢磨着做了一个人体感应报警器。需要的东西很简单,一个音乐播放芯片,一个继电器,一个漫步者的喇叭,一个人体红外感应器,五伏电源,一个香橙派,还有一个10K欧的电阻总共加起来。150块钱左右。这只是一个简易的报警器。我现在还不会linux上面音乐播放器编程,如果懂得编程的话,可以省掉音乐播放芯片和继电器后面还可以拓展给手机发短信的功能

2016-06-12 21:55:53 4990 2

原创 mplayer 音乐播放器封装类

最近要弄一款音乐播放器。虽然在网上能够找到类似的代码。但是不怎么方便调用。所以我自己写了两个文件,方便其他时候调用,是采用mplayer的命令行方式播放的。因为我要的功能不多,所以只写了几个函数,架构搭好了,需要的朋友可以添加XHMusicPlay.cpp文件////  XHMusicPlay.h//  ////  Created by gifter on

2016-06-12 21:05:14 2061

原创 命令行音乐播放器代码

最近想在linux平台下写一款音乐播放器,找了一下,没有其他的解决办法,于是想调用mmplayer的代码来达到播放音乐的目的,然后开始写了之后,发现需要用的技术还挺多的。包括,多线程编程,多进程编程,进程间通讯,线程间通讯,条件变量,互斥量,线程锁,有名管道以及无名管道,权当复习一下linux系统调用编程,下面我把代码复制到下面,大家参考一下,相关的资料在网上都能找得到。#in

2016-06-12 20:54:26 1133

MFC CListView类应用 示例

MFC CListView类应用 示例源代码

2022-06-15

CAsyncSocket--UDP.rar

使用CAsyncSocket进行无连接(UDP)通信-UDP SOCKET.

2011-12-05

Windows API函数速查

1。将压缩文件解压到一个目录 2。启动pa.exe,启动后程序会自动创建Pa.db默认数据文件,并加载winapi.db文件 3。启动后会在系统托盘中出现pa的图标 4。默认直接按快捷键Ctrl+F1,此时会弹出查询输入框 5。输入待查询的API函数名,如AbortDoc,按回车后就可出现结果

2011-12-08

Multi Projector Monitoring & Control Software.zip

松下投影机网络控制软件 远程开关机

2021-01-19

MFC_Ffmpeg_sdl2_Player.rar

基于MFC FFMPEG SDL实现的视频播放器源代码,不错的学习资料

2014-09-28

WIFI无线路由器密码破解

让你可以破解WINDOWS的无线网络密匙(WEP/WPA)。该软件采用十六进制和 Ascii (如果提供)码显示带有适配器名称和用户图形界面的密匙。该信息可以被拷贝到剪贴板或者导出为 Text/HTML/XML 文件格式。该软件不需要进行安装 经使用可以正常使用.我的路由是D LINK的,测试可以使用。

2011-12-07

星空极速密码C语言2.0

较1.0软件修改只能破解8.0的BUG,现在能破解6位及10位密码了 修复破解时出现的乱码的BUG。

2012-08-17

Alcor(安国)AU6983量产工具

Alcor(安国)AU6983量产工具。。。

2010-09-08

turbo c语言学习工具

一个不错的c语言学习工具, 特别是代码编辑器!方便了程序的编写!

2009-05-06

数据结构 试题及答案

上传一份我们学校考过的数据结构的试题包括答案,希望对考前复习的朋友 有所帮助!

2010-01-13

电子技术 模拟部分复习PPT

关于高教版本模电复习课件 主要用于复习及模电内容的总结 。。。。。。

2010-01-04

java 入门要注意的问题

本笔记收集了本人java 入门要注意的问题,同时还有解决方法。。和注意的习惯。。

2011-04-05

空空如也

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

TA关注的人

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