自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (12)
  • 收藏
  • 关注

原创 BACnet对象

BACnet

2022-11-09 13:49:19 576 1

原创 BACnet服务

BACnet

2022-11-09 13:43:43 543

原创 iptables 指令

[0]. 查看filter表指定链上的过滤规则, NULL为空会打印显示三条链上的过滤规则;iptables -t filter -L [INPUT/OUTPUT/FORWARD/NULL] [1]. 在filter表指定链上添加过滤规则;iptables -t filter -A [INPUT/OUTPUT/FORWARD] -p tcp -j ACCEPT[2]. 清空filter表指定链上的过滤规则, NULL为空则会清空该表上所有链上的过滤规则;iptables -t filter -

2021-05-02 17:05:14 192

原创 iperf3使用说明

iperf3使用服务端命令行-s 表示服务器-p 定义端口号 默认是5201-i 设置每次报告之间的时间间隔 单位是秒 默认是1秒-F 指定文件作为数据流进行带宽测试客户端命令行-c 表示服务器的IP地址-p 表示服务器的端口号-t 表示传输测试的持续时间 默认是10秒-i 设置每次报告之间的时间间隔 单位是秒 默认是1秒-w 设置套接字缓冲区为指定大小, TCP->设置为TCP窗口大小, UDP->此设置为UDP数据包的缓冲区大小, 限制可以接收数据包的最大值--lo

2021-04-28 16:49:38 1615

原创 Linux input固定设备/dev/input/eventX设备号

问题: 在嵌入式ARM Linux开发板调试触控的时候, 会经常碰见不同接口类型的触控板,有I2C的,USB等, 不同厂家不同型号的触控驱动在内核启动时加载顺序不同,也就导致了在/dev/input目录下生成的eventX的序号就不同, 而应用层一般会固件打开某个event设备节点,更换触控面板,可能会导致应用程序打开错误的event设备节点,因此想在内核里面做一下适配,是某些固定的触控设备最终在文件系统中生成固定的设备号文件节点。解决: 1. 查看系统总线上所有的input设备 # cat /pr

2021-04-26 14:52:43 3885 1

原创 AVL树C语言实现

参考: https://www.cnblogs.com/skywang12345/p/3576969.htmlAVLTree.h#ifndef _AVL_TREE_H_#define _AVL_TREE_H_typedef int Type;struct AVLTreeNode { Type key; int height; struct AVLTreeNode *left; struct AVLTreeNode *right;};// 获取AVL树的高度

2021-03-17 19:42:29 564

原创 C++ condition_variable 使用例程

#include <iostream>#include <thread>#include <mutex>#include <condition_variable>#include <chrono>std::mutex mtx;std::condition_variable cv;bool ready = false;bool use_cv = false;void do_print_id(int id){ bool.

2021-01-22 14:31:45 200

原创 二叉树的构建(C语言实现)

