分类目录归档:技术

RFID系统介绍

RFID的基本介绍见这里,在实际应用中,通常把RFID技术作为数据采集及自动识别环节,相对于条形码(一维码和二维码)其使用电子标签作为信息采集及自动识别的载体。应用环境及应用的目的不同,其系统组成在细节上会略有不同,但对于应用场景来说,基本上都包括以下这几部分:

  • 标签
  • 标签读写器(桌面、手持等)
  • 电脑(工控机,嵌入式微机等)
  • 应用系统(数据采集及自动识别+应用场景的业务流程+数据存储+数据应用)

 

基本上一个RFID系统需要由上面几部分协同工作,通过有线网络或者无线网络进行数据的通讯及传输,完成应用场景的业务流程及用户需求。如果涉及到自动控制部分,如自动门、自动储衣柜等这些设备,一般还需要通过对数据采集的判断由系统驱动门或衣柜的自动开启与否。

RFID技术近几年依托物联网的火热着实火了一把,各行各业基于RFID技术的解决方案层出不穷,随着电子标签成本的进一步降低,使用RFID技术作为数据采集与自动识别技术融入系统变为可行。一般在选择使用RFID电子标签作为数据采集与自动识别的载体首先要需要考虑应用场景中的电子标签是否可循环使用,并且在流程中需要在电子标签中保存一定的数据,这种情况下建立RFID系统就优于条形码或其他自动识别技术。

开发一套RFID系统首先要了解其系统应用场景,在应用场景下选择或设计合适的RFID电子标签、读写器,有时候还需要布置测试天线是否满足需求。这部分通常叫做硬件选型,在硬件选型的基础上,针对该硬件组合定义读写数据接口,完成数据的生成与自动识别测试。一般在应用级别上都是建立在读写器层面上的,读写器提供有SDK或API,可直接与RFID电子标签进行通讯。剩下的部分就跟软件系统的开发没太大的区别了,一般会涉及PC端的开发,手持PDA的开发,再加上数据的存储就构成一个RFID系统了。

总的来说,不论系统的大小,其涉及到的开发知识还是不少的,有嵌入式开发相关知识,数据库开发相关知识,客户端开发相关知识,GPS相关知识、无线通讯相关知识等不少的东西需要掌握。除此之外硬件选型上也需要考虑诸多因素,像自动识别距离、环境恶劣程度、会不会对现有场景内物品产生干扰、需要怎么样的封装等等。在这两项基础上还得应对变化的需求,需求总是变化的。

简单的对RFID系统介绍这么多,以后再逐步介绍。在我们日常生活中最为常见的RFID的应用就是二代身份证,里面就有一个电子标签。还有比较常见的高速ETC收费也是一个应用。

 

Android常见布局之表格布局

表格布局以行列的方式对子组件进行布局,有些类似很多年前网页制作中的表格布局,在Android中的表格布局使用TableLayout,使用TableRow来定义行,在每行中需要布局多个组件的情况下可以采用这种布局方式,也可以使用这种布局方式来达到表格的效果。

其使用的方式为:


/>
    
    >
    
    
    ...

一个简单的登录例子:3行,第一行为登录用户+登录用户录入,第二行为登录密码+登录密码录入,第三行为登录按钮。


     
          
          
     
     
          
          
     
     
          

TableLayout的比较常用的属性有collapseColumns,stretchColumns,shrinkColumns

collapseColumns 主要用于隐藏TableRow中的列,以0开始,如需隐藏多列,则以逗号分隔;

stretchColumns主要用于拉伸TableRow中的列,以0开始,多列以逗号分隔,如果本身已经没有空间里,则该属性不起作用

shrinkColumns主要用于伸缩TableRow中的列,以0开始,多列以逗号分隔,如果空间没有充满布局,则该属性不起作用,如果行空间充满布局,则设置该属性的列则垂直以内容填充

使用常见的属性,修改上面的代码:


     android:collapseColumns="2">  
     
           
          
          
     
     
          
          
     
     
          

最终运行效果如下图所示:

Android常见布局之线性布局

Android中比较常见的布局有线性布局(LinearLayout),表格布局(TableLayout),相对布局(RelativeLayout)及帧布局(FrameLayout)。

线性布局是将其中的组件按照线性的,以垂直或者水平方向来布局,组件的布局方向可由orientation属性来控制,其具体值有水平(horizontal)及垂直(vertical)。搞清楚布局以后,这玩意就的思考加练习,以各种方式在纸上进行画,或者在心里画,然后编写布局文件来练习,时间长了就自然而然的熟练了。

练习要求:

1、把屏幕分成2部分,上面一部分,下面一部分

2、上面部分分为4列

3、下面部分分为4行

OK,开始练习!(在Eclipse中建立项目测试Layout,修改其res目录下的layout目录中的main.xml文件)

第一步:考虑LinearLayout使用数目,并确定其方向,由于是分为上下两部分,所以最外层layout采用垂直方向布局,里面两个layout分别表示上下;

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout>   <!-- 上面部分 -->
    </LinearLayout>
    <LinearLayout>   <!-- 下面部分 -->
    </LinearLayout>
 </LinearLayout>

