摘要:
GPIO:与单片机类似,GPIO就是芯片的引脚,管脚是可编程的 可对引脚的工作模式进行设置:输入模式(检测输入信号),输出模式(输出0或1),(通过寄存器)高阻状态(常用于AD转换),还有禁止或允许上内部下拉电阻(上拉:管脚通过电阻接高电平,下拉:管脚通过电阻接地,也可以外部接上拉或下拉电阻),还要管脚复用等功能,即通过对内部寄存器的设置使引脚既可以工作在一般模式,作为普通的GPIO口使用,也可已... 阅读全文
摘要:
我们有些时候需要存储一些函数以备后用,最常用的就是C中的Callback。。。但是到了C++年代,函数都放到了类中,想要Callback就有些复杂了。Boost::function封装了一个模版库,它可以接受静态函数,普通函数以及仿函数,为了了解它的原理,我自己试图写一个简单的类。。。我们先看boost中function的使用boost::function<int(int)> func... 阅读全文
摘要:
C可以支持可变参数,所有才会有printf一类的神奇函数。问题是它是怎么实现的?其实看完了va_list/va_start等宏的定义后,才会猛然知道,原来它是这么的简单。其实就是C把所有变量压入一个堆栈,在函数中再按前面的format的指示从堆栈中取出对应的值而已。相关网页:http://ipe.gzu.edu.cn/kszx/jsj/jyjl1/200910/33758.html 上述网页中提到的一个问题是关于可变参数的传递问题,其实它并没有解决。(不可能把printf的所有解析过程重写一遍)这个问题其实非常常见,比如我们的Log想支持可变参数的时候,就很有可能需要传递可变参数Log(con 阅读全文
摘要:
SFINAE(匹配失败不是错误) 当模版函数匹配失败时,如果还有其他选择,就选择其他的重载函数,并且忽略这个编译错误。相关的有boost::enable_if相关网页:http://www.cnblogs.com/coolzgx/archive/2009/12/16/1625425.html 阅读全文
摘要:
Mifare卡是一种非接触式的智能卡,我们了解他们的相关协议。表一 命令格式如下:协议头(Head):2字节,固定填充0xAA,0xBB长度(Length):2字节,从此列后的所有有效字节数(包含XOR) 节点ID(Node ID):2字节,目标节点地址数函数码(Function code):2字节,函数功能码,另见表三数据(Data):00~D0字节,数据位异或(XOR):1字节,从节点ID到最... 阅读全文
摘要:
一、前言:Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:Data0 和 Data1 两根数据线分别传输 0 和 1.现在应用最多的是 26bit,34bit等等。二、韦根数据输出的基本概念:韦根数据输出由二根线组成,分别是 DATA0 和 DATA1 ;... 阅读全文
摘要:
1 使用:一直以来习惯了使用printf函数,但是对于可变参数没有深入研究过,觉得可变参数是一个神奇的技术^0^。。。工作闲下来的时候,想研究研究看可变参数的使用和原理。目前C提供的可变参数的申明为void function(const char *format, ...);这样就可以在function中使用可变参数C提供了几个宏用于使用可变参数va_listva_startva_argva_en... 阅读全文
摘要:
在Java中,继承类可以使用super访问基类中的数据变量Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--classA{inti=-1;}classBextendsA{voidprintSuperI(){System.out.println(super... 阅读全文
摘要:
编译程序一般划分为1 词法分析 -- 输入源程序,对源程序的字符串进行扫描和分解,得到一个个单词(token)2 语法分析 -- 按照语法规则,确定输入串是否符合此规则3 语义分析及中间代码产生 -- 在语法分析的基础上分析含义,并且进行相关的翻译(中间代码)。如很多编译器采用“四元式”作为中间代码,四元式如下所示: 算符 左操作数 右操作数 结果4 优化 -- 优化以上产... 阅读全文