- 博客(67)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
转载 HDMI EDID格式详细解析
在网上看到一片文章,分析HDMI EDID格式,介绍的还是蛮详细的,这里直接引用这位网友整理的数据,链接如下:https://www.likecs.com/show-204638091.html
2023-04-17 10:50:41 482
原创 Linux Input子系统Mouse实战(一)
在做UIBC项目的时候,支持鼠标回控,所以需要从Linux获取鼠标的状态,Input子系统很好的帮我们做好了这件事情。在/dev/input/目录下有很多event设备,具体每个event都是什么用途,可以查看看/proc/bus/input/devices。有时需要支持多个设备。如下可以看到鼠标是event1设备。只是为了记录而已,就不多描述太多内容,直接上代码。这是最多同时支持5个鼠标的案例。int get_input_event(const char *type,int
2022-05-25 11:15:47 440
原创 Linux设置网络缓冲区大小(TCP/UDP)
一、修改套接字socket的缓存大echo 65536 > /proc/sys/net/core/rmem_max#收缓冲区最大值echo 256960 > /proc/sys/net/core/wmem_max#发缓冲区最大值echo 65536 > /proc/sys/net/core/rmem_default#收缓冲区默认值echo 65536 > /proc/sys/net/core/wmen_default...
2022-05-18 10:59:27 11239 1
原创 Linux I2C应用编程
I2C的协议内容在这里就不大费周章的描述,主要记录一些自己在实际应用过程中觉得有助于调试一些方法。一、介绍I2C 的几个比较有用的tool(1)i2cdetecti2cdetect的主要功能就是I2C设备查询,它用于扫描I2C总线上的设备。它输出一个表,其中包含指定总线上检测到的设备的列表。该命令的常用格式为:i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]。具体参数的含义如下: -y 取消交互模式。默认情况下,i
2022-05-06 16:09:34 1203
原创 Linux GPIO子系统
一、Linux驱动程序驱动程序为drivers\gpio\gpiolib-sysfs.c二、通过SYSFS使用GPIO如果只是简单的引脚控制(比如输出、查询输入值),可以不编写驱动程序,这样可以节省很多事情。但是涉及中断的话,就需要编写驱动程序了。2.1 设置GPIO方向,读写值1、可通过串口输出命令验证1、设置你想操作的GPIO Pin,这里我们假设用GPIO76cd /sys/class/gpio/echo 76 >export2、设置GPIO Pin的方.
2022-04-27 16:40:42 396
原创 lighttpd使用
之前在项目中使用的是thttpd,由于thttpd是用明文发送的,为了安全考虑,用https来代替http,增加了证书认证功能,所以最后选择了lighttpd。 lighttpd支持了cgi和fcgi,thttpd只支持了cgi,为了兼容的同时避免重复开发,仅在lighttpd上配置了支持cgi功能。 接下来简单了记录下自己的一些配置内容,后续有用到新功能...
2019-11-21 19:51:06 8194
原创 printf打印设置字体和背景带颜色的输出方法
为了方便调试,难免会加一些log信息,当有大量log时,去翻阅很难一眼看出错误信息,这时就可以对log设置某些颜色或者高亮度等等。具体格式如下:printf("\033[字背景颜色;字体颜色m 字符串 \033[0m");例子:printf("\033[1m\033[45;33m HELLO_WORLD \033[0m\n");颜色代码...
2019-11-18 14:43:44 1089
原创 buildroot package如何打patch
今天修改了thttpd的源码,需要通过在buildroot package里面通过打patch的方式。其实打patch的方式很简单,只要把生成的patch文件放在对应目录下,比如thttpd放在后重新make clean,make命令,就会自动打好patch。主要是patch的命名规则有要求,这个可以参考网上的其它文章。还有一个就是patch的生成方法,我是通过diff命令。将...
2019-11-14 19:54:12 2306
原创 Thttpd上传大文件的方法
最近在给Microsoft做一个项目,碰到需要上传几百MB的文件,而thttpd本身也是支持上传文件功能的,只是thttpd为了考虑一些需求在某些方面进行了限制。 这里我做个简单的介绍,thttpd的main()函数在thttpd.c里面,解析http参数的功能在libhttpd.c。config.h头文件有一些关于系统以及CGI的配置项,关于CGI的配置项主要是考虑一些系...
2019-11-14 19:30:45 701
原创 JSON数据key和value之间有空格问题
项目终于暂时告一段落了,之前在帮Microsoft调试一些功能,根据Microsoft提供的SPEC,要求返回数据为JSON格式,并且严格要求key和value之间不能有空格,可能会导致Microsoft无法正常解析返回结果。 追了一下cJSON的源代码,发现空格的产生是因为cJSON特意加了个 '\t' ,可能是因为这样看起来JSON数据比较直观。 主要是...
2019-11-14 18:05:00 6845
翻译 计算从1970年到当前时间所经历过的秒数
这个算法来自LINUX的源码,下面带有大神的解析,自己在RTC实验中也使用了,不用月份表,润平年的处理,几行就可得出结果,以下是程序和大神的解析Linux源码中的mktime算法解析 我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。 那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。...
2019-09-18 18:22:54 17372 1
原创 vi快捷键
今天分享一些常用的vi快捷键,后续有遇到会继续添加。移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上b:与w相反$:移动光标到行尾 n$:移动到第n行的行尾0(Num):移动光标到行...
2019-04-09 19:51:46 336
原创 网络流媒体协议之——RTSP协议
RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。RTSP作为一个应用层协议,提供了一个可供扩展的框架,使得流媒体的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送,但其本身并不用于传送流媒体数据,...
2019-01-16 18:02:30 695
原创 使用libcurl库进行http通讯网络编程
一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证十一、代码示例 1、基本的http GET/POS...
2019-01-08 17:49:39 539
原创 C语言实现遍历目录并用树状打印
头文件:#include <sys/types.h> #include <dirent.h>struct dirent{ ino_t d_ino; //d_ino 此目录进入点的inode ff_t d_off; //d_off 目录文件开头至此目录进入点的位移 signed short int d_reclen; //d_recle...
2018-12-20 10:53:39 3131 1
原创 Linux使用libqrcode生成二维码图片
之前在做跟华为合作的项目,需要根据字串来生成特定的二维码,特在此记录,以便查看。二维码图样有很多种,根据项目要求,我选择了使用libqrcode库来实现,这是个开源库,使用十分方便,首先下载libqrcode源码,根据平台选择编译条件并编译成动态库so。在自己编写程序包含相应的头文件,编译链接动态库即可。以下是我部分code,仅供参考。qrcode.h#ifndef _QRCOD...
2018-12-17 16:15:06 2640 1
原创 使用libpng读写PNG图片
libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库。借助它,你可以轻松读写PNG文件的每一行像素。因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果)而且PNG可以是带透明通道的真彩色图像、不带透明通道的真彩色图像、索引颜色、灰度颜色等各种格式,如果大家都自己写程序分析PNG文件就会显得很麻烦、很累。因此,通过使用libpng你就能直接...
2018-12-14 17:21:11 16481 9
原创 Linux Excel (*.xls)文件读取,使用libxls库
首先下载libxls,项目地址:http://sourceforge.net/projects/libxls/解压后使用:./configure --prefix=/usrmakesudo make install安装,请注意,在configure前,一定要安装libiconv-dev,否则中文显示可能不正常。关于libiconv如何使用,请参考我上一篇文章https://b...
2018-12-13 15:58:06 12089 3
原创 Linux使用iconv进行编码转换
最近在做项目,为了能让UI显示中文,需要对中文进行编码转换。因为我用的是directfb,它只支持utf-8格式,所以要将gb2312转换为utf-8,这时使用iconv是非常方便的。 以下是我在项目中用到的一部分代码。首先要使用iconv的API需要包含它的头文件#include "iconv.h" 或者#include <iconv.h>#define O...
2018-10-18 11:12:10 1134
转载 libxml2的安装及使用
本文着重介绍解析xml的libxml2库的安装及使用,举例说明创建和解析xml的过程。是针对C语言开发人员使用你若想详细学习前端的一套东西,即xml html css javascript(JS)等,可以登录这个网站http://www.runoob.com/一、libxml2的安装 关于libxml2的介绍请参考官方网址http://xmlsoft.org/,下载最...
2018-09-12 17:18:34 2486
原创 金融交易报文ISO8583协议
前言最初,金融系统只有IBM这些大公司来提供设备,象各种主机与终端等,后来有很多大大小小的公司进入,怎样设计一个报文协议,解决各公司金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。例如“回头客会员管理系统”POS机上应用的就是8583报文。金融行业涉及到的数据内容是比较少的,如交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁3磁数据、交易序列号等,...
2018-09-04 14:20:45 1001
原创 CGIC中文文档
CGIC英文文档地址:https://boutell.com/cgic/cgic是用c写cgi程序的一个很小的库,所以英文文档也很少,为了便于日后复习翻看,心血来潮,翻译了一遍。1. 什么是cgic?cgic是一个c语言库,用于基于CGI标准规范的www应用程序的创建。cgic执行以下任务:(1)解析数据,校正有缺陷和不一致的浏览器(2)透明的接受由GET和POST传递的表单数据(3)接受上传完毕...
2018-03-05 14:49:27 680
原创 linux线程资源回收方法
在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,死循环等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中
2017-10-11 09:36:58 808
转载 linux 获取eth0(指定网卡)网卡的IP地址(或MAC地址)
引言使用场景:我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中;另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址。一般用法:使用ifconfig eth0读取网卡信息手动将IP地址或MAC地址拷贝
2017-09-13 20:13:06 18599
原创 Linux cut命令用法
cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的(1)其语法格式为:cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如
2017-09-06 11:03:36 430
原创 linux awk命令
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr
2017-09-06 10:51:37 300
原创 checksum校验
原理 P/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0。当收到数据后,同样对有效数据范围中每个16位数进行二进制反码的求和。由于接收方在计算过程中包含了发送
2017-08-16 19:55:45 2714
原创 TCP/IP checksum 简析
Checksum原理Checksum广泛应用于TCP/IP协议族,用于校验IP、TCP、UDP数据,其原理比较简单,其计算校验和的步骤如下: 1)在数据发送端,首先将检验和字段本身清零,将被检验的相邻字节成对配成16bit的整数,将所有的配对相加,同时将进位加到校验和的低字节上,我们将得到的校验和定义为a,最后再将校验和取反记为-a,将-a放到校验和字段发送到网络中。 2)如果在数
2017-08-16 19:01:27 1205 1
原创 iptables用法简介
iptables的基本语法格式iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]说明:表名、链名用于指定iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Ju
2017-08-02 20:30:04 372
原创 Linux下MD5移植和编程
1、安装MD5工具首先下载MD5工具源码:进入地址:http://martin.hinner.info/libmd/下载libmd库libmd-0.3.tar.bz2在ubuntu14.04安装libmd工具:#tar -jxvf libmd-0.3.tar.bz2#cd libmd-0.3#./configure#make#make install注意
2017-07-27 11:03:18 1255
原创 Makefile中的wildcard、notdir、patsubst 用法
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。一般我们可以使用“$(wildc
2017-07-26 15:32:41 773
转载 linux下编译安装libcurl(附使用示例)
linux下编译安装libcurl(附使用示例) 说明:在编译任何开源代码前可以先看看README, INSTALL等文件,会提供如何编译的信息。在此教程中通过阅读README和GIT-INFO文件可以得到很多编译安装信息。在GIT-INFO中很明显地说了执行:./buildconf产生configure配置文件。所有不要在这里因为找不到configure文件而懵
2017-06-29 16:42:35 3498
转载 motion的移植和使用
说明:motion主页:http://www.lavrsen.dk/foswiki/bin/view/Motionmotion下载地址:http://sourceforge.net/projects/motion/files/motion%20-%203.2/系统: Ubuntu 12.10开发板:mini2440linux: 2.6.32交叉工具链:4.4
2017-06-20 13:59:53 1597
原创 Linux进程间通信之消息队列
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Li
2017-06-19 18:49:23 331
原创 Linux进程间通信之共享内存
一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到
2017-06-19 18:47:08 266
转载 CGIC编程
本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求。 基础知识 * 1: 使用CGIC的基本思路 * 2: 获取Get请求字符串 * 3: 反转义 * 4: 获取请求中的参数值 进阶训练 * 用CGIC实现文件上传CGIC简明教程1:使用CGIC的基本思路C语言编程是
2017-06-18 14:55:24 1576
原创 CGI编程
很多人都没有听说过CGI,因为现在它的很多功能都被JavaScript代替了,但是在某些地方它的使用性还是不错的,有想要了解的朋友建议参考https://wenku.baidu.com/view/11eb19f90242a8956bece4c2.html,这篇介绍得很详细。
2017-06-17 22:43:56 315
原创 HTTP协议(上):简介
1. Web服务器WWW是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。Web服务器(也称WWW服务器)一般指网站服务器,主要功能是提供网上信息浏览服务。目前最主流的三个Web服务器是Apache、Nginx、IIS。一些使用C/C++开发的开源的http服务器列表在这里:http://www.oschina.net/pr
2017-06-16 11:10:48 616
原创 HTTP协议(中):请求报文和响应报文
1. 请求报文格式1.1 服务器测试代码服务器测试代码:#include #include #include #include #include #include #include int main(){ // 创建通信端点:套接字 int sockfd = socket(
2017-06-16 11:10:18 2150
空空如也
linux v4l2采集不到数据
2017-02-23
linux下x264编译过程中出现的问题
2016-12-19
ubuntu如何才能在线看网页视频
2016-07-26
如何将linux系统制作成镜像
2016-07-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人