第二步:补充内部layout属性及增加组件,这里用TextView组件来填充LinearLayout,不断补充调整,最终布局文件如下:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <LinearLayout android:orientation="horizontal"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_weight="1">
            <TextView
                 android:text="col1"
                 android:gravity="center_horizontal"
                 android:background="#999999"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent" 
                 android:layout_weight="1" />
            <TextView
                 android:text="col2"
                 android:gravity="center_horizontal"
                 android:background="#290fc0"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
                 android:layout_weight="1" />
            <TextView
                 android:text="col3"
                 android:gravity="center_horizontal"
                 android:background="#999999"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
                 android:layout_weight="1" />
            <TextView
                 android:text="col4"
                 android:gravity="center_horizontal"
                 android:background="#290fc0"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
                 android:layout_weight="1" /> 
     </LinearLayout>
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_weight="1">
         <TextView
              android:text="row_one"
              android:textSize="15sp"
              android:background="#290fc0"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_weight="1" />
         <TextView
              android:text="row_two"
              android:textSize="15sp"
              android:background="#999999"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_weight="1" />
         <TextView
              android:text="row_three"
              android:textSize="15sp"
              android:background="#290fc0"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_weight="1" />
          <TextView
              android:text="row_four"
              android:textSize="15sp"
              android:background="#999999"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_weight="1" />
     </LinearLayout>
</LinearLayout>

运行效果如下图所示:

LinearLayout

神器vim的基本使用

对于比较简短的代码通常会使用文本编辑器进行测试,或者在开始学习的时候常常会用到文本编辑器,回想这么多年下来,从开始的Editplus到Notepad++也用过不少,前段时间接触了一下被称为神器的vi/vim,逐渐被其强大的功能及编辑方式所吸引,所以日常中开始逐渐的使用这个编辑器做一些文本或者代码的编写测试,经过一段时间的使用,可以基本上使用这个编辑器做一些简单的操作,对此进行记录,我使用的是gvim 7.3.46 。

(1)常用到的设置,通过在启动设定中进行常规的设置(通过菜单或者在Vim安装目录下通过修改_vimrc文件)进行设置

不需要备份文件(set nobackup )

打开utf-8不出现乱码(set fileencodings=ucs-bom,utf-8,chines)

显示行号(set nu)

配色方案(:colorscheme borland) 这里我使用borland配色方案,可根据自己喜欢进行设置

(2)常用命令

ESC 这个是很常用的,可在vim不同模式间进行转换,可在浏览模式、编辑模式、命令输入模式间快速转换,任何时候按ESC键回到浏览模式。

h,j,k,l 键,分别代表左,下,上,右移动方向键(在浏览模式中适用)

在浏览模式中输入:可进入命令输入模式。

命令:q,退出vim,如当前文本有修改则提示不退出

命令:q!,强制退出vim,如当前文档有修改则放弃保存

命令:wq,保存后退出vim

命令:w, 保存当前的修改

命令:w + filename 可保存当前文本到指定的filename中

命令:num 可跳转至指定的num行

命令:/find str或 :?find str 可查找find str的文本,然后可使用n向下查找,使用N向上查找

在浏览模式中进入编辑模式,i,I,a,A,o,O,i在光标所在前插入文本,I在光标所在行首插入文本,a在光标所在后插入文本,A在光标所在行末插入文本,o在光标所在行下添加一行,O在光标所在行上添加一行。

在浏览模式有一些常用到对文本进行操作的快捷命令

dd 删除当前行,n+dd 删除当前行下n行,比如3dd将删除当前行向下3行

x  删除当前光标所在后的字符,X删除当前光标所在前的字符

yy 复制当前行,n+yy复制当前行下n行

p 粘贴

u 撤销

^ 移动光标到行首

$ 移动光标到行尾

gg 返回文件首行 G 到文件末行行首

Ctrl + f 向后一页

Ctrl + d 向后半页

Ctrl + b 向前一页

Ctrl + u 向前半页

这些都是经常使用的命令,通过这些命令就可以简单的使用vim进行文本的编辑了,这个东西就是一个熟练的活,随着使用时间的增加会越来越熟练,其效率也会越来越高,给我的感觉vim作为比较强悍的编辑器来讲确实在效率上能让人提高很多,其合理的利用了键盘上几乎所有的命令,让你的双手可以在键盘上优雅的跳动,这种全盘操控的感觉让人确实很爽!

 

Eclipse 4 Java常用快捷键

关闭当前打开的编辑窗口(Ctrl + W)

关闭所有已打开的编辑窗口(Ctrl + Shift + W )

格式化代码(Ctrl + Shift + F )

Import 包 (Ctrl + Shift + O)

删除当前行(Ctrl + D)

对选中的文件重命名(Alt + Shift + R)

快速浏览当前类成员变量及方法 (Ctrl + O)

快速定位下一个当前选中的内容所在 (Ctrl + K)

保存当前(Ctrl + S)

查看更多的快捷键(Ctrl + Shift + L )

 

修改快捷键 Window -> Preferences -> General -> Keys  然后修改!