- 博客(409)
- 资源 (16)
- 收藏
- 关注
原创 md5、sha1实例
md5、sha1都是一种hash算法,对于任意长度的数据,经过运算之后得到结果长度都是固定的,并且是不可逆的,也就是说在不知道原始数据的情况下破解是非常困难的,通常用于密码的加密存储、数字签名、文件完整性校验等等,代码如下:#include #include #include void bufdump(char *buf, int len){ while (len--) { pri
2015-12-30 16:07:41
1803
原创 mqtt协议理解(结合libemqtt,subscribe部分)
1. connect在libemqtt代码中,客户端的connect代码是调用的mqtt_connect函数,代码如下:int mqtt_connect(mqtt_broker_handle_t* broker){ uint8_t flags = 0x00; uint16_t clientidlen = strlen(broker->clientid); uint16_t usern
2015-12-29 17:54:59
9561
2
原创 JSON
1. JSON简介JSON是JavaScript Object Notation的缩写,是JavaScript语法的一个子集,类似于XML,用来存储文本信息的一种语法,例如:{ "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }
2015-12-28 10:18:36
561
原创 Linux域名解析得到ip地址
Linux下域名解析得到ip地址代码如下:#include #include #include #include #include int main(int argc, char *argv[]){ struct hostent *p; int i; if (argc < 2) return -1; p = gethostbyname(argv[1]); print
2015-12-10 17:23:25
6654
原创 mqtt协议理解
mqtt协议包格式控制包最多由3部分组成:固定头部、可变头部和payload。1. 固定头部固定头部只有两个字节,格式如下:byte1的高4位就是包的类型,包的类型定义如下:低4位为flag位,有的包需要,有的包不需要:byte2为剩余数据的长度,数据是包含可变头部和payload的。这个长度如果是单个字节的话,最多只能是127,如果数值大于12
2015-12-10 17:12:14
2758
原创 mqtt协议
mqtt即Message Queue Telemetry Transport,是基于服务器端、客户端的一个消息传输协议,那么自然分为服务器端和客户端,github主页:https://github.com/mqtt/mqtt.github.io/wiki/software?id=software,这里有很多服务器端、客户端的实现。1. 服务器端mosquittomosquitto源代码
2015-12-04 17:00:37
2006
原创 关于磁盘分区
首先来看几个概念,主分区、扩展分区、逻辑分区。主分区:主分区通常是硬盘的启动分区,通常是硬盘的第一个分区,例如我们常说的"C"盘就是硬盘的主分区。扩展分区:除去主分区外,剩下的分区都被称为扩展分区。逻辑分区:扩展分区是相对于主分区而言的,只是一个概念,并不能直接拿来使用,必须再划分成为逻辑分区,通常的"D"、"E"、"F"盘都是硬盘的逻辑分区,而他们又属于扩展分区。例如,在
2015-12-03 10:24:00
557
转载 Introduction to AT commands and its uses
IntroductionAT commands are instructions used to control a modem. AT is the abbreviation of ATtention. Every command line starts with "AT" or "at". That's why modem commands are called AT commands
2015-11-27 11:40:18
702
原创 什么是2G、3G、4G
什么是GSM?根据通信百科的解释如下:GSM全名为:Global System for Mobile Communications,中文为全球移动通信系统,俗称"全球通",是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技
2015-11-27 10:50:14
1165
原创 getopt函数
getopt函数用于解析命令行参数,Linux中的很多命令都用到了这个函数,函数原型如下:#include int getopt(int argc, char * const argv[], const char *optstring);其中,argc、argv是main函数中传递进来的,而optstring则是用来解析命令行参数个一个字符串,示例如下:#include
2015-11-04 16:00:27
608
原创 gtk events
1. 按钮点击事件代码如下:#include void button_clicked(GtkWidget *widget, gpointer data){ g_print("clicked\n");}int main(int argc, char *argv[]){ GtkWidget *window; GtkWidget *halign; GtkWidget *btn;
2015-10-21 10:59:50
825
原创 gtk dialog
1. message dialogmessage dialog有四种类型,分别是info、warning、question、error,代码示例如下:#include void show_info(GtkWidget *widget, gpointer window){ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WI
2015-10-20 15:04:59
1446
原创 gtk布局
1. GtkFixedGtkFixed是固定控件位置和大小的容器,代码示例如下:#include int main(int argc, char *argv[]){ GtkWidget *window; GtkWidget *fixed; GtkWidget *btn1; GtkWidget *btn2; GtkWidget *btn3; gtk_init(&argc,
2015-10-16 17:16:39
826
原创 gtk学习
紧接着上一篇文章来继续学习gtk。1. 窗口居中显示#include int main(int argc, char *argv[]){ GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WIND
2015-10-13 10:31:06
650
原创 gtk第一个程序
1. 首先是gtk开发环境的安装由于通过源码方式安装gtk开发环境过于复杂,这里就不去介绍了,直接使用命令sudo apt-get install build-essential gnome-devel来安装gtk的开发环境。2. 程序示例代码如下:#include
2015-10-08 16:32:09
579
原创 耳机标准
耳机通常分为两种类型,即headphone和headset,那它们有什么区别呢?其实headset就比headphone多个microphone,也就是常说的3节、4节耳机。3节耳机的插头定义如图所示:从左到右依次为左声道、右声道,GND。而4节耳机多了一个microphone,4节耳机常见的也有两种标准,即国家标准(OMTP)和国际标准(CTIA),它们区别在于mic和G
2015-09-18 16:46:56
2845
原创 Android wakelock
Android wakelock机制是为了防止系统进入suspend或其他低功耗状态,那么首先来看driver API。那么在driver中需要include一个头文件,例如:struct state { struct wakelock wakelock;};init () { wake_lock_init(&state->wakelock, WAKE_LOCK_SUSPEND,
2015-09-17 18:12:48
702
原创 阻塞型I/O
在调用read、write等方法时,如果此时驱动无法满足要求时应该做何处理,例如当调用read系统调用时此时没有数据可读,或者调用write系统调用时没有空间供调用进程写入,调用进程是不会考虑这些事情的,它只是简单的调用read、write系统调用并等待它们的返回,那么这个时候应该阻塞调用进程,使它进入睡眠直到可操作时。那么在driver中使用等待队列来实现,等待队列由一个等待队列头来管理
2015-09-01 17:53:21
557
原创 霍尔器件
霍尔器件是一个磁感应器件,在手机等平台上主要用于例如滑盖手机、翻盖手机等场合,用于控制屏幕的亮、灭。那么如果来写driver呢,这里主要调用input_report_switch来上报事件,当然也可以上报其它键值,上层根据键值来做不同的处理。首先是input设备的注册,注册同其它input设备没有什么不同,这里主要看input设备的setting:input_set_capabil
2015-08-28 14:12:47
1775
原创 Linux select和poll系统调用
很多时候,我们调用read函数从文件描述符中读取数据时,如果此时恰好没有数据可读,read系统调用势必会阻塞住。同样,当调用write函数时,而没有空间供我们写入,write系统调用也会被阻塞住,直到有空间被写入时。那么在这种情况下我们为了不阻塞我们的程序,就需要检查文件描述符是否可读或可写。1. select系统调用首先我们来看一段代码:#include #include in
2015-08-11 17:50:21
1495
原创 Linux 用户和组编程
在Linux中,每个用户都有一个唯一的用户名和用户id。而用户又可以隶属于一个或多个组,每个组也有一个唯一的组名和组id。1. 密码文件/etc/passwd首先来看密码文件,对系统中的每个用户账户,密码文件/etc/passwd都会专门有一行对其进行描述,每一行都包含7个字段,用冒号分割,例如:root:x:0:0:root:/root:/bin/bash登录名:第一个字段是
2015-08-11 11:23:36
714
原创 android kl文件
android kl(key layout)文件是一个映射文件,是标准linux与anroid的键值映射文件,kl文件可以有很多个,但是它有一个使用优先级:/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl/system/u
2015-08-08 16:28:47
14787
原创 Linux 文件相关编程
1. access系统调用access系统调用用于检测所指定的文件访问权限,原型如下:#include int access(const char *pathname, int mode);代码示例如下:#include #include int main(int argc, char *argv[]){ if (access(argv[1], F_OK))
2015-08-03 16:49:27
659
原创 graphviz教程
graphviz是一个开源的图形可视化软件,与其他图形软件所不同,它的理念是“所想即所得”,通过dot语言来描述并绘制图形。首先是安装,在ubuntu下,可以直接使用命令sudo apt-get install graphviz命令来安装,当然也可以从源码来安装,源码可以从这里下载:http://www.graphviz.org/pub/graphviz/stable/SOURCES/
2015-07-29 19:30:10
15572
原创 Android early suspend/late resume
early suspend/late resume是Android在标准Linux上增加的一个suspend/resume机制,也就是说标准Linux kernel中是没有这个机制的。early suspend也就是常说的浅睡眠,当用户空间请求内核进入suspend时,early suspend首先被调用,例如常见的会让屏和tp停止工作。首先来看early suspend相关接口函数应该如
2015-07-13 19:30:16
2289
原创 Linux/Android多点触摸协议
关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt,而这里根据实际的例子来理解多点触摸协议。多点触摸协议有两种,A协议和B协议。首先来看A协议,协议上说了报点格式是这样的,以两点为例: ABS_MT_POSITION_X x[0
2015-07-02 18:22:01
7203
原创 图像插值算法(最近临插值算法)
对于图像缩放算法来说,最近临插值算法是最简单的。最近临插值算法的原理是在原图像中找到最近临的一个点,然后把这个点的像素值插入到目标图像中,最近临插值算法优点是算法简单,易于实现,但是缺点是由于相邻像素点的像素值相同,容易出现色块现象。那么如何在原图像中找这个目标点呢,算法公式如下:src_x = dst_x * (src_width / dst_width);src_y = dst_y
2015-06-24 19:25:46
5915
2
原创 Android getevent用法
getevent命令用法如下:Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device] -t: show time stamps -n: don't print newlines -s: print swi
2015-06-16 10:06:43
12411
3
转载 Android Init Language
Android Init Language---------------------The Android Init Language consists of four broad classes of statements,which are Actions, Commands, Services, and Options.All of these are line-orient
2015-06-08 13:59:01
980
转载 Android的init过程(二):初始化语言(init.rc)解析
转载自:http://blog.csdn.net/nokiaguy/article/details/9109491本文使用的软件版本Android:4.2.2Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性。在本文将会详细分析init最重要的一环:解析init.rc文件。init.rc文件并不是普通
2015-06-08 13:54:12
778
原创 libxml2 的一个简单示例
该示例来自:http://www.xmlsoft.org/xml文件如下: John Fleck June 2, 2002 example keyword This is the headline This is the body text. 解析代码代码如下:#include #include #include #include #inc
2015-06-06 11:42:01
1880
转载 libxml2 使用教程
/* 查询节点集 */ xmlXPathObjectPtr getnodeset(xmlDocPtr doc, xmlChar *xpath){ xmlXPathContextPtr context; xmlXPathObjectPtr result; /* 存储查询结果 */ /* 创建一个xpath上下文 */ contex
2015-06-06 11:33:41
7800
转载 XML技术概览
本文整理自w3school上的内容http://www.w3school.com.cn/x.asp。 1、XML简介 当 XML(扩展标记语言)于1998年2月被引入软件工业界时,它给整个行业带来了一场风暴。有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。XML被设计用来传输和存储数据。这与HTML
2015-06-06 11:31:06
917
原创 ia32问题
在64位ubuntu版本上使用mini2440的交叉编译器会出现下面的错误信息:/opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared objec
2015-06-04 23:25:17
739
1
原创 minicom保存uart log
使用minicom也有很长时间了,只用minicom抓过uart log,但是从来没有去保存过这个log,也不知道有这个功能。后来在超级终端中发现有这个功能(传送->捕获文字),想想minicom应该也有这个功能才对,后来搜索找到怎么用了,方法如下:首先打开minicom,然后按一下ctrl + a,再按z键,会出现下面这个界面:看到Capture on/off这项了吗,按下L键,会出现下
2015-06-03 19:36:06
27545
2
原创 为Android增加一个关机命令
首先在external目录下创建一个目录shutdown,然后进入shutdown目录,创建两个文件Android.mk和shutdown.c,增加内容如下:#define LOG_TAG "shutdown"#include #include #include #include #include int main(int argc, char *argv[]){ int
2015-06-02 16:59:38
981
原创 如何引导windows xp和ubuntu 12.04
之前一直使用的ubuntu + 虚拟windows xp的方式,虽然这也没有什么问题,可是有的应用毕竟不能在虚拟windows xp上使用,而且也发现越到后来虚拟的windows使用越慢,所以还是想办法装windows xp + ubuntu双系统的方式。先装上windows,然后再使用U盘方式装上ubuntu 12.04(必须以这个顺序),但是有个问题,以什么方式来引导windows xp和ub
2015-05-14 23:11:51
1818
原创 vim + ctags + cscope + taglist
1. ctags 和 cscopectags下载地址:http://ctags.sourceforge.net下载完成之后,解压,然后执行configure脚本生成Makefile文件,然后make,然后执行sudo make install来安装ctags。cscope官网地址:http://cscope.sourceforge.net,可以在官网找到下载链接。然后解压,同c
2015-05-08 18:30:43
1100
原创 vim 学习
1. 基本的编辑命令学会使用一个编辑器呢,我们先不管它的一些高级特性,先只看最基本的,至少保证我们能够正常使用这个编辑器吧。首先来认识vim编辑器,vim编辑器是一个模式编辑器,也就是说它可以工作在多个模式下,常见的有Normal和Insert模式,当我们打开vim编辑器之后,它最初是在Normal模式下的。再来看我们怎么输入文本呢?在Normal模式下输入字符'i',vim由
2015-05-03 12:34:30
717
原创 V4L2 应用编程
1. 打开设备、关闭设备在V4L2中,打开、关闭设备同打开其他设备没有什么不同。例如:fd = open("/dev/video0", O_RDWR);close(fd);2. 查询设备属性在V4L2编程中,会用到很多的ioctl函数,其中这里会跟一个VIDIOC_QUERYCAP命令,最后一个参数是struct v4l2_capability类型,struct v4l2_
2015-05-01 17:44:36
1493
ARM Architecture Reference Manual
2011-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