- 博客(66)
- 收藏
- 关注
原创 使用quirc识别二维码
1 说明quirc是一款专用于识别二维码(不能识别一维码)的开源软件。它比zbar轻量一些,跟zbar一样能扫描码流和静态图片识别条形码,关于zbar的使用可参考我以前写过的一篇文章使用zbar识别二维码。本文中使用的UVC购买自深圳匡硕影像技术有限公司。2 移植quirc参考quirc官网,了解到quirc提供多个可执行程序,以下使用quirc-scanner、qrtest识别二维码。在编译quirc之前需要编译其相关的依赖:zlib-1.2.8、libpng-1.6.37、libjp
2021-09-01 18:07:21
2148
原创 YUYV转灰度图和JPG图片
目录1 说明2 YUV转灰度图3 YUV转JPG1 说明之前写过一篇hi3518ev300接入UVC的文章,基本使用过程是抓取YUV420图像,先将其转化为RGB数据,再将RGB数据转换为BMP和PGM图片。如果要生成JPG图片则需要使用libjpeg,之前介绍过cjpeg将BMP图片转换为JPG图片,libjpeg的接口也支持直接将YUV数据转换为JPG图片。以下内容整理自网上的一些文章且已经验证了它们的可用性。本文中使用的UVC购买自深圳匡硕影像技术有限公司。2 YUV转灰度图
2021-08-31 18:00:58
1618
原创 man strcat
名称strcasecmp, strncasecmp - 连接两个字符串概要#include <string.h>char *strcat(char *dest, const char *src);char *strncat(char *dest, const char *src, size_t n);说明strcat将src字符串附加到dest字符串,覆盖dest末尾的结束...
2021-08-30 19:36:22
308
原创 man index rindex
名称index, rindex - 定位字符串中的字符概要#include <strings.h>char *index(const char *s, int c);char *rindex(const char *s, int c);说明index返回指向字符串s中第一次出现字符c的指针。rindex返回指向字符串s中最后一次出现字符c的指针。...
2021-08-30 19:35:29
194
原创 man stpcpy
名称stpcpy - 复制一个字符串并返回一个指向其末尾的指针概要#include <string.h>char *stpcpy(char *dest, const char *src);对于glibc来说要有功能测试宏才能使用(参考feature_test_macros):stpcpy():自glibc 2.10起:_X...
2021-08-30 19:34:21
176
原创 man strcasecmp strncasecmp
名称strcasecmp, strncasecmp - 比较两个字符串,不区分大小写概要#include <strings.h>int strcasecmp(const char *s1, const char *s2);int strncasecmp(const char *s1, const char *s2, size_t n);说明strcasecmp对字符串s...
2021-08-27 19:12:35
131
原创 man string
名称stpcpy, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn, strdup, strfry,strlen, strncat, strncmp, strncpy, strncasecmp, strpbrk, strrchr, strsep, strspn, strstr,strtok, strxfrm, index, rindex - 字符串操作概要...
2021-08-26 20:02:24
188
原创 解析udhcpd的租借文件udhcpd.leases
1 平台环境rk3399、buildroot 2018.02-rc3、linux 4.4。2 应用场景说明本文的应用场景是设备端通过WiFi AP模式对外提供热点,用户使用手机连接热点,每个手机都会获取到一个IP地址,设备端会记下手机的一些信息,比如手机的MAC、IP等,我们把记录这些信息的文件叫租借文件。3 解析udhcpd是busybox提供的动态分配IP地址的命令。每次给client分配一个IP地址都会在租借文件中添加相应的内容。3.1 怎么找到这个租借文件cd build
2021-08-25 19:17:59
3451
原创 man feature_test_macros
名称feature_test_macros - 功能测试宏概要#include <features.h>说明功能测试宏允许程序员编译程序时控制由系统头文件暴露的定义。注意:要想有效控制,必须在包含任何头文件之前定义功能测试宏。这可以在编译命令(cc -DMACRO=value)中完成,也可以通过在源代码中定义宏来完成,这些宏在包含头文件之前被定义。...
2021-08-24 19:09:13
649
原创 man stdio.h
序言本手册页是POSIX程序员手册的一部分。这些接口的Linux实现可能不同(有关Linux行为的详细信息,请参阅相应的Linux手册页),或者接口可能未在Linux上实现。名称stdio.h — 标准缓冲输入/输出概要#include <stdio.h>说明此参考页面中描述的某些功能扩展了ISO C标准。应用程序应定义适当的功能测试宏(参考POSIX....
2021-08-23 18:15:23
221
原创 man unlocked_stdio
名称getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked - 非阻塞的stdio函数概要#include <stdio.h>int getc_unlocked(FILE *stream);int getchar_unlocked(void);int putc_unlocked(int c, FILE *stre...
2021-08-23 18:11:18
253
原创 man tmpnam tmpnam_r
名称tmpnam, tmpnam_r - 为临时文件创建名称概要#include <stdio.h>char *tmpnam(char *s);说明注意:应该避免使用tmpnam,请改用mkstemp或tmpfile。tmpnam返回一个指向字符串的指针,该字符串是一个有效的文件名,并且在某个时间点不存在同名的文件,因此天真的程序员可能认为临时文件适合使...
2021-08-20 19:59:25
219
原创 man tmpfile
名称tmpfile - 创建一个临时文件概要#include <stdio.h>FILE *tmpfile(void);说明tmpfile以二进制读写(w+b)模式打开一个唯一的临时文件,关闭文件或者程序终止时将自动删除此文件。返回值tmpfile成功时返回文件描述符。如果无法生成唯一文件名或无法打开唯一文件,则返回NULL并设置...
2021-08-19 19:11:38
169
原创 man tempnam
名称tempnam - 为临时文件创建名称概要#include <stdio.h>char *tempnam(const char *dir, const char *pfx);对于glibc来说要有功能测试宏才能使用(参考feature_test_macros):tempnam(): _BSD_SOURCE || _SVID_SOURCE说明永远不要使用此...
2021-08-18 19:08:43
110
原创 man strerror strerror_r strerror_l
名称strerror, strerror_r, strerror_l - 返回描述错误值的字符串概要#include <string.h>char *strerror(int errnum);int strerror_r(int errnum, char *buf, size_t buflen);/* 兼容XSI */char *strerr...
2021-08-17 20:02:51
776
原创 man setbuf setbuffer setlinebuf setvbuf
名称setbuf,setbuffer,setlinebuf,setvbuf- 流缓冲操作概要#include <stdio.h>void setbuf(FILE *stream, char *buf);void setbuffer(FILE *stream, char *buf, size_t size);void setlinebuf(FILE *stream);...
2021-08-16 18:52:06
198
原创 man remove
名称remove– 删除文件或目录概要#include <stdio.h>int remove(const char *pathname);说明remove从文件系统中删除一个名称,如果是文件则它调用unlink,如果是目录则它调用rmdir。如果删除的名称是文件的最后一个链接,并且没有进程打开该文件,则该文被删除,并且它所使用的空...
2021-08-16 18:50:45
106
原创 man perror sys_errlist sys_nerr
名称perror– 打印系统错误消息概要#include <stdio.h>void perror(const char *s);#include <errno.h>const char * const sys_errlist[];int sys_nerr;int errno;/* 参考errno() */...
2021-08-13 19:15:00
869
原创 man mktemp
名称mktemp–制作一个唯一的临时文件名概要#include <stdio.h>char *mktemp(char *template);对于glibc来说要有功能测试宏才能使用(参考feature_test_macros):mktemp():从glibc 2.3.3开始:_BSD_SOURCE || _SVID_S...
2021-08-12 22:07:27
162
原创 man getw putw
名称getw, putw - 输入输出字(int)概要#include <stdio.h>int getw(FILE *stream);int putw(int w, FILE *stream);对于glibc来说要有功能测试宏才能使用(参考feature_test_macros):getw(), putw():从glibc 2.3....
2021-08-11 19:25:40
215
原创 man gets
名称gets–从标准输入获取字符串(已弃用)概要#include <stdio.h>char *gets(char *s);说明永远不要使用这个函数。gets从stdin读取一行到参数s指向的缓冲区,直到换行符或EOF,并用结束符('\0')替换它们。返回值gets在成功时返回s,出错或到达文件结尾时返回NULL。但是,由...
2021-08-10 19:00:00
138
原创 man fscanf scanf sscanf vfscanf vscanf vsscanf
名称scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf–格式化输入转换概要#include <stdio.h>int scanf(const char *format, ...);int fscanf(FILE *stream, const char *format, ...);int sscanf(const char *str, co...
2021-08-09 20:37:10
270
原创 man fread fwrite
名称fread, fwrite - 二进制流输入/输出概要#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream...
2021-08-09 20:30:29
223
原创 man fputc fputs putc putchar puts
名称fputc, fputs, putc, putchar, puts - 字符和字符串的输出概要#include <stdio.h>int fputc(int c, FILE *stream);int fputs(const char *s, FILE *stream);int putc(int c, FILE *stream);int putchar...
2021-08-09 20:30:09
185
原创 文本转语音(TTS)工具Balabolka
1 说明Balabolka是一款轻量好玩的文语转换工具,运行在Windows环境。如果想寻找开源的Linux下的相关工具,推荐Ekho。这些工具可以用来生成公交车自动报站的语音文件,省去了录音等繁琐的过程。有些时候为了做到实时的方言版的TTS,可能会和科大讯飞等公司进行业务合作。以下图片来自官网,一览Balabolka的风采。...
2021-08-06 18:47:14
2332
原创 man fpurge
名称fpurge, __fpurge- 清洗流概要/* 不再支持*/#include <stdio.h>int fpurge(FILE *stream);/* 支持*/#include <stdio.h>#include <stdio_ext.h>void __fpurge(FILE *...
2021-08-05 18:42:00
141
原创 man fprintf printf sprintf vfprintf vsprintf
名称printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf –格式化输出转换概要#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const ch...
2021-08-04 17:42:22
460
原创 man fgetpos fseek fsetpos ftell rewind
名称fgetpos, fseek, fsetpos, ftell, rewind - 重新定位流概要#include <stdio.h>int fseek(FILE *stream, long offset, int whence);long ftell(FILE *stream);void rewind(FILE *stream);int fgetpo...
2021-08-03 18:56:12
217
原创 man fgetc fgets getc getchar ungetc
名称fgetc,fgets,getc,getchar,ungetc – 字符和字符串的输入概要#include <stdio.h>int fgetc(FILE *stream);char *fgets(char *s, int size, FILE *stream);int getc(FILE *stream);int getchar(void);...
2021-08-02 18:50:52
270
原创 man fflush
名称fflush – 冲刷流概要#include <stdio.h>int fflush(FILE *stream);说明对于输出流来说,fflush强制写所有用户空间缓冲的数据,或者通过流的底层写函数更新流。对于跟可做位置偏移操作的文件(比如磁盘,但不能是管道也不能是终端)绑定的输入流来说,fflush丢弃所有已经从底层文件获取到但...
2021-08-02 18:40:02
154
原创 man fdopen fopen freopen
名称fopen, fdopen, freopen - 打开流的函数概要#include <stdio.h>FILE *fopen(const char *path, const char *mode);FILE *fdopen(int fd, const char *mode);FILE *freopen(const char *path, const char *mode, ...
2021-08-02 18:39:23
330
原创 man fclose
名称fclose - 关闭流概要#include <stdio.h>int fclose(FILE *stream);说明fclose冲刷流(调用fflush写所有的缓冲的输出数据)并且关闭底层的文件描述符。如果参数为非法指针或者原先用同样的参数调用过fclose,则调用fclose时会出现未定义的表现。返回值一旦成功完成则返...
2021-07-29 18:50:34
159
原创 man clearerr feof ferror fileno
名称clearerr, feof, ferror, fileno - 检查和复位流的状态概要#include <stdio.h>void clearerr(FILE *stream);int feof(FILE *stream);int ferror(FILE *stream);int fileno(FILE *stream);...
2021-07-28 18:40:38
123
原创 man stdio
名称stdio - 标准输入/输出库函数概要#include <stdio.h>FILE *stdin;FILE *stdout;FILE *stderr;说明标准I/O库提供了一套简单和高效的带缓冲流的I/O接口。输入和输出被映射成逻辑数据流,隐藏了物理硬件的输入/输出功能。这些函数和宏在下面被列出,从它...
2021-07-27 18:52:32
182
原创 在hi3518ev300平台使用libcurl
1 说明开源软件包libcurl支持多种应用层网络协议,本文主要描述使用https与服务器通信,目标业务有传送图片、获取处理结果,使用方法有GET、POST。文中提到的软件包和示例代码可从官网或者百度网盘获取。链接:https://pan.baidu.com/s/1cjeiR7tCIbJDhnSagsNpBg提取码:p3rd更多内容可参考官网:https://curl.haxx.se/,参考官网书籍:Everything curl2 移植opensslhttps://www.open
2021-07-26 18:38:17
684
原创 在rk3399平台移植rtl8723DS(蓝牙篇)
目录1 说明2 过程2.1 libiconv2.2 glib2.3 dbus2.4 ncurses2.5 bluez2.6 编译收尾2.7 修改蓝牙设备名字2.8 执行rtk_hciattach1 说明前段时间写了几篇文章介绍了在hi3518ev300上移植rtl8723DS的功能(Wi-Fi和蓝牙),wifi模块和开发包购买自深圳市必联电子有限公司,本文在此基础之上说明移植蓝牙到rk3399时遇到的问题及解决办法,同时也是对之前经验的回顾。rk3399开发板
2021-07-25 10:37:39
3694
原创 从SPI Flash中提取烧录文件
目录1 说明2 方法1:从Uboot启动阶段提取3 方法2:在应用程序启动之后通过dd命令提取1 说明本文内容主要来自调试Hi3531A的经验。2 方法1:从Uboot启动阶段提取配置主机网络、板端网络地址、接好串口线。TFTP工具为tftpd32,链接:https://pan.baidu.com/s/1T_f05t3QxibP_3ppqCxBOA提取码:0wvz比如提取4M大小的kernel(1M uboot,4M kernel, 27M rootfs):s
2021-07-25 09:27:22
1065
原创 在hi3518ev300平台使用蜂鸣器播放音乐
目录1 说明2 开发过程1 说明在网上无意间看到RT-Thread实现蜂鸣器播放器的文档,看过之后忍不住赞叹RT-Thread真是开源界的国产良心之作,除了大量的文档之外还有一系列的视频用于学习。先列出本文的参考文档网址:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/beep-player/README.md百度网盘是作者在hi3518ev300做的简单示例:
2021-07-22 18:51:35
301
原创 绘制函数调用图
目录1 生成函数调用图的方法2 使用doxygen和GraphViz生成静态调用图2.1 笔者使用的软件版本2.2 使用过程图解1 生成函数调用图的方法分为动态分析和静态分析两种。https://en.wikipedia.org/wiki/Call_graph列出来大部分分析方法。https://www.ibm.com/developerworks/cn/linux/l-graphvis/index.html?mhq=%E5%87%BD%E6%95%B0%E8%B0%83%.
2021-07-21 19:01:55
4010
3
原创 在hi3518ev300平台接入UVC
目录1 说明2 开发过程3 测试工具1 说明一般的场景是把hi3518ev300制作成一个UVC设备。本文的内容来自工作中的需求——在hi3518ev300平台接入UVC,其他Linux可以使用与这完全相同的方法接入UVC。自Linux 2.4.6就支持了UVC的驱动,应用程序要做的只是调用相应的API,官网或者参考网址http://www.usbzh.com/article/forum-12.html给出了UVC比较详细的说明,本文中使用的UVC购买自深圳匡硕影像技术有限公司。2
2021-07-20 19:33:24
692
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人