工作笔记
橙子@C
这个作者很懒,什么都没留下…
展开
-
韦东山TCP/UDP编程
注意UDP,client如果使用connect,则用send;没有使用,用sendto带上server结构体信息。原创 2024-03-30 18:29:13 · 331 阅读 · 0 评论 -
简单的socket TCP编程
grep "struct test {" * -nir //n带行号 i不区分大小写 r 递归。(1)ifconfig :查看虚拟机ip 192.168.124.7。电脑cmd : telnet 192.168.124.7 8989。电脑cmd : ping 192.168.124.7 是否能通。原创 2024-03-30 12:28:18 · 640 阅读 · 0 评论 -
iic驱动
该结构体定义了挂载在I2C总线下的slave设备,一个结构体对象代表一个slave设备。原创 2024-03-23 23:58:12 · 246 阅读 · 0 评论 -
Source Insight 设置批量注释和批量取消注释
原创 2024-03-23 23:45:15 · 168 阅读 · 0 评论 -
wave 格式解析
【代码】wave 格式解析。原创 2024-03-23 23:41:57 · 99 阅读 · 0 评论 -
PCM /G711音频播放器 :Audacity
下载路径:Audacity ® | Free Audio editor, recorder, music making and more!原创 2024-03-23 23:30:11 · 324 阅读 · 0 评论 -
AAC相关知识
ADTS的头信息分为:固定头信息(adts_fixed_header,28bits)和可变头信息(adts_variable_header,28bits)两部分。number_of_raw_data_blocks_in_frames: 当前音频包里面包含的音频编码帧数,为0代表1frame.特点:可以确定的找到音视频数据的开始,不需要进行在音视频数据流中间开始的解码,它的解码必须在明确的定义开始。copyright_identification_bit: 直接置0,解码时忽略这个参数。原创 2024-03-23 23:27:46 · 1107 阅读 · 0 评论 -
韦东山驱动应用部分
2、怎么查看是否自动挂载,通过 cat /proc/mounts 例如:/dev/sda2 挂在于 /media/usb0。串口发送数据过程:先是高电平,后拉低,表示起始位(1),后面是数据位(8),再是奇偶校验位(0),再是停止位(1);1、插入U盘:会显示sda:sda1 sda2 (sda代表整个U盘,sda1和sda2代表两个分区)3、如果没有自动挂载,可以手动挂载 /dev/sda1 /mnt ,以下两个文件的内容一致。/dev/sda1 挂在于 /media/usb1。原创 2024-02-15 18:23:18 · 342 阅读 · 0 评论 -
常见封装格式
ps:psh(15)+pes/psm(I帧)原创 2023-12-17 21:12:02 · 365 阅读 · 0 评论 -
音频I2S
先传送MSB是因为发送设备和接收设备的字长可能不同,当系统字长比数据发送端字长长的时候,数据传输就会出现截断的现象/Truncated,即如果数据接收端接收的数据位比它规定的字长长的话,那么规定字长最低位(LSB: Least Significant Bit)以后的所有位将会被忽略。同为将模拟量转换为数字量的方法,PCM使用等间隔采样方法,将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度),因此PCM方式每次采样的结果都是N bit字长的数据。随着技术的发展,也出现了很多种不同的数据格式。原创 2023-12-17 21:06:10 · 1157 阅读 · 0 评论 -
Linux下getopt()函数的简单使用
所以这个命令行是符合要求的。对于这个过程会调用三次getopt()函数,和第一个输入一样,是找到选项-b和他的参数"qing er",这时optind的值为3,也就意味着,下一次的getopt()要从argv[3]开始搜索,所以第二次调用getopt()函数,找到选项-c和他的参数1234(选项和参数是连在一起的),由于-c1234写在一起,所以他两占一起占用argv[3],所以下次搜索从argv[4]开始,而argv[4]为空,这样第三次调用getopt()函数就会返回-1,循环随之结束。转载 2023-12-17 20:53:35 · 45 阅读 · 0 评论 -
cJSON
在本示例中,因为我提前知道数据的类型,比如字符型或者浮点型,所以我直接使用指针指向对应的数据域提取,在实际使用时,如果提前不确定数据类型,应该先判断type的值,确定数据类型,再从对应的数据域中提取数据。cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。在键值对结构体中,当该键值对的值是一个嵌套的JSON数据或者一个数组时,由child指针指向该条新链表。上面讲述,一段完整的JSON数据就是一条长长的链表,那么,如何打印出这段JSON数据呢?转载 2023-12-17 20:49:58 · 37 阅读 · 0 评论 -
FLV 封装格式解析
12 00 01 17 00 00 00 00 00 00 00 (tag header 11 字节) 0x12 表示这是一个 scripts tag, 00 01 17 三子节表示 tag data 长度为 279 个字节,Timestreamp、TimestampExtended、stream id 均为0。08 00 00 04 00 00 5d 00 00 00 00 0x08 表示音频,00 00 04 表示长度为 4,时间戳为 93;第 2-5 个字节为 UI32 类型值,表示数组元素的个数。原创 2023-08-29 16:07:03 · 298 阅读 · 0 评论 -
H264码流RTP封装方式详解:rfc3984
H264编码后的码流又NAL(网络抽象层)和VCL(视频编码层)构成,VCL数据传输或者存储之前,会被映射到一个NALU中,H264数据包含一个个的NALU,H.264的编码帧序列包括一系列的NAL单元,每个NAL单元包含一个RBSP,单元的信息头定义了RBSP单元的类型,NAL单元其余部分为RBSP数据,这里对NALU头字节进行i二少,因为RTP封装方式,主要针对NALU头进行处理。//这里取5-6位,即:NRI,这里只是通过按位与的方式,保留了5-6位,并未真正转换为真实值,方面后买你组合。原创 2023-08-29 16:04:38 · 675 阅读 · 0 评论 -
svn merge
原创 2023-08-19 15:56:09 · 47 阅读 · 0 评论 -
消息队列特点
dd原创 2023-08-12 17:44:10 · 33 阅读 · 0 评论 -
Audacity PCM音乐播放器
ff原创 2023-06-07 21:58:10 · 359 阅读 · 0 评论 -
C语言操作符执行顺序
dd原创 2023-06-07 21:50:49 · 58 阅读 · 0 评论 -
Windows 终端编译 C代码
此电脑--》属性--》系统--》高级系统设置--》环境变量--》Path--》新建--》粘贴路径 E:\My_SoftWare\Window gcc\windowbianji\mingw64\bin。打开命令终端 E: +回车。dir 显示所有文件。原创 2023-03-06 23:01:53 · 504 阅读 · 0 评论 -
Ubuntu连接不了网络的解决方法
将 NetworkingEnabled=false 改为 NetworkingEnabled=true。将其中的managed = false 改为 managed = true。突然发现Ubuntu连不上网络,右上角也没有网络图标;若方案一不行,再试下方案二,亲测好用;好啦,右上角出现网络图标,有网络了~转载 2023-03-05 17:48:43 · 1548 阅读 · 1 评论 -
IIS总线
在以太网数字语音广播系统中应用软件模拟实现I2S总线时序,能够成功地实现语音信号的数据传输,实现语音信号的实时广播,表明了软件模拟实现I2S总线的可行性,为解决不支持I2S总线的MCU和各种I2S总线设备间的通信提供了一种可行的方法。在数据传输过程中,I2S总线的。该系统中的语音数据双声道,16位采样,1个采样点的数据为4字节,1个采样点数据通过MCU发送给MS6336,数据发送流程如图7所示。⑥ 当将1个采样点的左声道的数据发送完以后,延时2个SCK周期,然后发送右声道的数据(同左声道数据的发送过程)。转载 2023-03-05 17:36:30 · 635 阅读 · 0 评论 -
8086汇编记录
dw 0123H ,0456H ,0789H,0abcH,0defH,0fedH,0cbaH,0987H //dw定义字数据。dw 0123H ,0456H ,0789H,0abcH,0defH,0fedH,0cbaH,0987H //dw定义字数据。dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //定义空数据用作栈空间。2)向SS:SP指向的字单元送入数据。dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //定义空数据用作栈空间。原创 2022-10-14 22:06:22 · 516 阅读 · 0 评论 -
内存泄漏检测工具asan
3.堆溢出(heap buffer overflow)。堆中存储动态申请内存,如malloc(), calloc(), new int[]等,常见情况为访问到申请内存之外的地址。2、栈溢出(Stack buffer overflow),函数中的变量,参数,引用,指针,返回地址等存储在栈中,若超出栈的容量会导致栈溢出,常见情形为递归过深或申请的数组过大。1、内存泄漏(Memory leaks),即申请的内存未释放,如上图所示。把超大静态数组/放到全局变量中或越界访问静态数组。原创 2022-10-05 10:47:28 · 2546 阅读 · 0 评论 -
柔性数组:char data[0]
有如下定义:typedef struct{char a;char b[0];};其中元素Char b[0];叫做柔性数组,主要用于使结构体包含可变长字段。详细内容如下:柔性数组;【柔性数组结构成员 C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进...转载 2022-04-10 12:40:12 · 200 阅读 · 0 评论 -
OpenCV使用freetype显示中文
由于Opencv默认不显示中文,所以我们需要通过需要通过一些库来设置OpenCV支持中文显示代码说明项目需要ft2build.h,它是freetype库中的一个头文件。所以在shell中执行下列语句安装freetype:sudo apt-get install libfreetype6-dev 然后使用下列语句查找ft2build.h并在cmake中链接即可sudo find / -name ft2build.hsimhei.ttf是字体文件,可以在windows系统直接进行索引原创 2022-02-13 14:36:16 · 3183 阅读 · 0 评论 -
Ubuntu配置中文输入法
1、找到设置2、选择区域和语言3、点击Manage Installed Languagees,提示安装的话安装即可4.点击图示内容。5.将Chinese(simplified)勾选上右键点击住,将汉语拖到第一位重启Ubuntu6. 在输入源中点击+号,选中里面的汉语,再选中里面的汉语(Intelligent Pinyin),添加即可,并将其移动到第一位。并将汉语(Intelligent Pinyin)移动到第一位...原创 2022-02-13 12:41:13 · 18619 阅读 · 1 评论 -
解决Ubuntu中错误提示:“Failed to load module “canberra-gtk-module“
问题描述:Ubuntu 18.04 命令行执行命令报错提示:Failed to load module "canberra-gtk-module"解决方案:1、执行以下命令,相信定有奇效sudo apt-get install libcanberra-gtk-module2、执行过程中,按照提示,输入 Y3、再次重新执行刚才报错的命令...原创 2022-02-10 22:50:23 · 2571 阅读 · 0 评论 -
Opencv在图片上写文字(hello)
分三步走:第一步,功能说明;第二步,结果图显示;第三步,API详解;第四步,代码展示(注释很详细,保证所有有C++基础的人都可以看懂。第一步,功能说明:在图片上写入字。是不是很6呀。不多说了,直接上图。在效果图显示Hello。第二步,结果图显示:第三步,API详解:原型 void putText( Mat& img, const string& text, Point org, int fontFace,double fontScale, Scalar...原创 2022-02-10 22:29:26 · 8079 阅读 · 0 评论 -
OpenCV在图片上画线和矩形
今天讲一下通过opencv的Line函数,在图像中绘制一条我们想要的直线或者线段,以及使用Rectangle函数绘制矩形;CV_RGB创建一个色彩值.#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r) )Line绘制连接两个点的线段void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int原创 2022-02-09 22:20:57 · 4519 阅读 · 0 评论 -
Ubuntu安装OpenCV
1、安装准备# 安装最低要求(Ubuntu 18.04 作为参考)sudo apt update && sudo apt install -y cmake g++ wget unzip#安装依赖sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-devsudo apt-get instal.原创 2022-02-09 19:40:57 · 12251 阅读 · 5 评论 -
sourceinsight函数调用关系使用技巧
1、点击红圈1中的按钮,在红圈2中选择三种模式之一2、过滤函数声明,注重函数定义,让函数调用看起来更直观点击红圈3中的设置点击红圈2不勾选红圈4,点击OK3、优化点击红圈5...原创 2021-11-27 15:50:06 · 911 阅读 · 0 评论 -
汇编基础2:看懂汇编
1、源码#include<stdio.h>int g_a =1;int main(){ int a = 1; int b = 2; return 0;}2、汇编fp栈底指针 str 将 r3的值赋值给fp-8的地址原创 2021-11-26 22:23:53 · 3904 阅读 · 0 评论 -
汇编基础1:arm交叉编译器的安装及arm寄存器和三级流水线
1、arm交叉编译器的安装sudo apt-get install gcc-arm-linux-gnueabihf2、arm交叉编译器的移除sudo apt-get remove gcc-arm-linux-gnueabihf3、检验是否安装成功,在 Terminal 输入以下命令输出版本信息arm-linux-gcc -v4、将可执行程序反汇编1、arm-linux-gnueabihf-gcc assemble.c -o aaarm-lin...原创 2021-11-26 20:31:06 · 1177 阅读 · 0 评论 -
select /poll/epoll : I/O复用处理高并发
(2)select能够监听到事件的发生,但是不知道 是哪一个fd,需要循环判断。(1)最大只能监听1024个fd;2、free -m 查看内存情况;1、top 查看CPU使用情况;原创 2021-11-20 17:46:37 · 322 阅读 · 0 评论 -
结构体的妙处
1、相同结构体可以直接赋值,相当于内存拷贝;2、不同结构体不可以直接转换,需要先转换成指针类型,再取值;3、结构体有指针变量,在函数内指向malloc申请的内存,在main函数仍可以使用;...原创 2021-11-12 23:03:21 · 744 阅读 · 0 评论 -
二级数组做形参传递
如果我们需要编写一个处理二维数组的函数,那么这个函数原型应该如何声明呢?首先,我们应该牢记:数组名被视为其地址,因此,相应的形参是一个指针。例如,假设有如下的代码:int a[2][3]={{0,1,2},{3,4,5}};fun(a);一、在main函数打印#include<stdio.h>int main(){ int a[2][3]={{0,1,2}, {3,4,5}}; for(int i=0;i<...原创 2021-10-24 16:02:33 · 175 阅读 · 0 评论 -
gdb进阶
一、gdb的安装由于这是进阶的介绍,如果不会安装请自行百度;二、调试前的准备用gcc编译源程序的时候,编译后的可执行文件不会包含源程序代码,如果您打算编译后的程序可以被调试,编译的时候要加-g的参数,例如:gcc -g -o aa demo.c在命令提示符下输入gdb aa就可以调试demo.c程序了;gdb aa三、基本调试命令如果set args 的参数带有特殊名字,需要用双引号"aaa bbb"四、程序挂掉时,系统缺省不会生成core文件有段错误的代码.原创 2021-10-23 16:19:33 · 187 阅读 · 0 评论 -
Ubuntu下vim设置tab键为4个空格
1、Ubuntu下vim tab键默认为8个字节缩进,但是我们实际编程的时候感觉缩进量太大,很不美观2、我们怎么设置tab键缩进大小呢?(1)若/etc/vim/vimrc目录下为可读可写,直接进入该目录最下面添加如下代码set ts=4 //设置缩进大小为4set expandtabset autoindent(2)若vimrc文件权限为只读则$sudo chmod 666 /etc/vim/vimrc输入密码,回车(3)修改/etc/vim/vimrc文件$vi.原创 2021-09-11 10:53:05 · 2555 阅读 · 2 评论 -
寄存器位操作
https://blog.csdn.net/rouse2617/article/details/106167590原创 2021-04-22 16:45:52 · 269 阅读 · 0 评论 -
tar 压缩和解压
将xxx.zip解压到 tmp文件夹:tar zxvf ./xxx.zip -C tmp将文件夹里的文件压缩为xxx.zip:tar -zcvf ./xxx.zip *原创 2021-07-18 17:17:48 · 1703 阅读 · 0 评论