二叉树的构建前序序列+中序序列struct BTNode* CreateBT(int* pre, int* in, int n) { struct BTNode* s = NULL; int k = 0, *p = NULL; if (n<=0) { return NULL; } s = (struct BTNode *)malloc(sizeof(struct BTNode)); s->data = *pre; for

2020-11-25 14:48:41 354

原创 二叉树的遍历(C语言实现)

二叉树的遍历(C语言实现)二叉树的结构体定义typedef struct _BTNode { int val; struct _BTNode *lchild; struct _BTNode *rchild;}BTNode;前序遍历[0] 递归实现void PreOrder(BTNode *root) { if (!root) { return; } printf("%d ", root->val); PreOrder

2020-11-21 16:21:54 317

原创 Linux内核自旋锁(spinlock)使用与源码分析

一. spinlock_t结构体定义typedef struct spinlock { union { struct raw_spinlock rlock;#ifdef CONFIG_DEBUG_LOCK_ALLOC# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map)) struct { u8 __padding[LOCK_PADSIZE]; struct lockdep_map dep_map; }

2020-07-17 18:52:13 1581

原创 Linux内核信号量(semaphore)使用与源码分析

一. 在Linux内核驱动中使用信号量(semaphore)常规操作步骤:[0]. 定义信号量结构体变量;struct semaphore sem;[1]. 初始化信号量变量void sema_init(struct semaphore *sem, int n);eg. sema_init(&sem, 1);[2]. 获取信号量:void down(struct semaphore *sem); // 获取信号量, 资源不足则睡眠等待...

2020-07-17 11:48:46 1377

原创 Linux内核原子(atomic)操作源码分析(基于ARM)

原子数据类型:typedef struct { int counter;}atomic_t;基本的原子操作函数接口:接口函数 描述 static inline void atomic_add(int i, atomic_t *v) 给一个原子变量v增加i static inline int atomic_add_return(int i, atomic_t *v) 同上,只不过将变量v的最新值返回 static inline void atomic_su..

2020-07-14 22:21:59 872

原创 Linux内核等待队列(wait_queue)使用与源码分析

在Linux内核驱动中使用等待队列(wait_queue)常规操作步骤:[0]. 定义wait_queue_head_t等待队列头变量;wait_queue_heat_t simple_queue;[1]. 使用init_waitqueue_head(&simple_queue)初始化等待队列头;init_waitqueue_head(&simple_queue);[2]. 等待操作: wait_event(simple_queue, simple_f..

2020-07-14 17:20:13 827

转载 ARM平台下独占访问指令LDREX和STREX的原理与使用详解(转载)

为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁。为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持。本文主要用来说明ARM平台上特有的独占访问指令LDREX和STREX的工作原理,以及如何使用。而它们也是ARM平台上,实现互斥锁等线程同步工具的基础。我们先来看看LDREX和STREX两条指令的语义。其实LDREX和STREX指令,是将单纯的更新内存的原子操作分成了两个独立的步骤。1)LDREX用来读取内存中的值,并标记对该段内存的独占访问

2020-05-25 15:29:52 1096

原创 valgrind PC和ARM(aarch64)的自定义安装

[PC端自定义目录安装]:[0]. 从valgrind官网下载源代码文件, 目前使用的是valgrind-3.15.0.tar.bz2[1]. 解压源代码压缩包:tar -zxvf valgrind-3.15.0.tar.bz2[2]. 进入解压的文件夹: cd valgrind-3.15.0[3]. 使用configure进行配置:--prefix用于设置自定义的安装路径,用户可以自定义设置 ./configure --prefix=/opt/valgrind/[...

2020-05-19 10:25:02 1034

转载 C++笔记-----C++中三种传递参数方法的效率分析(转载)

在C++中有三种参数传递的方式:[0].按值传递(pass by value)[1].按址传递(pass by pointer)[2].引用传递(pass by reference)本文主要讨论采用这三种方法传递参数时函数的效率。传递效率这里所说传递效率,是说调用被调函数的代码将实参传递到被调函数体内的过程,正如上面代码中,这个过程就是函数main()中的 a、b 传递到函数swap()中的过程。这个效率不能一概而论。对于内建的 int char、short、long、floa...

2020-05-15 09:51:42 288

转载 git删除中间某次提交

git log获取commit信息commit 58211e7a5da5e74171e90d8b90b2f00881a48d3aAuthor: test <[email protected]>Date: Fri Sep 22 20:55:38 2017 +0800 add d.txtcommit 0fb295fe0e0276f0c81df61c4fd853b7a00...

2020-05-06 10:04:18 784

原创 MIPI-DSI 协议层简析

物理层: 指令和数据串行化和并行转换, 总线控制权切换(Turn Around /TA);通道管理层: N组数据通道的排序与组合以及反序列化;协议层: 数据包格式(长数据包 短数据包) ECC/CRC;应用层: 对发送的命令和数据编码成MIPI-DSI格式与还原;...

2020-04-17 17:31:48 503

转载 LCD液晶屏最常见的几种接口方式

转载自:http://www.mqlcd.com/315.htmlLCD液晶屏的接口方式有:MCU,RGB,MIPI,LVDS,TTL,EDP等等,这几种接口最为常见MCU液晶屏接口一般在小尺寸上比较多,如:2.0寸,2.31寸,2.4寸,2.8寸等等,MCU模式需要的信号有WR,RD,RS,RESET,CS。MCU接口主要应用于单片机控制RGB液晶屏接口方式于MCU接口类似,一般应...

2020-04-07 15:56:36 5407

原创 git合并多个远程commit并提交

文章参考:https://blog.csdn.net/qq_21744873/article/details/82629343git rebase -i [commit_id]commit_id 是 连续合并的多个分支的前一个commit的commit_id;git status 后会看到,提示让你git pull一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条co...

2020-04-02 11:07:19 3156

原创 一种环形队列的C语言实现---RingBuffer

// RingBuffer.h#ifndef __RINGBUFFER_H__#define __RINGBUFFER_H__// 如果要使用在C++中 则使用该宏定义片段// #ifdef __cplusplus// extern "C"// {// #endif#include <unistd.h>#include <pthread.h>typ...

2020-03-27 23:54:44 645

转载 Linux为何操作网卡设备和其他设备不同的原因

文章转载自:https://blog.csdn.net/iteye_5014/article/details/81824895###这个问题其实没有什么意思,知道了问题的答案能表明一个人技术水平有多高吗?不能!这个问题有答案以及有意义吗?答案都是没有!那我还为何一直对这个问题死死揪住不放?这类问题可以提高一个人的素质以及了解一段关于网络和unix的历史,正是因为这些都很有趣,才如此值得关注。...

2020-03-19 10:42:30 211

原创 g++/gcc -I(大写的i) -l -L 解释

-I(大写的i) -I ./include/path 用于设置首选头文件目录路径, 中间有空格;-l -lm ltest 用于指定程序需要链接的库名称, 中间无空格;-L ./lib/path/ 用于设置首选库文件目录路径, 中间有空格;...

2020-02-19 12:36:12 425

原创 证明交换一个行列式的某两行(列), 行列式改变符号.

求证:行列式的行与列交换,行列式不变 (即行列式等于其转置行列式) 证明如下:设给定行列式为:D=∣a11a12...a1n......ai1ai2...ain......aj1aj2...ajn......an1an2...ann∣ 交换ij两行以后得:D′=∣a11a12...a1n......aj1aj2...ajn......ai1ai2...ain........

2019-12-28 18:02:49 5938 1

原创 证明一个排列中的任意两个元素对换,该排列的奇偶性发生改变

求证: 一个排列中的任意两个元素对换, 排列改变奇偶性。 证明: 设有排列 a1a2a3...al−1alal+1...am−1amam+1...ana_1a_2a_3...a_{l-1}a_la_{l+1}...a_{m-1}a_ma_{m+1 ...}a_na1​a2​a3​...al−1​al​al+1​...am−1​am​am+1...​an​    &...

2019-12-28 01:25:45 5732

转载 最佳实践 —— 详细谈谈如何减小APK体积

随着Android移动开发的需求越来越复杂,我们不可避免的遇到发布出去的apk体积越来越大的问题,目前超过10MB、20MB的apk已经是很常见的事情了,但是依然能够看到一些apk的体积控制的很小。apk体积增大源于:新需求不断的提出 需要支持高分辨率的屏幕而加入了高分图片 依赖了更多的第三方库本文将从我自己的经历项目中探讨如何有效减小apk的体积。减小Apk体积是一件很有用处的andr...

2019-10-28 09:45:21 416 1

原创 NUC970-AIC

====================================================================start.sVector_Table:[0x00] B Reset_GO;[0x04] LDR PC, Undefined_Addr;[0x08] LDR PC, SWI_Addr;[0x0C] LDR PC, Prefetch_Addr...

2019-10-20 16:05:34 261

原创 NUC970-Clock

the clock controller generates all clocks for vedio, audio, cpu, amba and all engine modules, nuc970 include two PLL Modules;the clock souce for each module come from the PLL, or from external cryst...

2019-10-15 18:16:07 413

原创 设排列i1i2....in的逆序数为k, 求排列inin-1...i2i1的逆序数

2019-10-07 18:48:43 9003 1

转载 STM32 USB 数据缓冲区解疑

转载自:https://blog.csdn.net/dingzj2000/article/details/927956801. STM32USB数据缓冲区疑问USB不同的应用需要使用到的端点数和端点数据长度各不相同,如果为每个端点都单独规划一个存储区非常浪费。所以STM32为USB模块提供了共512个字节的存储区,至于如何为每个端点分配使用这512B的空间,就是用户自己的事情了,这样存...

2019-09-19 11:47:28 2544 1

转载 wince uboot [转载]

转载自: http://www.360doc.com/content/14/1022/20/5268588_419034392.shtmlwince常见文件[NBOOT1] [NBOOT2] [EBOOT] [Wince内核], 各个文件的作用如下:[NBOOT1]: S3C2440 Stepping Stone 4KB代码运行, NBOOT1启动运行以后从Flash中加载NBOOT2...

2019-09-19 11:18:48 205

原创 libcurl库编译生成不带版本的设置方法

Android JNI 最近调试发现Android可以调用Linux的so库,但是Android不能直接调用so库带版本号的文件,类似于xxx.so.4.5.0;xxx.so.4.5.0 的文件方式是Linux用来区分so库文件的版本作用的,为了让Android能够调用so库,需要在编译so库的时候,配置编译脚本,使其支持生成不带版本号的so库文件;我们在使用libcurl库的时候,就出现了...

2019-07-03 10:00:26 821

转载 mac下安装替换mac自带ctags

// 转载自https://www.cnblogs.com/hornedreaper1988/p/4293763.htmlmac下递归创建ctags报错: "illegal option -- R"在mac系统下不论是使用vim还是sublime text2的ctags插件都会碰到“illegal option -- R”这个错误,原因是mac使用的是自己的ctags,而我们通常在linu...

2019-06-28 09:35:04 955

原创 在mosquitto中使用ssl认证, 使用openssl生成ca.crt和客户端,服务端的证书

// ======================================================// SSL // ======================================================openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -ou...

2019-06-17 09:58:48 1164

原创 mosquitto在ARM嵌入式平台的移植

MQTT 基础概念Broker(服务端, 代理者)---- 使用PC(192.168.100.33:1883)机 运行mosquitto程序即可Subscriber(客户端-订阅者)---- 192.168.100.35 嵌入式板子APublisher(客户端-发布者)...

2019-06-15 22:09:22 3946 2

原创 libevent在ARM嵌入式平台的移植

libevent-2.1.8-stable.tar.gz 下载openssl-1.1.1a.tar.gz 下载openssl 交叉编译在《arm-linux 交叉编译wget支持openssl, 使wget支持https链接地址下载文件》一文中已经有具体的编译安装说明了,在这里就不展开描述了;[1]. 解压libevent-2.1.8-stable.tar.gz tar -zxv...

2019-05-03 21:30:14 2142

原创 git基本使用

[0]. git remote -v # 查看远程主机信息;[1].git diff # 可以查看当前没有被add的内容修改;[2]. git diff --cached # 查看已经add但还没有commit的文件改动;[3]. git diff HEAD = git diff + git diff -cached;[4]. git status # 查看当前git工作状态, 可以看到...

2019-04-24 22:00:38 160

原创 Linux 内核源代码顶层目录结构说明

include/ ----> 内核头文件, 需要提供给外部模块(例如用户空间代码)使用;kernel/ ----> Linux内核的核心代码, 包含进程调度子系统以及进程调度相关的模块;mm/ ----> 内核管理子系统;fs/ ----> VFS子系统;net/ ----> 不包括网络...

2019-04-23 00:10:09 905

原创 荔枝派Nano开发板实践(一)

2019-04-06 12:41:38 4411 4

转载 do{...}while(0)的好处

转载自:http://www.cnblogs.com/charlesblc/p/6080315.html在开源软件里面经常可以看到这样的写法。#define X(a) do { f1(a); f2(a); } while(0)1. 主要作用是放在宏定义里面,避免宏带来的语法问题。比如#define DOSOMETHING()\ cmd1;\ ...

2019-03-28 23:30:57 160

iperf-3.0.11-win64.rar

iperf-3.0.11-win64.rar

2021-06-03

MQTT客户端_Win64_Paho.rar(org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64)

MQTT客户端 org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64

2018-05-11

ModBus指令生成器

这是一个ModBus的辅助工具,不是所谓的ModBus协议实现 本工具用VC++开发,功能是根据用户的编辑配置,自动生成 ModBusRTU协议的指令,

2015-08-28

学VC编游戏 PDF文档和配套的代码

学VC编游戏 PDF文档和配套的代码 是学习VC++游戏编程的入门经典比较好的教程资料

2015-08-28

基于VC6.0实现程序截图保存图片格式任意设定

本工程基于VC++6.0 实现了可以实现应用程序的截图功能,同时截图可以保存为 BMP格式, JPEG格式 PNG格式等等,本工程运行需要VC++6.0 进行GDI+配置。。。 对本工程进行修改可用于屏幕截屏功能。。。。且保存图片格式可任意设定

2015-08-27

基于MFC的CTable和Dialog结合的CTableSheet类的实现

本工程基于VC++6.0 MFC 继承于CTabCtl控件---》 CTabSheet 可以在每一个Tab页项上映射不同的Dailog布局面。

2015-08-26

基于VC6.0曲线控件的代码实现

本工程基于VC++6.0 MFC 通过继承CButton类----> CChartView控件类,可以实现实时曲线的动态显示,同时可以向前或向后查询曲线数据Buffer中已经存入的曲线。。。。我已经实现了纵坐标的显示,横坐标(时间轴)可能后期会实现。。。

2015-08-26

基于MFC桌面截屏保存为BMP和JPG图片格式代码实现

该工程代码,是基于MFC VC6.0 实现的点击按键截取电脑桌面,保存为bmp和JPG格式,其中jpg功能需要用户配置自己的VC++支持GDI+

2015-08-26

音乐播放器_DOS界面

音乐播放器_DOS界面

2013-01-23

基于ActiveMovie控件的音乐播放器(代码)

可视动画控件ActiveMovie Control Object 是Microsoft公司开发的ActiveX控件,为程序员提供了在该层次上控制媒体设备接口的能力。它包含一组高层次的独立于设备的命令,可以控制音频和视频外设,我们不必关心具体的设备便可以对CD、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制,也可以理解成设备面板上的一排按键,通过选择不同的按键(发送不同的命令)即可让设备完成各种功能,而不必关心设备的内部实现,它是一种主要实现音频播放的方法。

2012-10-01

基于ActiveMovie控件的音乐播放器的制作(文档)

可视动画控件ActiveMovie是Microsoft公司开发的ActiveX控件,从开始的1.0版、1.2版到现在的2.0版,功能上已经有了很大的改进。由于该控件内嵌了Microsoft MPEG音频解码器和Microsoft MPEG视频解码器,所以能够很好地支持音频文件和视频文件,用其播放的VCD效果就很好。另外,播放时若用鼠标右键单击画面,可以直接对画面的播放、暂停、停止等进行控制,读者还可以自行在"属性"栏中对影片播放进行控制设置,用起来非常方便。 在Microsoft公司推出的VC++6.0中已经包含了ActiveMovie控件的2.0版,本文将介绍在VC++6.0下利用这个控件实现自动连续播放多媒体。

2012-10-01

实现文档 or 对话框程序的托盘化

该文档介绍了在MFC中实现基于对话框和文档(SDI or MDI)的应用程序的托盘化处理技术,可以实现类似于QQ或酷狗音乐那样的,实现应用程序的托盘化处理!!!

2012-09-29

空空如也

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

TA关注的人

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