精华内容
下载资源
问答
  • 招聘信息中要求了解移动终端的特性及解决方案,不太清楚特性是的哪方面?
  • 什么是终端终端模拟器

    千次阅读 2018-04-04 21:35:57
    tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console...
    链接:https://blog.csdn.net/ltx06/article/details/52170852

    https://blog.csdn.net/jirryzhang/article/details/70147827

    https://www.google.co.in/search?q=%E5%93%91%E7%BB%88%E7%AB%AF%E6%98%AF%E4%BB%80%E4%B9%88&safe=active&ei=-ePFWrmzC4OP8wWY65ngBw&start=10&sa=N&biw=1366&bih=637



    作者:任皓
    链接:https://www.zhihu.com/question/51478942/answer/212057481
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    tty(teletypewriter)电传机,这边按一个按键,主机端接受到一个数据,主机端传出一个数据,电传机打印一个字符。

    这个是一切终端(terminal)的祖先,输入字符和打印字符是一体的,主机里面运行的叫程序。

    我输入一个字符,主机上接受到一个字符。那我想换行就麻烦了,因为这就是控制字符了,所有要有解释器能把输入来的字符进行分析处理,这个解释器就叫做shell。

    显示器的出现,把输入和输出分离开了。时代的发展,我们不用电传机了,把显示器和键盘插到主机上,显示器负责显示程序的输出,键盘负责输入字符到程序里面去,这两个还是叫做终端。

    因为linux一切皆文件,终端也是文件。那么就可以通过创建文件来虚拟终端,但是这些文件(虚拟终端)必须也要完成把信息输入到主机中,接受主机传出来的数据。

    控制台是直接插到主机上和主机系统交互的终端,直接控制着主机。

    后来不用直接插上了,就是虚拟控制台,特点是还能控制核心的东西,也有被用来指比较低级别的只能处理字符,通过字符控制主机的终端,这个概念就是命令行窗口,这里没有鼠标的事,以此和图形化的终端相区别。

    伪终端(pseudo-terminal)是被xterm这样的终端模拟器程序在主机上运行模拟出来的终端,它由两个终端组成,一个伪终端主人ptmx,一个叫伪终端仆人pts。对终端主人的操作会被传输到终端仆人,反之亦然,多用在远程登录状态,我在电脑上操作远程的主机,就是操作远程主机上的终端主人,而远程主机还以为是一个人在自己的终端上进行操作,那就是终端仆人。主机上的程序告诉终端仆人的信息都会被通过终端主人传给我的电脑。

    ===========

    哑终端是只依赖于主机才能进行处理的终端。哑终端没有处理器、硬盘或软盘,只有键盘、显示器和到主机的通信途径(通常通过一些类型的控制器)。而智能终端有自己的处理器、存储设备以及软件程序。

    --------

    终端Terminal通常是指那些与集中式主机系统(例如IBM大型计算机)相连的“哑”用户设备。终端从用户接收键盘输入,并且将这些输入发送给主机系统。主机系统处理这个用户的键盘输入和命令,然后输出返回并显示在这个终端的屏幕上。个人计算机可以运行称为终端仿真器的一些程序来模仿一个哑终端的工作。

    linux 中ctrl+alt+t  打开一个终端。

    ============

    终端,英文叫做terminal ,通常简称为term ,比如我们在X下的xterm.   

    控制台,英文叫做console.


    要明白这两者的关系,还得从以前的多人使用的计算机开始。
    
    大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。
    
    在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。
    
    在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算 机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机 的设备就叫做终端。  
    
    而控制台又是什么回事呢? 
    
    学机电的人应该知道,一台机床,或者数控设备的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。
    
    请注意它和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是 计算机本身就有的设备,一个计算机只有一个控制台。
    
    计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基 本设备,而终端是附加设备。 
    
    当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。 
    
    计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。  
    
    以上是控制台和终端的历史遗留区别。
    
    现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。
    
    现在说的终端,比如linux中的虚拟终端,都是软件的概念,他用计算机的软件来模拟以前硬件的方式。
    
    比如在linux中,用 alt+f1~f6 可以切换六个虚拟终端,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这叫“虚拟终端”的原因。
    
    当然,现在的linux也可以通过串口 线,连接一个真正的终端,现在这种终端设备已经非常罕见了,但是还存在,只是一般人很难见到。也有人利用以前的老电脑(386,486)装上一个串口通信 软件,连上一台计算机,来模拟一个终端来用。这样可以达到一台电脑多人使用的目的。
    
    简单的说,能直接显示系统消息的那个终端称为控制台,其他的则称为终端。
    
    但是在linux系统中,这个概念也已经模糊化了。
    
    比如下面这条命令:echo "hello,world" > /dev/console  这条命令的目的是将"hello,world"显示到控制台上/dev/console是控制台设备的设备名。
    
    在linux中,在字符模式下,你无论在哪个虚拟终端下执行这条命令,字符hello,world都会显示在当前的虚拟终端下。也就是说,linux把当前的终端当作控制台来看待。
    
    可见,linux中已经完全淡化了控制台和终端的区别。
    
    但是在其他的UNIX类系统中,却很明显的有虚拟终端和控制台的区别。比如 freeBSD系统。
    
    在freebsd中,只有第一个“终端”才是真正的控制台。(就是说按alt+f1得到的那个虚拟终端) ,你无论在哪个虚拟终端上执行上面的那条命令(哪怕是通过网络连接的伪终端上执行这条命令)。hello,world字符总会显示到第一个“终端”也就是 真正的控制台上。
    
    另外,其他的一些系统内部信息,比如哪个用户在哪个终端登陆,系统有何严重错误警告等信息,全都显示在这个真正的控制台上。在这里,就明显的区分了终端和控制台的概念。
    
    其他UNIX中也是这样的。比如Tru64 unix 在X下有一个控制台模拟软件,你无论在哪里输入echo "hello,world" > /dev/console命令,hello,world总会显示在这个控制台模拟器中。
    
    我们在X界面下用的那些输入命令的软件,比如xterm ,rxvt, gnome-terminal等等,都应该被称为终端模拟软件。请注意它和控制台模拟软件的区别。
    
    linux中好象没有控制台模拟软件。在X中的终端模拟软件中输入的echo "hello,world">/dev/console 命令的输出信息,都会输出到启动该X服务器的虚拟终端上。比如,你用字符方式登陆系统。进入第一个虚拟终端,然后startx启动X服务器。再打开 xterm 来输入echo"hello,world">/dev/console 命令,那么字符串hello,world就显示在第一个虚拟终端上。你按ctrl+alt+f1,回到那个启动X服务器的终端,就可以看到hello, world字符串。 
    
    现在该明白终端和控制台的区别了吧。
    
    再简单的说,控制台是直接和计算机相连接的原生设备,终端是通过电缆、网络等等和主机连接的设备。
    
    在以前的硬件终端设备中,由于生产厂家不同,所遵循的标准不同,因此有不同的型号标准。比如vt100等。这里的vt100就是一个标准,那么现在我 们所说的终端,往往不是真正的硬件终端了,而是终端模拟软件了,因此不同的终端模拟软件可能符合不同的标准,还有一些终端模拟软件符合很多种不同终端的标准。比如gnome的终端模拟软件gnome-terminal,他提供好几中标准可供用户选择。用户只要设置一下就可以了。
    
    现在,由于原先的这些设备在我们的视线中渐渐淡出,控制台和终端的概念也慢慢谈化。
    
    普通用户可以简单的把终端和控制台理解为:可以输入命令行并显示程序运行过程中的信息以及程序运行结果的窗口。不必要严格区分这两者的差别。
    
    ——by:http://blog.csdn.net/caomiao2006/article/details/8791775
    
    ******************************************************************华丽分割线********************************************************
    
    从历史角度看,终端刚开始就是终端机,配有打印机,键盘,带有一个串口,通过串口传送数据到主机端,然后主机处理完交给终端打印出来。
    那么现在终端也就是键盘+显示器。但是不同的设备可能协议不同,要操作系统怎么识别呢?简单。就像linux 的虚拟文件系统一样,抽象出一层就可以了。
    tty层横空出世,tty的一边是操作系统,一边是不同的设备驱动。大家知道,在linux下所有的设备都是文件,那么假设我们要打印到显示器,只要write到显示器对应的tty层的文件,然后它自己去匹配合适的驱动,这部分就不是系统考虑的问题了。
    现在的终端还是实体(也就是有实际的硬件),只不过由tty层做了逻辑抽象。
    但是随着互联网的兴起,人们有了远程使用计算机的要求,于是终端仿真系统诞生了。把本地PC当成是一个终端,远程的计算机当成是主机。由软件模拟硬件终端的工作过程(无非就是编码格式,电位等等,设计组成原理等)。比如现在嵌入式开发,不就是把个人PC当作输出输出工具,由开发板做主机么?
    现在的个人计算机常常被仿真成一个终端与主机相连(虽然没让我发现有什么优点,也许是为了本地用户和远程用户的同等地位?)
    人们用终端仿真技术开发了各种的虚拟终端,伪终端等等。相当于PC不在逻辑上处理数据,只是按照行业标准,进行数据传输(应该有编码过程?)和接受显示(解码?)
    此时此刻,终端已经不是狭义的硬件了,它更多的被理解为模拟硬件的软件。
    现在说说tty。之前提到了,抽象为了tty层。为什么叫tty呢?
    Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大。最终,电传打字机被键盘和显示器终端(这里时硬件)所取代,但在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行窗口。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口。
    
    从上面百度百科的定义,可以知道,后来getty就是一个见识TTY/终端的接口,那么这个将操作系统内核和终端连接的层叫什么名字也就呼之欲出了。
    
    ——by:http://blog.chinaunix.net/uid-28596231-id-3516101.html
    
    
    
    
    tty也是一个Unix命令,用来给出当前终端设备的名称。
    终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
    在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
    1.串行端口终端(/dev/ttySn)
        串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上
    2.伪终端(/dev/pty/)
    
    伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。
    例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。telnet主机A就是通过“伪终端”与主机A的登录程序进行通信。
    3.控制终端(/dev/tty)
       如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。
    
    4.控制台(/dev/ttyn, /dev/console)
       在Linux 系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。只有在单用户模式下,才允许用户登录控制台。
    
    5.虚拟终端
       在Xwindow模式下的伪终端.如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。
    
    6.其他类型
    
    Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。
    tty设备包括虚拟控制台,串口以及伪终端设备。
    /dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。
    Text Telephones (TTY)
    聋哑人电话,在手机插入专用设备后支持收发文本,需网络支持,中国网络不支持TTY.
    除聋哑模式外,还支持只听不说(HCO)和只说不听(VCO)两种模式
    ——by:百度百科
    
    **************************************************************华丽分割线************************************************************
    
    
    shell   (计算机壳层)
    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
    
    
    
    
    同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
     PS:在排序算法中,Shell是希尔排序的名称。
    基本上shell分两大类:
    一:图形界面shell(Graphical User Interface shell 即 GUI shell)
    例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linuxshell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
    二:命令行式shell(Command Line Interface shell ,即CLI shell)
    例如:
    bash / sh / ksh / csh(Unix/linux 系统)
    (MS-DOS系统)
    cmd.exe/ 命令提示字符(Windows NT 系统)
    Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)
    传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。
    文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
    shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
    Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
    交互式shell和非交互式shell
    交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
    shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
    shell的类型
    在UNIX中主要有:
    Bourne shell (包括 sh,ksh,and bash)
    Bourne shell ( sh)
    Korn shell ( ksh)
    Bourne Again shell ( bash)
    POSIX shell ( sh)
    C shell (包括 csh and tcsh)
    C shell ( csh)
    TENEX/TOPS C shell ( tcsh)
    Bourne Shell
    首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
    C Shell
    Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
    Korn Shell
    有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
    Bourne Again Shell (bash)
    bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
    POSIX Shell
    POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
    各主要操作系统下缺省的shell:
    AIX下是Korn Shell.
    Solaris缺省的是Bourne shell.
    FreeBSD缺省的是C shell
    HP-UX缺省的是POSIX shell.
    Linux是Bourne Again shell.(即bash)
    Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。
    Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])            ——by:百度百科
    ++++++++++++++++++++++++++++++++++++++++++++++++++++华丽分割线++++++++++++++++++++++++++++++++++++++++++++++++++++++
    我们在终端模拟器中输入命令时,终端模拟器本身并不解释执行这些命令,它只负责输入输出,真正解释执行这些命令的,是shell。

    =================

    那么到底为什么叫哑终端:

    This article seems to be about computer terminals, not the subclass of computer terminals that are dumb.

    I've always understood "dumb terminal" to mean a terminal without "intelligent" capabilities like cursor addressing, bolding, etc. A quick google search confirmed references consistent with my understanding. For example:

    "A display monitor that has no processing capabilities. A dumb terminal is simply an output device that accepts data from the CPU. In contrast, a smart terminal is a monitor that has its own processor for special features, such as bold and blinking characters. Dumb terminals are not as fast as smart terminals, and they do not support as many display features, but they are adequate for most applications." webopedia.

    This is also covered in the computer terminal article.

    I'm also unfamiliar with the definition of a "smart terminal" to be a PC or a "network computer". Any type of computer is not a terminal, by definition. Therefore a smart terminal cannot be a personal or network computer.

    On any Unix-like computer you can define a terminal type to be any number of "smart" terminal types, including vt100. But you also have a choice of setting it to dumb, which means the terminal has very limited capabilities.

    At most, I think the usage of dumb terminal to mean any computer terminal should be a foot note.

    --Serge 06:30, 12 December 2005 (UTC)

    The term "Dumb Terminal" or "Dumb Device" Could also mean that it has very little access or can do very little and is therefore limited in its abilities to process jobs whereas a "intelligent Device" can do far more and sometimes far quicker. — Preceding unsigned comment added by 194.83.71.166 (talk) 12:37, 22 September 2006 (UTC)

    As long as the portion of the article that this article is merged with can be found by searching WikiPedia using the phrase 'dumb terminal' it should be no problem. --mlewis000 11:11, 9 December 2006 (UTC)

    以上是维基百科的说法。


    计算机科学中,哑终端表示一个相对于其他种类比较“聪明”的计算机终端来说,功能较为有限的计算机终端。其具体的含义根据不同的语境(场合)而变化。

    在老式的采用RS-232串行口连接的计算机终端里,哑终端指不能执行诸如“删行”(clearing a line)、“清屏”(clearing a screen)或“控制光标位置”(control cursor position)的一些特殊乱序操作(escape sequences 如 en:ANSI escape code)的计算机终端。在此意义上,哑终端还被称作透明电传打字机glass teletypes),因为它与电传打字机有着类似的有限功能。这类哑终端仍然被现代的类Unix操作系统所支持。可以将系统的环境变量TERM设置为dumbsmartintelligent是指那些能执行乱序操作(escape sequences)的终端。(This type of dumb terminal is still supported on modern Unix-like systems by setting the environment variable TERM to dumbSmart or intelligent terminals are those that have the ability to process the special escape sequences. )

    在更宽的意义上,哑终端包括了所有形式的包含键盘和屏幕的计算机通信设备。包括个人电脑(personal computers)、无盘工作站(diskless workstations)、网络电脑(network computers)、瘦客户端(thin clients)和X终端(X Terminals)。

    哑终端有时候也指任何类型的采用RS-232串行通信方式连接的老式计算机终端

    =====

    发展史

    计算机终端伴随计算机系统的集中处理模式而产生,并随着计算机技术的发展而不断发展。迄今为止,计算技术经历了大型机、中型机、小型机、微型机、个人电脑(PC机)、网络计算等发展时期,终端与计算技术发展相适应,也经历了字符哑终端、图形终端、网络终端等形态。
    在老式的采用RS-232串行通信接口连接的计算机终端里,哑终端从狭义来说,指不能执行诸如“删行(clearing a line)”、“清屏(clearing a screen)”或“控制光标位置(control cursor position)”等特殊换码顺序(escape sequences)操作的计算机终端。在此意义上,哑终端也被称作透明的电传打字机(Telegraphic type-writer,即TTY),因为它与电传打字机有着类似的有限的功能。这种哑终端功能仍然被现代的类Unix操作系统所支持,比如可以将Unix系统的环境变量TERM设置为dumb、smart或intelligent来确定是否支持某些特殊的换码顺序(escape sequences)操作。
    哑终端的“哑”,是因为它只能用来发送、接收和显示字符,不能在它上面运行任何程序、进行任何计算或复杂的交互操作。哑终端没有内部处理器、硬盘或软盘,只有键盘、显示器和连接到主机的通信线路(通常通过串口控制器)。所以哑终端也表述为任何类型的采用RS-232串行通信方式连接的老式计算机终端,其既不处理本地数据,也不运行用户程序,只能通过键盘输入字符、通过显示器屏幕输出字符结果的计算机终端。
    在更宽的意义上,哑终端包括了所有形式的包含键盘和屏幕的计算机通信或外部设备,包括个人电脑(Personal Computers)、无盘工作站(Diskless Workstations)、网络电脑(Network Computers)、瘦客户端(Thin Clients)和X终端(X Terminals)。

    =============

    本章内容

    • 访问命令行

    • 通过Linux控制台终端访问CLI

    • 通过图形化终端仿真器访问CLI

    • 使用GNOME终端仿真器

    • 使用Konsole终端仿真器

    • 使用xterm终端仿真器

    在Linux早期,可以用来工作的只有shell。那时,系统管理员、程序员和系统用户都端坐在Linux控制台终端前,输入shell命令,查看文本输出。如今,伴随着图形化桌面环境的应用,想在系统中找到shell提示符来输入命令都变得困难起来。本章讨论了如何进入命令行环境,带你逐步了解可能会在各种Linux发行版中碰到的终端仿真软件包。

    2.1 进入命令行

    在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI)。CLI只能接受文本输入,也只能显示出文本和基本的图形输出。

    由于这些限制,输出设备并不需要多华丽。通常只需要一个简单的哑终端就可以使用Unix系统。所谓的哑终端无非就是利用通信电缆(一般是一条多线束的串行电缆)连接到Unix系统上的一台显示器和一个键盘。这种简单的组合可以轻松地向Unix系统中输入文本数据,并查看文本输出结果。

    如你所知,如今的Linux环境相较以前已经发生了巨大变化。所有的Linux发行版都配备了某种类型的图形化桌面环境。但是,如果想输入shell命令,仍旧需要使用文本显示来访问shell的CLI。于是现在的问题就归结为一点:有时还真是不容易在Linux发行版上找到进入CLI的方法。

    2.1.1 控制台终端

    进入CLI的一种方法是让Linux系统退出图形化桌面模式,进入文本模式。这样在显示器上就只有一个简单的shell CLI,跟图形化桌面出现以前一样。这种模式称作Linux控制台,因为它仿真了早期的硬接线控制台终端,而且是一种同Linux系统交互的直接接口。

    Linux系统启动后,它会自动创建出一些虚拟控制台。虚拟控制台是运行在Linux系统内存中的终端会话。无需在计算机上连接多个哑终端,大多数Linux发行版会启动5~6个(有时会更多)虚拟控制台,你在一台计算机的显示器和键盘上就可以访问它们。

    2.1.2 图形化终端

    除了虚拟化终端控制台,还可以使用Linux图形化桌面环境中的终端仿真包。终端仿真包会在一个桌面图形化窗口中模拟控制台终端的使用。图2-1展示了一个运行在Linux图形化桌面环境中的终端仿真器。

    {%}

    图 2-1 运行在Linux桌面上的终端仿真器

    图形化终端仿真只负责Linux图形化体验的一部分。完整的体验效果需要借助多个组件来实现,其中就包括图形化终端仿真软件(称为客户端)。表2-1展示了Linux图形化桌面环境的不同组成部分。

    表 2-1 图形界面的组成

    名称

    例子

    描述

    客户端

    图形化终端仿真器,桌面环境,网络浏览器

    请求图形化服务的应用

    显示服务器

    Mir,Wayland Compositor,Xserver

    负责管理显示(屏幕)和输入设备(键盘、鼠标、触摸屏)

    窗口管理器

    Compiz,Metacity,Kwin

    为窗口加入边框,提供窗口移动和管理功能

    部件库

    Athenal(Xaw),X Intrinsics

    为桌面环境中的客户端添加菜单以及外观项

    要想在桌面中使用命令行,关键在于图形化终端仿真器。可以把图形化终端仿真器看作GUI中(in the GUI)的CLI终端,将虚拟控制台终端看作GUI以外(outside the GUI)的CLI终端。理解各种终端及其特性能够提高你的命令行体验。

    2.2 通过Linux控制台终端访问CLI

    在Linux的早期,在启动系统时你只会在显示器上看到一个登录提示符,除此之外就没别的了。之前说过,这就是Linux控制台。它是唯一可以为系统输入命令的地方。

    尽管在启动时会创建多个虚拟控制台,但很多Linux发行版在完成启动过程之后会切换到图形化环境。这为用户提供了图形化登录以及桌面体验。这样一来,就只能通过手动方式来访问虚拟控制台了。

    在大多数Linux发行版中,你可以使用简单的按键组合来访问某个Linux虚拟控制台。通常必须按下Ctrl+Alt组合键,然后按功能键(F1~F7)进入要使用的虚拟控制台。功能键F1生成虚拟控制台1,F2键生成虚拟控制台2,F3键生成虚拟控制台3,F4键生成虚拟控制台4,依次类推。

    说明 Linux发行版通常使用Ctrl+Alt组合键配合F1或F7来进入虚拟控制台。Ubuntu使用F7,而RHEL则使用F1。最好还是测试一下自己所使用的发行版是如何进入虚拟控制台的。

    文本模式的虚拟控制台采用全屏的方式显示文本登录界面。图2-2展示了一个虚拟控制台的文本登录界面。

    {%}

    图 2-2 Linux虚拟控制台登录界面

    注意,在图2-2中第一行文本的最后有一个词tty2。这个词中的2表明这是虚拟控制台2,可以通过Ctrl+Alt+F2组合键进入。tty代表电传打字机(teletypewriter)。这是一个古老的名词,指的是一台用于发送消息的机器。

    说明 不是所有的Linux发行版都会在登录界面上显示虚拟控制台的tty号。

    login:提示符后输入用户ID,然后再在Password:提示符后输入密码,就可以进入控制台终端了。如果你之前从来没有用过这种方式登录,那要注意在这里输入密码和在图形环境中输入不太一样。在图形环境中,输入密码的时候会看到点号或星号,但是在虚拟控制台中,输入密码的时候什么都不会显示。

    登入虚拟控制台之后,你就进入了Linux CLI。记住,在Linux虚拟控制台中是无法运行任何图形化程序的。

    一旦登录完成,你可以保持此次登录的活动状态,然后在不中断活动会话的同时切换到另一个虚拟控制台。你可以在所有虚拟控制台之间切换,拥有多个活动会话。在使用CLI时,这个特性为你提供了巨大的灵活性。

    还有一些灵活性涉及虚拟控制台的外观。尽管虚拟控制台只是文本模式的控制台终端,但你可以修改文字和背景色。

    比如可将终端的背景色设置成白色、文本设置成黑色,这样可让眼睛轻松些。登录之后,有好几种方法可实现这样的修改。其中一种方法是输入命令setterm -inversescreen on,然后按回车键,如图2-3所示。注意,在途中我们使用选项on启用了inversescreen特性。也可以使用选项off关闭该特性。

    {%}

    图 2-3 启用了inversescreen的Linux虚拟控制台

    另一种方法是连着输入两条命令。输入setterm -background white,然后按回车键,接着输入setterm -foreground black,再按回车键。要注意,因为先修改的是终端的背景色,所以可能会很难看清接下来输入的命令。

    在上面的命令中,你不用像inversescreen那样去启用或关闭什么特性。共有8种颜色可供选择,分别是blackredgreenyellowbluemagentacyanwhite(这种颜色在有些发行版中看起来像灰色)。你可以赋予纯文本模式的控制台终端富有创意的外观效果。表2-2展示了setterm命令的一些选项,可以用于增进控制台终端的可读性,或改善外观。

    表 2-2 用于设置前景色和背景色的setterm选项

    选项

    参数

    描述

    -background

    blackredgreenyellow
    bluemagentacyanwhite

    将终端的背景色改为指定颜色

    -foreground

    blackredgreenyellow
    bluemagentacyanwhite

    将终端的前景色改为指定颜色

    -inversescreen

    onoff

    交换背景色和前景色

    -reset

    将终端外观恢复成默认设置并清屏

    -store

    将终端当前的前景色和背景色设置成-reset选项的值

    如果不涉及GUI,虚拟控制台终端访问CLI自然是不错的选择。但有时候需要一边访问CLI,一边运行图形化程序。使用终端仿真软件包可以解决这个问题,这也是在GUI中访问shell CLI的一种流行的方式。接下来的部分将介绍能够提供图形化终端仿真的常见软件包。

    2.3 通过图形化终端仿真访问CLI

    相较于虚拟化控制台终端,图形化桌面环境提供了更多访问CLI的方式。在图形化环境下,有大量可用的图形化终端仿真器。每个软件包都有各自独特的特性及选项。表2-3列举出了一些流行的图形化终端仿真器软件包及其网址。

    表 2-3 流行的图形化终端仿真器软件包

    名称

    网址

    Eterm

    http://www.eterm.org

    Final Term

    http://finalterm.org

    GNOME Terminal

    https://help.gnome.org/users/gnome-terminal/stable

    Guake

    https://github.com/Guake/guake

    Konsole Terminal

    http://konsole.kde.org

    LillyTerm

    http://lilyterm.luna.com.tw/index.html

    LXTerminal

    http://wiki.lxde.org/en/LXTerminal

    mrxvt

    https://code.google.com/p/mrxvt

    ROXTerm

    http://roxterm.sourceforge.net

    rxvt

    http://sourceforge.net/projects/rxvt

    rxvt-unicode

    http://software.schmorp.de/pkg/rxvt-unicode

    Sakura

    https://launchpad.net/sakura

    st

    http://st.suckless.org

    Terminator

    https://launchpad.net/terminator

    Terminology

    http://www.enlightenment.org/p.php?p=about/terminology

    tilda

    http://tilda.sourceforge.net/tildaabout.php

    UXterm

    http://manpages.ubuntu.com/manpages/gutsy/man1/uxterm.1.html

    Wterm

    http://sourceforge.net/projects/wterm

    xterm

    http://invisible-island.net/xterm

    Xfce4 Terminal

    http://docs.xfce.org/apps/terminal/start

    Yakuake

    http://extragear.kde.org/apps/yakuake

    尽管可用的图形化终端仿真器软件包不少,但本章只重点关注其中常用的三个。它们分别是GNOME Terminal、Konsole Terminal和xterm,通常都会默认安装在Linux发行版中。

    2.4 使用GNOME Terminal仿真器

    GNOME Terminal是GNOME桌面环境的默认终端仿真器。很多发行版,如RHEL、Fedora和CentOS,默认采用的都是GNOME桌面环境,因此GNOME Terminal自然也就是默认配备了。不过其他一些桌面环境,比如Ubuntu Unity,也采用GNOME Terminal作为默认的终端仿真软件包。它使用起来非常简单,是Linux新手的不错选择。这部分将带你学习如何访问、配置和使用GNOME终端仿真器。

    2.4.1 访问GNOME Terminal

    每个图形化桌面环境都有不同的方式访问GNOME终端仿真器。本节讲述了如何在GNOME、Unity和KDE桌面环境中访问GNOME Terminal。

    说明 如果你使用的桌面环境并没有在表2-3中列出,那你就得逐个查看桌面环境中的各种菜单来找到GNOME终端仿真器。它在菜单中通常叫作Terminal。

    在GNOME桌面环境中,访问GNOME Terminal非常直截了当。找到左上角的菜单,点击Applications,从下拉菜单中选择System Tools,点击Terminal。如果写成简写法的话,这一系列操作就像这样:Applications ➪ System Tools ➪ Terminal。

    图2-1就是一张GNOME Terminal的图片。它展示了在CentOS发行版的GNOME桌面环境中访问GNOME Terminal。

    在Unity桌面环境中,访问GNOME终端得费点事。最简单的方法是Dash ➪ Search,然后输入Terminal。GNOME终端会作为一个名为Terminal的应用程序显示在Dash区域。点击对应的图标就可以打开GNOME终端仿真器了。

    窍门 在一些Linux发行版的桌面环境中,例如Ubuntu的Unity,可以使用快捷键Ctrl+Alt+T快速访问GNOME终端。

    在KDE桌面环境中,默认的仿真器是Konsole终端仿真器。必须通过菜单才能访问。找到屏幕左下角名为Kickoff Application Launcher的图标,然后依次点击Application ➪ Utilities ➪ Terminal。

    在大多数桌面环境中,可以创建一个启动器(launcher)访问GNOME Terminal。启动器是桌面上的一个图标,可以利用它启动一个选定的应用程序。这是个很棒的特性,可以让你在桌面环境中快速访问终端仿真器。如果不想使用快捷键或是你的桌面环境中无法使用快捷键,这个特性就尤为有用。

    例如,在GNOME桌面环境中,要创建一个启动器的话,可以在桌面中间单击右键,在出现的下拉菜单中选择Select Create Launcher...,然后会打开一个名为Create Launcher的窗口。在Type字段中选择Application。在Name字段中输入图标的名称。在Command字段中输入gnome-terminal。点击Ok,保存为新的启动器。一个带有指定名称图标的启动器就出现在了桌面上。双击就可以打开GNOME终端仿真器了。

    说明 在Command字段中输入gnome-terminal时,输入的实际上是用来启动GNOME终端仿真器的shell命令。在第3章中会学到如何为gnome-terminal这类命令加入特定的命令行选项来获得特殊的配置,以及如何查看可用的选项。

    在GNOME终端仿真器应用中,菜单提供了多种配置选项,应用本身也包含了很多可用的快捷键。了解这些选项能够增进GNOME Terminal CLI的使用体验。

    2.4.2 菜单栏

    GNOME Terminal的菜单栏包含了配置选项和定制选项,可以通过它们使你的GNOME Terminal符合自己的使用习惯。接下来的几张表格简要地描述了菜单栏中各种配置选项以及对应的快捷键。

    说明 在阅读书中所描述的这些GNOME Terminal菜单选项时,要注意的是,这和你所使用的Linux发行版的GNOME Terminal的菜单选项可能会略有不同。因为一些Linux发行版采用的GNOME Terminal的版本比较旧。

    表2-4展示了GNOME Terminal的File菜单下的配置选项。File菜单中包含了可用于创建和管理所有CLI终端会话的菜单项。

    表 2-4 File菜单

    名称

    快捷键

    描述

    Open Terminal

    Shift+Ctrl+N

    在新的GNOME Terminal窗口中启动一个新的shell会话

    Open Tab

    Shift+Ctrl+T

    在现有的GNOME Terminal窗口的新标签中启动一个新的shell会话

    New Profile

    定制会话并将其保存为配置文件(profile),以备随后再次使用

    Save Contents

    将回滚缓冲区(scrollback buffer)中的内容保存到文本文件中

    Close Tab

    Shift+Ctrl+W

    关闭当前标签中的会话

    Close Window

    Shift+Ctrl+Q

    关闭当前的GNOME Terminal会话

    注意,和在网络浏览器中一样,你可以在GNOME Terminal会话中打开新的标签来启动一个全新的CLI会话。每个标签中的会话均被视为独立的CLI会话。

    窍门 并不是非得点击菜单项才能进入File菜单中的选项。大多数选项可以通过在会话区域中点击右键找到。

    表2-5所展示的Edit菜单中的菜单项用于处理标签内的文本内容。可以使用鼠标在会话窗口中的任意位置复制、粘贴文本。

    表 2-5 Edit菜单

    名称

    快捷键

    描述

    Copy

    Shift+Ctrl+C

    将所选的文本复制到GNOME的剪贴板中

    Paste

    Shift+Ctrl+V

    将GNOME剪贴板中的文本粘贴到会话中

    Paste Filenames

     

    粘贴已复制的文件名和对应的路径

    Select All

    选中回滚缓冲区中的全部输出

    Profiles

    添加、删除或修改GNOME Terminal的配置文件

    Keyboard Shortcuts

    创建快捷键来快速访问GNOME Terminal的各种特性

    Profile Preferences

    编辑当前会话的配置文件

    Paste Filenames菜单项只有在最新版的GNOME Terminal中才能找到,因此在你的系统中可能会看不到。

    表2-6所展示的View菜单中包含用于控制CLI会话窗口外观的菜单项。这些选项能够为视力有缺陷的用户带来帮助。

    表 2-6 View菜单

    名称

    快捷键

    描述

    Show Menubar

    打开/关闭菜单栏

    Full Screen

    F11

    打开/关闭终端窗口全桌面显示模式

    Zoom In

    Ctrl++

    逐步增大窗口显示字号

    Zoom Out

    Ctrl+-

    逐步减小窗口显示字号

    Normal Size

    Ctrl+0

    恢复默认字号

    要注意的是,如果关闭了菜单栏显示,会话的菜单栏就会消失。不过你可以在任何一个终端会话窗口中点击右键,然后选择Show Menubar,轻而易举地找回菜单栏。

    表2-7所展示的Search菜单中的菜单项用于在终端会话中进行简单的搜索。这些搜索类似于在网络浏览器或字处理软件中进行的操作。

    表 2-7 Search菜单

    名称

    快捷键

    描述

    Find

    Shift+Ctrl+F

    打开Find窗口,提供待搜索文本的搜索选项

    Find Next

    Shift+Ctrl+H

    从终端会话的当前位置开始向前搜索指定文本

    Find Previous

    Shift+Ctrl+G

    从终端会话的当前位置开始向后搜索指定文本

    表2-8所展示的Terminal菜单中的菜单项用于控制终端仿真会话的特性。这些菜单项并没有对应的快捷键。

    表 2-8 Terminal菜单

    名称

    描述

    Change Profile

    切换到新的配置文件

    Set Title

    修改标签会话的标题

    Set Character Encoding

    选择用于发送和显示字符的字符集

    Reset

    发送终端会话重置控制码

    Reset and Clear

    发送终端会话重置控制码并清除终端会话显示

    Window Size List

    列出可用于调整当前终端窗口大小的列表

    Reset选项非常有用。某天,你可能不小心让终端会话显示了一堆杂乱无章的字符和符号。这时候根本识别不出什么文本信息。这通常是因为在屏幕上显示了非文本文件。可以通过选择Reset或Reset and Clear让屏幕恢复正常。

    表2-9所展示的Tabs菜单中的菜单项用于控制标签的位置以及活动标签的选择。这个菜单只有在打开多个标签会话时才会出现。

    表 2-9 Tabs菜单

    名称

    快捷键

    描述

    Next Tab

    Ctrl+PageDown

    使下一个标签成为活动标签

    Previous Tab

    Ctrl+PageUp

    使上一个标签成为活动标签

    Move Tab Left

    Shift+Ctrl+PageUp

    将当前标签移动到前一个标签的前面

    Move Tab Right

    Shift+Ctrl+PageDown

    将当前标签移动到下一个标签的后面

    Detach Tab

    删除该标签并使用该标签会话启动一个新的GNOME Terminal窗口

    Tab List

    列出当前正在运行的标签(选择一个标签,转入对应的会话)

    Terminal List

    列出当前正在运行的终端(选择一个终端,转入对应的会话。当打开多个窗口会话的时候才会出现该菜单项)

    最后,Help菜单包含了两个菜单项。Contents提供了一份完整的GNOME Terminal手册,可供你研究GNOME Terminal的各个菜单项和特性。About菜单项可以告诉你当前运行的GNOME Terminal的版本。

    除了GNOME终端仿真软件包,另一个常用的软件包是Konsole Terminal。两者在很多方面类似。不过两者间存在的差异还是让我们很有必要单独开辟一节来讲解的。

    2.5 使用Konsole Terminal仿真器

    KDE桌面项目拥有自己的终端仿真软件包:Konsole Terminal。Konsole软件包具备基本的终端仿真特性,另外还包含了一些更高级的图形应用程序功能。本节描述了Konsole Terminal的特性及其用法。

    2.5.1 访问Konsole Terminal

    Konsole Terminal是KDE桌面环境的默认终端仿真器,可以通过KDE环境的菜单系统轻而易举地访问到。在其他桌面环境中,访问Konsole Terminal就要麻烦一点了。

    在KDE桌面环境中,可以通过点击屏幕左下角名为Kickoff Application Launcher的图标来访问Konsole Terminal。然后点击Applications ➪ System ➪ Terminal (Konsole)。

    说明 你可能会在KDE菜单环境中看到两个终端菜单项。如果是这样的话,下方包含文字Konsole的Terminal菜单项就是Konsole终端。

    在GNOME桌面环境中,通常并没有默认安装Konsole终端。如果已经安装过的话,你可以通过GNOME的菜单系统进行访问。在屏幕左上角点击Applications ➪ System Tools ➪ Konsole。

    说明 你的系统中可能并没有安装Konsole终端仿真软件包。如果想安装的话,请阅读第9章来学习如何在命令行中安装软件。

    如果在Unity桌面环境中安装了Konsole,可以通过Dash ➪ Search,然后输入Konsole进行访问。Konsole Terminal会作为一个名为Konsole的应用程序显示在Dash区域。点击对应的图标打开Konsole终端仿真器。

    图2-4展示了在CentOS Linux发行版的KDE桌面环境中访问Konsole Terminal。

    {%}

    图 2-4 Konsole Terminal

    记住,在大多数桌面环境中,可以创建一个启动器来访问如Konsole Terminal这样的应用程序。需要用于启动器启动Konsole终端仿真器的命令是konsole。另外,如果已经安装过Konsole Terminal的话,可以在其他的终端模拟器中输入konsole,然后按回车键来启动。

    和GNOME Terminal类似,Konsole Terminal也通过菜单提供了一些配置选项和快捷键。接下来将会逐一讲述这些选项。

    2.5.2 菜单栏

    Konsole Terminal的菜单栏包含了查看和更改终端仿真会话特性所需的配置及定制化选项。下面的几张表格简要描述了菜单选项及其快捷键。

    窍门 在活动会话区域中点击右键时,Konsole Terminal会弹出一个简单的菜单。一些菜单项可以在这个非常方便的菜单中找到。

    表2-10中所展示的File菜单提供了可用于在当前窗口或新窗口中打开新标签的选项。

    表 2-10 File菜单

    名称

    快捷键

    描述

    New Tab

    Ctrl+Shift+N

    在现有的Konsole Terminal窗口的新标签中启动一个新的shell会话

    New Window

    Ctrl+Shift+M

    在新的Konsole Terminal窗口中启动一个新的shell会话

    shell

    打开采用默认配置文件的shell

    Open Browser Here

    打开默认的文件浏览器应用

    Close Tab

    Ctrl+Shift+W

    关闭当前标签中的会话

    Quit

    Ctrl+Shift+Q

    退出Konsole Terminal仿真应用

    在首次启动Konsole Terminal时,菜单中唯一列出的配置文件就是shell。随着越来越多的配置文件被创建及保存,它们的名字都会出现在菜单中。

    说明 在阅读书中所描述的Konsole Terminal菜单项时,要注意的是,这可能会和你使用的Linux发行版中的Konsole Terminal有所不同。因为一些Linux发行版中采用的Konsole Terminal仿真软件包的版本比较旧。

    表2-11中所展示的Edit菜单提供了可用于处理会话中的文本内容的选项。除此之外,可以管理标签名称的选项也在此列。

    表 2-11 Edit菜单

    名称

    快捷键

    描述

    Copy

    Ctrl+Shift+C

    将选择的文本复制到Konsole的剪贴板中

    Paste

    Ctrl+Shift+V

    将Konsole剪贴板中的文本粘贴到会话中

    Rename Tab

    Ctrl+Alt+S

    修改标签会话的标题

    Copy Input To

    开始/停止将会话输入复制到所选的其他会话中

    Clear Display

    清除终端会话中的内容

    Clear & Reset

    清除终端会话中的内容并发送终端会话重置控制码

    Konsole有一种很好的方法来跟踪每个标签会话中正在进行的活动。你可以使用Rename Tab菜单项对标签进行命名,使其符合当前执行的任务。这可以帮助我们知道那些打开的标签究竟是干什么的。

    表2-12所展示的View菜单中的菜单项用于控制Konsole Terminal窗口中单个会话的视图。除此之外,可监视终端会话活动的选项也在此列。

    表 2-12 View菜单

    名称

    快捷键

    描述

    Split View

    控制显示在Konsole Terminal窗口中的多个标签会话

    Detach View

    Ctrl+Shift+H

    删除一个标签会话并使用该标签中的会话启动一个新的Konsole Terminal窗口

    Show Menu Bar

    打开/关闭菜单栏

    Full Screen Mode

    Ctrl+Shift+F11

    打开/关闭终端窗口的全屏模式

    Monitor for Silence

    Ctrl+Shift+I

    打开/关闭无活动标签(tab silence)的特殊消息

    Monitor for Activity

    Ctrl+Shift+A

    打开/关闭活动标签(tab activity)的特殊消息

    Character Encoding

    选择用于发送和显示字符的字符集

    Increase Text Size

    Ctrl++

    逐步增大窗口显示字号

    Decrease Text Size

    Ctrl+-

    逐步减小窗口显示字号

    菜单项Monitor for Silence用于指明无活动标签。如果在当前标签会话内超过10秒钟没有出现新的文本内容,那该标签就成了无活动标签。这允许你在等待应用程序输出时切换到另一个标签。

    由菜单项Monitor for Activity所打开的活动标签功能会在标签会话中出现新的文本内容时发出一条消息。这一选项能让你注意到应用程序产生了新的输出。

    Konsole为每个标签保存了一个叫作回滚缓冲区的历史记录。这个历史记录中包含了已经不在当前终端可视区域中的文本内容。默认的是在回滚缓冲区内保存最近的1000行文本。表2-13所展示的Scrollback菜单中的菜单项可用于查看该缓冲区。

    表 2-13 Scrollback菜单

    名称

    快捷键

    描述

    Search Output

    Ctrl+Shift+F

    打开Konsole Terminal窗口底部的Find窗口,提供回滚文本搜索选项

    Find Next

    F3

    在回滚缓冲区历史记录中查找下一个匹配的文本

    Find Previous

    Shift+F3

    在回滚缓冲区历史记录中查找上一个匹配的文本

    Save Output

    将回滚缓冲区中的内容保存在一个文本文件或HTML文件中

    Scrollback Options

    打开Scrollback Options窗口来配置回滚缓冲区选项

    Clear Scrollback

    删除回滚缓冲区中的内容

    Clear Scrollback & Reset

    Ctrl+Shift+X

    删除回滚缓冲区中的内容并重置终端窗口

    你也可以使用窗口可视区域中的滚动条向后翻看回滚缓冲区中的内容。另外,也可以使用Shift+UpArrow逐行向后翻看,或是使用Shift+PageUp逐页(24行)向后翻看。

    表2-14中所展示的Bookmarks菜单中的菜单项可用于管理Konsole Terminal窗口中的书签。书签能够保存活动会话的目录位置,让你随后可以在相同会话或新的会话中轻松返回之前的位置。

    表 2-14 Bookmark菜单

    名称

    快捷键

    描述

    Add Bookmark

    Ctrl+Shift+B

    在当前目录位置上创建新的书签

    Bookmark Tabs as Folder

    为当前所有的终端标签会话创建一个新的书签

    New Bookmark Folder

    创建新的书签文件夹

    Edit Bookmarks

    编辑已有的书签

    表2-15所展示的Settings菜单中的菜单项可用于定制和管理配置文件。另外,你还可以为当前的标签会话再添加些许功能。这些菜单项并没有对应的快捷键。

    表 2-15 Settings菜单

    名称

    描述

    Change Profile

    将所选的配置文件应用于当前标签

    Edit Current Profile

    打开Edit Profile窗口,提供配置文件配置选项

    Manage Profiles

    打开Manage Profile窗口,提供配置文件管理选项

    Configure Shortcuts

    创建Konsole Terminal命令快捷键

    Configure Notifications

    创建定制化的Konsole Terminal方案及会话

    Configure Notifications项允许将会话中发生的特定事件与不同的行为关联起来。当出现某个事件时,就会触发指定的行为(或一系列行为)。

    表2-16中所展示的Help菜单中的菜单项给出了完整的Konsole手册(如果你的Linux发行版中已经安装了KDE手册)以及标准的About Konsole对话框。

    表 2-16 Help菜单

    名称

    快捷键

    描述

    Konsole Handbook

    包含了完整的Konsole手册

    What's This?

    Shift+F1

    包含了终端部件的帮助信息

    Report Bug

    打开Submit Bug Report(提交bug报告)表单

    Switch Application Language

    打开Switch Application's Language(切换应用程序语言)表单

    About Konsole

    显示当前Konsole Terminal的版本

    About KDE

     

    显示当前KDE桌面环境的版本

    有一份相当全面的文档可以帮助你使用Konsole终端仿真器软件包。除此之外,在你碰到程序故障的时候,还可以使用Bug Report表单向Konsole Terminal开发人员提交问题。

    相较于另一个流行的软件包xterm,Konsole终端仿真器软件包算是年轻一代了。在下一节中,我们将探望一下“老古董”xterm。

    2.6 使用xterm终端仿真器

    最古老也是最基础的终端仿真软件包是xterm。xterm软件包在X Window出现之前就有了,通常默认包含在发行版中。

    尽管xterm是功能完善的仿真软件包,但是它并不需要太多的资源(如内存)来运行。正因为如此,在专门为老旧硬件设计的Linux发行版中,xterm非常流行。有些图形化桌面环境就用它作为默认终端仿真器软件包。

    xterm软件包尽管没有提供太多炫目的特性,但是却把一件事做到了极致:它能够仿真旧式终端,如DEC公司的VT102、VT220以及Tektronix 4014终端。对于VT102和VT220终端,xterm甚至能够仿真VT序列色彩控制码,让你可以在脚本中使用色彩。

    说明 DEC VT102及VT220盛行于20世纪80年代和90年代初期,用于连接Unix系统的哑文本终端。VT102/VT220不仅能显示文本,还能够使用块模式图形显示基本的图形结构。由于在很多商业环境中这种终端访问方式仍在使用,因而使得VT102/VT220仿真依然流行。

    图2-5展示了运行在图形化Linux桌面中的xterm。可以看出,它非常朴素。

    {%}

    图 2-5 xterm终端

    如今得花点心思才能把xterm终端仿真器找出来。它常常并没有被包含在桌面环境的菜单中。

    2.6.1 访问xterm

    在Ubuntu的Unity桌面中,xterm是默认安装的。可以通过Dash ➪ Search,然后输入xterm进行访问。xterm会作为一个名为XTerm的应用出现在Dash区域。点击对应的图标就可以打开xterm终端仿真器。

    说明 在Ubuntu中搜索xterm时,你可能会看到另一个叫作UXTerm的终端。这只不过是加入了Unicode支持的xterm仿真器软件包而已。

    GNOME和KDE桌面环境中并没有默认安装xterm。你得先安装它(可以参阅第9章安装软件包)。安装完成之后,你必须从另一个终端仿真器中启动xterm。打开一个终端仿真器进入CLI,输入xterm并按回车键。记住,也可以创建桌面启动器来启动xterm。

    xterm包让你可以使用命令行参数设置自己的特性。下面的内容将讨论这些特性以及如何进行修改。

    2.6.2 命令行参数

    xterm的命令行参数非常多。你可以控制大量的特性来对终端仿真实施定制,例如允许或禁止某种VT仿真。

    说明 xterm包含数量众多的配置选项,在此无法一一列举。在bash手册中有大量的文档可供参考。第3章中会讲到如何阅读bash手册。另外,xterm开发团队也在其网站上提供了很好的帮助:http://invisible-island.net/xterm/

    可以通过向xterm命令加入参数来调用某些配置选项。例如,要想让xterm仿真DEC VT100终端,可以输入命令xterm -ti vt100,然后按回车键。表2-17给出了一些可以配合xterm终端仿真器使用的参数。

    表 2-17 xterm命令行参数

    参数

    描述

    -bg color

    指定终端背景色

    -fb font

    指定粗体文本所使用的字体

    -fg color

    指定文本颜色

    -fn font

    指定文本字体

    -fw font

    指定宽文本字体

    -lf filename

    指定用于屏幕日志的文件名

    -ms color

    指定文本光标颜色

    -name name

    指定标题栏中的应用程序名称

    -ti terminal

    指定要仿真的终端类型

    一些xterm命令行参数使用加号(+)或减号(-)来指明如何设置某种特性。加号表示启用某种特性,减号表示关闭某种特性。不过反过来也行。加号可以表示禁止某种特性,减号可以表示允许某种特性,例如在使用bc参数的时候。表2-18中列出了可以使用+/-命令行参数设置的一些常用特性。

    表 2-18 xterm +/-命令行参数

    参数

    描述

    ah

    启用/禁止文本光标高亮

    aw

    启用/禁止文本行自动环绕

    bc

    启用/禁止文本光标闪烁

    cm

    启用/禁止识别ANSI色彩更改控制码

    fullscreen

    启用/禁止全屏模式

    j

    启用/禁止跳跃式滚动

    l

    启用/禁止将屏幕数据记录进日志文件

    mb

    启用/禁止边缘响铃

    rv

    启用/禁止图像反转

    t

    启用/禁止Tektronix模式

    要注意,不是所有的xterm实现都支持这些命令行参数。你可以在xterm启动后,使用-help参数来确定你所使用的xterm实现支持哪些参数。

    现在你已经了解了三种终端仿真器软件包,重要的问题是:哪个是最好的终端仿真器。对于这个问题,并没有权威的答案。要使用哪个仿真器软件包取决于你的个人需求。不过,能有这么多选择总是好事。

    https://zh.wikipedia.org/wiki/Linux%E5%8E%86%E5%8F%B2




































    展开全文
  • 本文针对手指静脉识别中的图像采集,优化图像质量等难点问题,自主设计、研发出一套低成本的手指静脉采集终端。 首先,基于对课题的需求的仔细分析和探讨,提出了手指静脉识别系统的总体设计方案,并确定了设计方案...

    手指静脉图像采集终端的设计和实现

    摘要

    手指静脉识别是新兴的生物特征识别技术,以其独特的优势得到了国内外生物特征识别领域研究人员的广泛关注。本文针对手指静脉识别中的图像采集,优化图像质量等难点问题,自主设计、研发出一套低成本的手指静脉采集终端。

    首先,基于对课题的需求的仔细分析和探讨,提出了手指静脉识别系统的总体设计方案,并确定了设计方案的可行性。在此基础上分析并设计了系统的采集装置,包括近红外成像系统、光源系统和上位机的设计。

    其次,为了提高采集图像效果,对光源选择和电路设计进行了研究。选用850nm的近红外LED作为光源,并加入光源接收电路,根据接收的红外线强度反馈调节光源的发射强度;ARM Cortex-M3芯片控制摄像头获取图像并在LCD显示预览、且可通过USB上传图像给上位机;上位机提供接口调节摄像头参数,以采集更佳的手指静脉图像。

    最后,用实验测试图像采集终端的工作性能。测试表明,实现的图像采集终端能实时采集到较清晰的手指静脉图像,性价比高,为实现小型商用的图像采集终端提供了一种可行的方案。

     

    关键字:手指静脉图像; 图像传感器; 近红外光源


    Abstract

    Finger-veinrecognition technology developed in recent years is a new biometrics technologywith its unique advantages, Finger-vein recognition attracts widespread attentionof the domestic and international researchers in the field of biometric. Thisthesis focuses on some key problems in Finger-vein recognition,suchas image acquisition, image quality and so on. A Finger-vein recognition systemof low cost is independently designed and elementarily implemented.

    Firstly,thisthesis analyses and discusses the demands of the project, Then the Finger-vein recognition system is designed and thefeasibility of the scheme is evaluated. The image acquisition devices,includingthe near infrared imaging system ,light source system,computersoftware ,are then designed.

           Secondly,to improve the effect of image acquisition, this thesis investigates the lightsource and circuit driver. Light source is overcalled by wavelength of 850 nm LED,and add the light receiving circuit, sothebrightness of light source can be automatic feedback by received lightintensity.ARM Cortex-M3 as the main controller,control camera get the photo capture and LCD display the picture, also cantransmit picture to computer software. The computer software provide interfaceto indirectly control the camera, so that we can collect high resolutionFinger-veinimage.

       Finally, this thesistests the system’s performance in by experiments. the experimental resultsindicate that the terminal of photo collection achieve the function ofcollecting picture with high resolution real-time, and high performance costratio, and providing a feasible solution for small commercial image acquisitionhardware

     

    Key word: Finger-veinimage;image sensor; near-infrared light

     

    目录

    绪论...1

    第一章  设计方案选择... 2

    2.1  设计要求... 2

    2.2  设计基本方案... 2

    2.2.1  主控芯片的选择... 2

    2.2.2  摄像头的选择... 2

    2.2.3  储存器的选择... 2

    第二章  终端硬件结构及实现... 4

    3.1  硬件总体框图... 4

    3.2  ARM控制芯片模块... 4

    3.3  手指静脉图像采集模块... 5

    3.3.1 手指静脉识别原理... 5

    3.3.2 光源的选取... 5

    3.3.3 摄像头的选取... 6

    3.3.4 滤光片的选取... 8

    3.4 近红外自反馈调节光源模块... 8

    3.5 其它辅助模块... 9

    3.5.1 电源稳压电路... 9

    3.5.2 SRAM接口电路... 10

    3.5.3 LCD液晶屏电路... 11

    3.5.4 SD卡接口电路... 12

    第三章  软件结构及实现... 13

    4.1  下位机软件设计... 13

    4.2  上位机软件设计... 14

    第四章  系统测试... 17

    5.1 不同对比度的手指静脉图像... 17

    5.2 不同亮度的手指静脉图像... 17

    5.2 不同人的手指静脉图像... 18

    第五章  结  论... 19

    致  谢... 20

    参考文献...21

    附录一...22

    附录二...26

    附录三...32

     

    绪论

    随着全球经济和信息技术的飞速发展,人们对社会信息的安全性要求日益提高,其中身份识别技术作为维护国家金融秩序和社会安全的重要手段一直受到广泛重视。传统的身份认证所采用的方法主要有两种:一种是身份标示物(如钥匙,证件),另一种是基于身份标示知识(如密码、卡号)的身份认证。然而这些标志物易于丢失或伪造的缺点,导致该识别技术在现如今高速发展的信息时代进一步的应用存在着一定的限制。

    为了应对传统身份识别技术存在的缺点,人们提出了一种新的身份认证技术人体生物特征识别技术。生物特征识别技术作为一种新兴的身份识别技术,与传统的身份识别技术相比,具有更安全性、更保密性和更便携性的优势,所以一些典型的生物特征被广泛地应用到社会生活的各个领域当中,主要包括指纹识别、虹膜识别、人脸识别、掌纹识别、手静脉识别等。但是掌纹和指纹识别都容易被复制伪造,安全级数不高,容易附带污渍导致对识别效果影响较大,且对使用者来说也不太卫生;人脸识别更是受外界环境影响较大,故安全性还有待提高;虹膜识别技术由于所需的采集设备十分昂贵,在操作的简便性和系统集成方面作为验证对象没有优势,还不能大量应用在低端市场。然而手静脉在防伪造、安全性、适用面、易用性、成本等方面更具优势,所以手静脉识别技术无疑是近几年来研究的热点并具有良好的市场前景。

    手指静脉认证技术源于1997年日立公司在医学科技领域对人类大脑功能活动管理的高级研究项目。在这项研究中,近红外线被用来观察血液流量的增加情况,研究人员同时发现这种技术同时也适用于手指静脉图像的采集工作。目前在国外日立制作所开发成功了通过手指静脉图像进行认证的人体特征认证技术,在2003年9月开始销售使用该技术的门禁系统,并在2007年8月2日宣布最新非接触式小型“手指静脉认证设备”及软件开发套件( SDK) 登陆中国市场。在国内静脉识别在我国的应用还处于起步阶段,中国民航大学的杨金锋获得国家自然科学基金资助,研究手指静脉识别,这是目前国内静脉识别领域第一项获得国家自然科学基金资助的研究项目。该项技术目前存在的不足为小概率无法成功注册登记;由于采集方式受自身特点的限制,产品难以小型化;采集设备有特殊要求,设计相对复杂,制造成本高等不足。

    本文在校级课题的支持下,针对手指静脉识别中的图像采集、优化图像质量等难点问题,自主设计、研发出一套低成本手指静脉采集系统。首先,基于对课题的需求的仔细分析和探讨,提出了手指静脉识别系统的总体设计方案,并确定了设计方案的可行性。在此基础上分析并设计了系统的采集装置,包括近红外成像系统和光源系统的设计,完成了系统的整体搭建和软件实现,并采集到了满足要求的手指静脉图像。本文设计了基于ARM架构处理器STM32F103ZET6为核心的嵌入式手指静脉采集装置,实验选择出一款合适的摄像头传感器,并研究了光源的型号选取和光源的驱动,能够实现手指静脉图像的最佳获取。本终端将采集的手指静脉图像传输到电脑端或储存在SD卡中,整个产品体积小、功耗低、成本低,方便应用于多种场合。

     

    第一章 设计方案选择

    2.1 设计要求

    利用ARM Cortex-m3主控芯片驱动摄像头获取手指静脉图像,并在液晶屏上显示预览,可把图像保存到SD卡文件系统中;在USB连接状态下可通过USB把手指静脉图像传输到上位机软件,上位机可反馈调节摄像头参数;近红外光源电路可以根据不同人的手指厚度调节光源亮度,以获取较高质量的手指静脉图像。

    2.2 设计基本方案

    2.2.1  主控芯片的选择

           本系统的主控芯片需要具有驱动摄像头模块、驱动LCD液晶屏显示、移植SD卡文件系统、驱动SRAM芯片、USB与电脑端软件进行图像传输等功能。以ARM Cortex-M3为内核的STM32F03ZET6芯片,具有丰富的外设满足系统需求,参考资料众多便于开发,且价格低廉降低系统成本,符合本系统的设计要求,故选择该芯片作为MCU。

    2.2.2  摄像头的选择

    方案一:CCD摄像头,它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要修改图像。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。CCD摄像头价格比较昂贵,一般用于对价格不太敏感的高端设备。

    方案二:CMOS摄像头,CMOS影像传感器的电源消耗量比CCD低,CCD为提供优异的影像品质,付出代价即是较高的电源消耗量,为使电荷传输顺畅,噪声降低,需由高压差改善传输效果。但CMOS影像传感器将每一画素的电荷转换成电压,读取前便将其放大,利用3.3V的电源即可驱动,电源消耗量比CCD低。CMOS影像传感器的另一优点,是与周边电路的整合性高,可将ADC与讯号处理器整合在一起,使体积大幅缩小CMOS由于制造工艺简单,因此可以在普通半导体生产线上进行生产,其制造成本比较低廉。更便于大规模生产,且成本较低。

    综合两个方案,在综合性能符合设计要求的基础上,采用方案二的性价比更高,大大降低了产品成本。

    2.2.3  储存器的选择

    方案一:Flash芯片,存储速度快,但是需要CPU多个IO口驱动,PCB集成度比较高。

    方案二:SD卡,存储速度比较慢,但是容量大,只需要CPU的SPI接口即可以驱动,且可以拆卸更换。

    通过以上两种方案比较,采用方案二,更适合本设计的需求。

    第二章 终端硬件结构及实现

    3.1  硬件总体框图

    手指静脉图像采集终端采用模块化设计原则,整个硬件设计平台主要由ARM控制芯片模块、手指静脉成像模块、近红外自反馈调节光源模块和其它辅助模块等相互连接组成。硬件结构图如图3.1所示。

    图3. 1手指静脉图像采集终端框图

    近红外自反馈调节光源模块提供850nm近红外光,透过手指时被静脉吸收一部分近红外光,再经过透红外滤光片滤过,最后OV摄像头接收呈现手指静脉图像。ARM芯片即可控制摄像头读取图像缓存在SRAM芯片中并且在液晶屏上显示。当手指接触按键按下时,可将图像保存到SD卡中或者在USB连接的情况下通过USB传输到电脑端软件,电脑端软件即可对静脉图像预处理,根据预处理结果可反馈控制摄像头参数,以获取更高质量的手指静脉图像。

    3.2  ARM控制芯片模块

    本系统采用ARM Cortex-M3为内核的STM32F103ZET6芯片作为主控芯片,该芯片拥有强大的外设资源,包括64KB SRAM、512KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、5个串口、1个 USB、3个 SPI、2个 IIC、1个CAN、3个 12 位 ADC、1个 12 位 DAC、1个 SDIO 接口、1个 FSMC 接口以及 112个通用IO 口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩 SRAM 和驱动LCD等,FSMC 驱动 LCD,可以显著提高 LCD 的刷屏速度,更重要的是其价格便宜、资料众多,符合本系统的设计要求。

    3.3 手指静脉图像采集模块

    识别系统首要的条件是获取手指静脉图像,因此我们要进行手指静脉的采集。其中手指静脉成像模块起着十分重要的作用。高质量且稳定的手指静脉图像可以包含正确和完整的特征信息,有利于后续特征纹路的提取与匹配,保证身份认证的可靠性。手指静脉成像模块由红外光源、透红外滤光片和图像传感器三部分组成,其结构示意图如图3.2所示。

    图3. 2手指静脉图像模块

    3.3.1手指静脉识别原理

    手指静脉识别原理利用了静脉中的红细胞对特定范围内的近红外线的吸收特性来读取静脉图像的识别技术。静脉比较靠近皮肤,当近红外线透过手指时,手指静脉中流动血液的红细胞所携带的血红蛋白会因为近红外线而失脱氧份,特别是在波长760nm和850nm处达到吸收峰,导致透射的近红外线变少,在摄像头影像上就会产生静脉图像,也就是手指静脉识别利用了透射的近红外线的强弱来识别静脉分布。特别手指静脉图像的样本数量较多,曲线和分枝也比较复杂,每个人的图像差别明显,故可以利用此特性进行不同人的身份认证。

    3.3.2光源的选取

    经过上面的手指静脉成像原理的介绍,我们知道要使得照射光线透过手指呈现静脉血管纹路,必须选择相应的近红外光源发光二极管( LED) 。红外发光二极管是一种把电能直接转换为红外光并辐射出去的发光元件,它具有结构简单、寿命长、光率高、无辐射与低功率等特点。红外发光二极管的结构、原理和普通发光二极管相近,只是使用的半导体材料不一样。其光谱功率分布为中心波长830nm--950nm ,由于具有完全无红暴的优点,所以是我们应用设计的首选对象。综合考虑红外光源的辐射强度、发射角度和功耗等,经过比对各种型号的参数,本文选用的发光二极管,其峰值波长为850nm,电性参数如表3.1所示。

     

    红外光功率:

    0.2W

    电流:

    80毫安

    红外光强度:

    200 mW/sr

    发射角度:

    15度

    波峰长:

    850nm

    电压:

    1.3-1.5V

    反向漏电值:

    绝对小于5UA(反向9V冲击)

    使用寿命:

    8-10万小时

    表3. 1近红外LED参数

    本设计的光源是把红外发光二极管排成直线形的阵列,并且在电路中根据手指中不同位置的厚度分别调节每个发光二极管的电流,以获取更高质量的静脉图。

    3.3.3摄像头的选取

    本系统选用CMOS图像传感器OV7725作为摄像头。OV7725是OmmiVision公司生产的一颗 1/6寸的CMOS VGA图像传感器。该传感器体积小、工作电压低,提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8 位影像数据。该产品 VGA 图像最高达到 30 帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括白平衡度、伽玛曲线、色度等都可以通过 SCCB 接口编程。OmmiVision 图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾等,提高图像质量,得到清晰稳定的彩色图像。该摄像头的获取的图像大小为320*240,图3.3为摄像头的原理图。

    图3. 3摄像头模块电路图

    3.3.4滤光片的选取

    由于环境和地域的不同,可见光对手指静脉成像影响也有所不同,因此在采集手指静脉图像时还需要增加滤光片去除可见光的影响。滤光片是一种能够衰减光的强度并改变光谱成分的光学器件,它可以滤除一定波长区间内的光线。上面已经选择峰值波长为850nm 的红外光源,所以这里选用的滤光片为850nm的带通滤光片。本系统选用了深圳市富镭科技公司型号为FU-LGP011的滤光片,该滤光片的波谱图如图3.4所示。

    图3. 4 FU-LGP011滤光片波谱图

    3.4近红外自反馈调节光源模块

    近红外自反馈调节光源模块实现了通过接收的红外线强度自动反馈调节发射管的发射功率,以实现自动调节红外光源,不需要MCU参与控制,减少了控制芯片的负担。LED光源采用了6*1的等间距的直线布局,6个LED根据手指不同位置的厚度,调节LED的发射功率,以保证透射过手指后的红外线强度在同一个范围内。该模块主要分为了红外线发射电路和红外线接收电路,部分原理图如图3.5所示。

    近红外接收电路中Q7为红外接收管,当透射过手指后的红外线强度比较强时,Q7的电流加大,经过Q2三极管放大导致RJ2的集电极电流加大,输出电压减小,U1C为电压跟随器起到隔离缓冲。

    近红外发射电路中的由U1A放大器组成的电路起到减法器的作用。放大器的正输入端连接到近红外接收电路的输出电压,负输入端连接到可调电阻RJ1中,即放大器输出的电压Uo =Uin1-Urj1。U1A输出电压Uo再经过U1B放大器组成的电压跟随器,提高了驱动负载能力。三极管Q1的基极电流Ib=(Uo-Ube)/R7,集电极的电流即流经近红外发射管的电流

    Ic=β*Ib=β*(Uin1-Urj1-Ube)/R7。

    图3. 5近红外自反馈调节光源电路

    3.5其它辅助模块

        辅助模块包括电源电路部分、SRAM缓存部分、LCD液晶片显示部分、SD卡储存部分和手指接触按键部分等组成。

    3.5.1电源稳压电路

    由AMS1117-3.3稳压芯片组成的稳压电路,将5V电压源转化为3.3V,以供给STM32主控芯片、SRAM芯片、液晶屏等需要3.3V电源的模块,电源稳压电路如图3.6所示。

    图3. 6电源稳压电路

    3.5.2SRAM接口电路

    在图像采集和处理过程中,一般需要在片外使用随机存储器。常用的随机存储器主要有静态存储器SRAM和动态存储器DRAM两种。SRAM的访问时间短,静态功耗相对较低,总线利用率高,但是占用硅片的面积较大,容量小且价格较贵,适用于存储容量不大,性能要求较高的领域。而DRAM 的读写访问过程比较复杂,访问时间较长,总线利用率相对较低,而且由于电容器会不断的漏电,需要周期性的去刷新,所以静态功耗较大,其优点是存储容量可以做的很大,价格便宜。本文综合选择使用静态存储器SRAM。外部扩展的SRAM芯片为IS62WV51216芯片,容量大小为1M字节,利用STM32 主控芯片的FSMC外设驱动,图3.7为STM32连接SRAM芯片的电路图。这样MCU从摄像头获取的图像数据就可以通过FSMC外设快速地缓存到SRAM芯片中。

    图3. 7 SRAM接口电路

    3.5.3LCD液晶屏电路

           LCD采用STM32F03ZET6芯片的外设FSMC驱动,大大提高了读写LCD数据的速度,以腾出更多的MCU的时间操作摄像头和SRAM芯片。图3.8是LCD液晶屏电路图。

    图3. 8 LCD液晶屏电路图

    3.5.4SD卡接口电路

    目前很多嵌入式系统都需要大容量存储设备,以存储数据。目前常用的有FLASH U盘,片,SD卡等。他们各有优点,本系统采用SD卡作为外部存储设备,它不仅存储很大而且支持 SPI 接口,方便移动,并且有几种体积的尺寸可供选择(标准的SD卡尺寸,以及TF卡尺寸等) ,能满足不同应用的要求。只需要4个IO口即可外扩一个最大达32GB以上的外部存储器,容量从几十M 到几十G选择尺度很大,更换也很方便,编程也简单,是嵌入式大容量外部存储器的首选。如图3.9为SD卡的接口原理图。

    图3. 9 SD卡接口电路

    第三章  软件结构及实现

    4.1 下位机软件设计

    下位机软件流程图如图4.1所示。开电启动后首先进入系统初始化,包括时钟初始化、摄像头初始化、LCD液晶屏初始化、SD卡及FATFS文件系统初始化等。然后开启LED近红外线光源后进入循环,ARM主控芯片从摄像头模块获取图像,缓存在SRAM芯片中并在LCD液晶屏上显示。接着检测手指接触按键是否按下,如果检测到按键按下并且USB处于连接状态,ARM芯片将图像通过USB传输到上位机,如果检测到按键按下但是USB处于断开状态,则将图像保存到SD卡的文件系统中。其中下位机响应上位机设置摄像头参数的命令是通过中断响应实现的。


    图4. 1下位机软件流程图

     

    4.2  上位机软件设计

           上位机的开发环境采用微软公司的Visual Studio软件,用C#语言开发。上位机与下位机通信采用USB转串口,为了提高图像的传输速度,把串口通信的波特率设为921600,经验证传输一张BMP图像只需2S以内。图4.2为上位机的界面图,提供了串口接收数据显示部分、发送数据输入部分、图片显示部分和设置摄像头参数部分。其中图片显示部分提供两个按钮,获取图片按钮一旦按下可从硬件端获取一张图片,保存图片按钮按下时可保存图像到指定的路径中。设置摄像头参数部分目前提供设置白平衡、色度、对比度和亮度四个参数的接口,通过输入指定的数值后按下随后的设置参数按钮即可设置硬件端的摄像头参数。

    图4. 2上位机界面图

    开启上位机软件后进入相应软件环境初始化,例如界面初始化、按键响应函数初始化等,然后等待下位机按键或者上位机按键触发,硬件端通过USB串口传输图像到上位机,上位机进行预处理和显示,并可根据图像的质量反馈控制摄像头参数,以获取更好的图像。图4.3为上位机启动流程图。

    图4. 3上位机流程图


    第四章 系统测试

    5.1不同对比度的手指静脉图像

           在摄像头的参数中,影响手指静脉图像质量的参数莫过于对比度,所以在测试中选取在其它因素一致的情况下,通过调节摄像头的对比度参数,利用手指静脉采集装置获取同一个人的6帧图像进行比对,对比度分别为10、30、50、70、90、110,采集图像如图5.1所示。可见在对比度为30~50时,获取的图像更加清晰。

    图5. 1对比度差异图

    5.2不同亮度的手指静脉图像   

    在摄像头参数中,除了对比度影响图像质量外还有亮度比较重要,所以在测试中选取对比度为40,通过调节摄像头的亮度参数,利用手指静脉采集装置获取同一个人的6帧图像进行比对,亮度分别为10、30、50、70、90、110,采集图像如图5.2所示。可见在亮度增高时,图像背景混入了越来越多的噪声。

    图5. 2亮度差异图

    5.2不同人的手指静脉图像

        利用5.1节和5.2节的结论,在设置摄像头的对比度为40、亮度为20的情况下,分别采集六个人的手指静脉图像进行对比,采集图像如图5.3所示。可见在该参数情况下所获取静脉图像具有较高的质量,符合系统的要求。

    图5. 3不同人差异图

     

    第五章 结 论

    静脉识别是一种刚兴起的生物特征识别技术。目前针对手背静脉进行的相关研究很多,而手指静脉的内容很少,但是手指静脉有手背静脉所不具有的很多优点,因此有很大的发展潜力。

    手指静脉采集装置研制的主要成果和创新点:

    (1)本论文先从分析手指静脉成像的基本原理入手,通过对比不同的光源器件、成像设备及滤光片等辅助设备,选择符合实验要求的器件并制作出静脉采集装置。经实验验证,获取的图像质量是满足实验要求的。

    (2)为了提高所获得图像的质量,在系统中对光源的驱动加入了自反馈,适应不同人的手指静脉采集。

    (3)提供了上位机软件和接口,与硬件端协调控制整个系统,以更方便地获取高质量的手指静脉图像,且可进行二次开发。

    对于这项技术,有以下几点展望:

    ( 1)随着科技的进步和研究的深入,手指静脉采集装置会做的越来越小巧、便携,静脉的成像质量会更加清晰。

    ( 2) 手指静脉识别技术与其他识别技术(特别现今的物联网+技术)复杂的融合。安全性,可靠性会越来越高,在日常生产生活中的应用也会越来越广泛。

     

    参考文献

    [1] 田捷,杨鑫.生物特征识别技术理论与应用.北京:电子工业出版社,2005,9:1-10页

    [2] 黄建元,赵新荣,张长顺,丁海龙,陆永刚.基于CMOS成像器件的手指静脉图像采集方法及装置,江苏东大金智建筑智能化系统工程有限公司,文章编号:1001.8891(2009)01-0051-06

    [3] 杨庆国、管凤旭,基于ARM 和WinCE的手指静脉识别系统设计哈尔滨工程大学自动化学院[J] . 哈尔滨工程大学硕士学位论文. 2011.

    [4] 庄钊文.用于手指静脉图像采集的红外灯控制器[P].中国:200620050963.3,2007-07-2.

    [5] 侯振雷.静脉识别系统的研究与开发:[硕士论文] .天津:天津理工大学,2007.1

    [6] 袁智.手指静脉识别技术研究:[硕士论文].哈尔滨:哈尔滨工程大学,2007.1

    [7] 余成波,ISBN 978-7-302-19348-7,手指静脉识别技术,清华大学出版社

    [8] 冈萨雷斯.数字图像处理.北京:电子工业出版社,2005.9

    [9] Jacques,steven L.simple optical theory for light dosime-try during  PDT[J].ProcSPIE,1992,1645:155-165.

    [10] Miyuki Kono, Hironori Ueki, andShin-ichiro Umemura. Near-infrared finger vein patterns for personalidentification[J]. Applied Optics, 2002, 41(35):7429-7436.

    [11] Mambo M,Usuda  K,Okamoto E,Proxy signature:Delegation of thepower to sign message[C]//IEICE Trans Fundam,1996,E79-A(9):1338-1354

     

     

     


     

     

     


     

     

     

     

     

     

     

    展开全文
  • 隐藏终端和暴露终端

    千次阅读 2017-07-01 20:32:32
    隐藏终端在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收节点处冲突。冲突后发送节点要重传冲突的分组,这降低了信道...

    隐藏终端和暴露终端

    隐藏终端
    隐藏终端是指在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收节点处冲突。冲突后发送节点要重传冲突的分组,这降低了信道的利用率。

     


    隐藏终端
    隐藏终端又可以分为隐发送终端和隐接收终端两种。在单信道条件下,隐发送终端可以通过在发送数据报文前的控制报文握手来解决。但是隐接收终端问题在单信道条件下无法解决。

     


    当A要向B发送数据时,先发送一个控制报文RTS;B接收到RTS后,以CTS控制报文回应;A收到CTS后才开始向B发送报文,如果A没有收到CTS,A认为发生了冲突,重发RTS,这样隐发送终端C能够听到B发送的CTS,知道A要向B发送报文,C延迟发送,解决了隐发送终端问题。


    对于隐接收终端,当C听到B发送的CTS控制报文而延迟发送时,若D向C发送RTS控制报文请求发送数据,因C不能发送任何信息,所以D无法判断时RTS控制报文发生冲突,还是C没有开机,还是C时隐终端,D只能认为RTS报文冲突,就重新向C发送RTS。因此,当系统只有一个信道时,因C不能发送任何信息,隐接收终端问题在单信道条件下无法解决。

     

    暴露终端
    暴露终端是指在发送接点的覆盖范围内而在接收节点的覆盖范围外的节点。暴露终端因听到发送节点的发送而可能延迟发送。但是,它其实是在接收节点的通信范围之外,它的发送不会造成冲突。这就引入了不必要的时延。

     

     

    暴露终端

    暴露终端又可以分为暴露发送终端和暴露接收终端两种。在单信道条件下,暴露接收终端问题是不能解决的,因为所有发送给暴露接收终端的报文都会产生冲突;暴露发送终端问题也无法解决,因为暴露发送终端无法与目的节点成功握手。

     

     

     

     

    当B向A发送数据时,C只听到RTS控制报文,知道自己是暴露终端,认为自己可以向D发送数据。C向D发送RTS控制报文。如果是单信道,来自D的CTS会与B发送的数据报文冲突,C无法和D成功握手,它不能向D发送报文。

     

    在单信道下,如果D要向暴露终端C发送数据,来自D的RTS报文会与B发送的数据报文在C处冲突,C收不到来自D的RTS,D也就收不到C回应的CTS报文。

     

    因此,在单信道条件下,暴露终端问题根本无法得到解决!

     

    隐藏终端和暴露终端问题产生的原因
    由于ad hoc网络具有动态变化的网络拓扑结构,且工作在无线环境中,采用异步通信技术,各个移动节点共享同一个通信信道,存在信道分配和竞争问题;为了提高信道利用率,移动节点电台的频率和发射功率都比较低;并且信号受无线信道中的噪声、信道衰落和障碍物的影响,因此移动节点的通信距离受到限制,一个节点发出的信号,网络中的其它节点不一定都能收到,从而会出现“隐藏终端”和“暴露终端”问题。

     

    隐藏终端和暴露终端问题对ad hoc网络的影响
    “隐藏终端”和“暴露终端”的存在,会造成ad hoc网络时隙资源的无序争用和浪费,增加数据碰撞的概率,严重影响网络的吞吐量、容量和数据传输时延。在ad hoc网络中,当终端在某一时隙内传送信息时,若其隐藏终端在此时隙发生的同时传送信息,就会产生时隙争用冲突。受隐藏终端的影响,接收端将因为数据碰撞而不能正确接收信息,造成发送端的有效信息的丢失和大量时间的浪费(数据帧较长时尤为严重),从而降低了系统的吞吐量和量。当某个终端成为暴露终端后,由于它侦听到另外的终端对某一时隙的占用信息,而放弃了预约该时隙进行信息传送。其实,因为源终端节点和目的终端节点都不一样,暴露终端是可以占用这个时隙来传送信息的。这样,就造成了时隙资源的浪费

     


    隐藏终端和暴露终端问题的解决方法
    解决隐藏终端问题的思路是使接收节点周围的邻居节点都能了解到它正在进行接收,目前实现的方法有两种:一种是接收节点在接收的同时发送忙音来通知邻居节点,即BTMA系列;另一种方法是发送节点在数据发送前与接收节点进行一次短控制消息握手交换,以短消息的方式通知邻居节点它即将进行接收,即RTS/CTS方式。这种方式是目前解决这个问题的主要趋势,如已经提出来的CSMA/CA、MACA、MACAW等。还有将两种方法结合起来使用的多址协议,如DBTMA。


    对于隐藏发送终端问题,可以使用控制分组进行握手的方法加以解决。一个终端发送数据之前,首先要发送请求发送分组,只有听到对应该请求分组的应答信号后才能发送数据,而是收到此应答信号的其他终端必须延迟发送。

    在单信道条件下使用控制分组的方法只能解决隐发送终端,无法解决隐藏接收终端和暴露终端问题。为此,必须采用双信道的方法。即利用数据信道收发数据,利用控制信道收发控制信号

    RTS-CTS 握手机制

     

    RTS(Request to Send,请求发送)、CTS(Clear to Send ,清除发送).

    RTS/CTS机制是对CSMA的一种改进,它可以在一定程度上避免隐藏终端和暴露终端问题。采用基于RTS/CTS的多址协议的基本思想是在数据传输之前,先通过RTS/CTS握手的方式与接收节点达成对数据传输的认可,同时又可以通知发送节点和接收节点的邻居节点即将开始的传输。邻居节点在收到RTS/CTS后,在以后的一段时间内抑制自己的传输,从而避免了对即将进行的数据传输造成碰撞。这种解决问题的方式是以增加附加控制消息为代价的。

    RTS-CTS 握手机制

    从帧的传输流程来看,基于RTS/CTS的多址方式有几种形式,从复杂性和传输可靠性角度考虑,可采用RTSCTS-Data-ACK的方式。具体做法是:当发送节点有分组要传时,检测信道是否空闲,如果空闲,则发送RTS帧,接收节点收到RTS后,发CTS帧应答,发送节点收到CTS后,开始发送数据,接收节点在接收完数据帧后,发ACK确认,一次传输成功完成。如下图所示。如果发出RTS后,在一定的时限内没有收到CTS应答,发送节点执行退避算法重发RTS。RTS/CTS交互完成后,发送和接收节点的邻居收到RTS/CTS后,在以后的一段时间内抑制自己的传输。延时时间取决于将要进行传输的数据帧的长度,所以由隐藏终端造成的碰撞就大大减少了。采用链路级的应答(ACK)机制就可以在发生其它碰撞或干扰的时候,提供快速和可靠的恢复。

    RTS-CTS 握手机制

     

     


    RTS-CTS 握手机制的缺陷
    1、不同节点发送的RTS和控制信息发生冲突

     

     

    RTS-CTS 握手机制的缺陷
    2、多个CTS信息被不同的邻居节点收到,从而导致冲突。

     

    RTS-CTS 握手机制中的退避算法
    在CSMA系列的接入技术中,当报文产生冲突时,发送者要执行退避算法,延迟一段随机时间后再次尝试发送。实行退避的目的是为了减小重发时在此发生冲突的可能性。在ADHOC网络中,为了解决隐藏终端和暴露终端问题,引入了RTS-CTS握手机制。RTS和CTS控制报文之间可能会发生冲突。发生冲突时,发送者超时,等不到CTS,要执行退避算法,延迟一段随机时间后重发RTS。

     
    产生这个随机时间的“种子”叫做退避计数器。退避计数器的值直接影响着产生的延迟时间的长短。

     
    显然,节点退避计数器的值越短,它抢占信道的能力就越强,反之,它抢占信道的能力就越弱。也就是说,退避计数器的值反映了节点抢占接入信道的能力。所以,维护退避计数器的值是非常重要的。

    通常退避算法包括二进制指数退避算法、倍数增线性减算法。

    退避算法

    1.二进制指数退避算法(BEB,Binary Exponential Backoff)BEB 算法的Finc 和Fdec 函数如下: 其中,COUNTER 是退避计数器的值, MAX 和MIN 分别指退避计数器的最大和最小取值, 每次发生冲突时, 退避计数器的值加倍; 每次交互成功时, 退避计数器降至最小值MIN。

     

    BEB 算法:
    Finc=min(2×COUNTER,MAX), Fdec=MIN;

    BEB有两个缺点: 1)当一次交互成功时,退避计数器的值就降到最低值, 不能正确反映信道的争用状况; 2)BEB会带来不公平现象,一次交互成功后, 节点的退避计数器值降为最小, 而其他不成功的节点的退避计数器的值较大, 在后续的竞争中, 退避计数器值小的节点在竞争中获胜的可能性大。

     

    退避算法
    2.倍数增线性减算法(MILD)
    倍数增线性减(MILD,Multiplicative Increase Line Decrease)
    算法是对BEB 算法的改进,该算法的Finc 和Fdec 函数如下:

    Finc=min(α×COUNTER, MAX) ;

    Fdec=max(COUNTER-β, MIN) ;

    α和β是两个可调节的参数

    在MILD 中, 退避计数器的值是线性递减的, 一次交互成功后,计数器的值减小β,如果β取值合理, COUNTER 并不会像BEB 算法一样急剧减小, 在后续的竞争信道中, 所有节点获胜的机会几乎均等,实现了公平接入。发生冲突时, 退避计数器增加α 倍, 如果α取值合理, COUNTER 也不会急剧增加。但MILD 也没有完全消除不公平现象。

    展开全文
  • 工作区子系统 水平布线子系统 干线(垂直)子系统 建筑群子系统 当然是工作区子系统啦!!!

    工作区子系统

    水平布线子系统

    干线(垂直)子系统

    建筑群子系统

    当然是工作区子系统啦!!!

    展开全文
  • var browser = {  versions: function () {  var u = navigator.userAgent, app = navigator.appVersion;... return { //移动终端浏览器版本信息  trident: u.indexOf('Trident') > -1, //IE
  • 什么是终端? 这个主要不是根据服务器和客户机的处理能力来分的,而是根据实际应用的分布来划分的。 如果你要实现的功能大部分在服务器上完成,客户机上很少,则是胖服务器/瘦客户机。 当然,既然大部分功能都...
  • Linux终端

    千次阅读 2012-12-21 20:38:10
    控制台终端,通常显示器 虚拟终端,在控制台上使用getty软件虚拟的终端终端,使用软件模拟的成对逻辑设备 控制终端,应用程序中的输出终端 使用tty命令查看当前使用的终端 /dev/pts/0使用ssh登录...
  • 在第一节中曾讲到,每一个任务都有一个与之对应的EIB。CICS的终端信息正是通过EIB得到的。...此处所说的终端信息,主要是指终端在CICS中的设备编号。终端编号是通过EIB中的信息EIBTRMID提供的。以下程序将直接通过EIBTR
  • 隐藏终端和暴露终端浅析

    千次阅读 2019-06-23 21:48:39
    1.定义:隐藏终端在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收节点处冲突。冲突后发送节点要重传冲突的分组,这...
  • 终端接口

    千次阅读 2016-06-10 20:40:51
    POSIX终端接口 ? 很多系统都支持POSIX终端(串口)接口。程序可以利用这个接口来改变终端的参数,比如,波特率,字符大小等等。要使用这个端口的话,你必须将头文件包含到你的程序中。这个头文件中定义了终端...
  • 终端

    千次阅读 2012-01-30 09:49:55
    终端(Pseudo-Terminal)是一种类似于终端的特殊的进程间通信通道(channel)。通道的一端被称为主设备(master pseudo-terminal device),另一端被称为从设备。写入主设备的数据被发送到从设备,而写入从设备的数据也...
  • 终端、虚拟终端和伪终端

    千次阅读 2017-03-27 14:30:34
    按照Lions的说法,远古时候存在各种串行设备,它们的物理接口与传输特性各自有异,而它们作为终端有一些代码可以抽象出来,于是形成了最早的tty层。 Unix V6的tty实现十分简洁,在Lions提供的册子里才占两三张纸,...
  • Linux进程间关系之终端终端登录

    千次阅读 2017-03-01 13:05:05
    终端介绍在Linux/Unix系统中,用户总是通过终端登录系统后得到一个shell进程,进而在...(控制终端是保存在PCB信息中的,而fork子进程会复制PCB中的信息。所以shell创建的所有进程的控制终端都是这个终端。) 我们
  • Linux之终端

    千次阅读 2018-09-17 21:11:22
    tty一词源于Teletypes,或者teletypewriters,原来的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。 终端是一种字符型设备,它有多种...
  • linux终端terminal个性化配置

    万次阅读 2014-09-26 19:13:13
    {本文介绍linux终端字体颜色设置、终端提示符显示内容设置、自定义alias命令} linux打开终端快捷键: ctrl + alt + t 新窗口中打开 ctrl + shift +t 新标签页中打开   个人配置文件介绍  系统默认状态下的...
  • Linux 终端tty pty pts描述

    千次阅读 2017-08-11 18:22:09
    在使用Linux的过程中,当我们通过ssh或者telnet等方式连接到服务器之后,会有一个相应...也就是说所有登陆到当前Linux服务器的用户都有一个对应的终端,那他们有什么差异,终端到底是怎么一回事?本文作简要描述如下。
  • 终端安全技术

    千次阅读 2019-01-15 18:18:25
    什么是终端安全 终端安全,是采用立体防御理念形成体系化产品与解决方案。它体现了立体架构和主动防御思想,并通过PDCA模型(P规划方案、D实施维护、C检查评估、A处理整改)来持续提升企业终端的安全能力。终端安全...
  • linux虚拟终端

    千次阅读 2019-03-04 09:47:32
    1)tty命令 查看当前进程使用哪个终端 2)/dev/console是系统控制终端,console指向激活的...4)当你运行一个程序的时候,此进程一定会对应一个终端(当前的虚拟机控制台),printf打印信息会在终端出现,而当程序...
  • UNIX 终端IO

    千次阅读 2010-01-08 09:50:00
    1.什么是Linux的终端I/O,它分为几种类型。 终端是一种字符型设备,有多种类型,通常使用tty来简称各种类型的终端设备。终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn) ,伪终端(/dev/pty/),控制...
  • "隐藏终端"(Hidden Stations):在通信领域,基站A向基站B发送信息,基站C未侦测到A也向B发送,故A和C同时将信号发送至B,引起信号冲突,最终导致发送至B的信号都丢失了。"隐藏终端"多发生在大型单元中(一般在室外...
  • 终端与控制台

    万次阅读 2018-12-14 20:53:41
    终端与控制台的区别? 最近开始接触Linux,终端、虚拟终端、shell、控制台、tty等概念让我很混乱,有必要认识清楚。 今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时间来解释一下...
  • 顾名思义,串行端口终端指的是终端,终端是什么?是具体的设备!所以串行端口终端指的是使用计算机串行端口连接的终端设备,这些串行端口对应的设备文件名在Linux /dev/目录下是ttyS0 ttyS1. 1.
  • linux终端简介

    千次阅读 2008-04-11 11:51:00
    终端设备终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备,包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。所有的终端设备共享一个通用的功能集合:line discipline,...
  • B域,M域,O域具体是指什么

    千次阅读 2019-03-04 17:53:00
    特指电信行业大数据领域的三大数据域。...B域有用户数据和业务数据,比如用户的消费习惯、终端信息、ARPU的分组、业务内容,业务受众人群等。 O域有网络数据,比如信令、告警、故障、网络资源等。 M域有位置信...
  • 特指电信行业大数据领域的三大数据...B域有用户数据和业务数据,比如用户的消费习惯、终端信息、ARPU的分组、业务内容,业务受众人群等。O域有网络数据,比如信令、告警、故障、网络资源等。M域有位置信息,比如人群...
  • Linux下面的终端

    千次阅读 2014-11-22 14:46:36
    tty一词源于Teletypes,或者teletypewriters,原来的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。 终端是一种字符型设备,它有...
  • 终端、虚拟终端、shell、控制台、tty的区别

    万次阅读 多人点赞 2016-08-10 15:31:17
    最近开始接触Linux,终端、虚拟终端、shell、控制台、tty等概念让我很混乱,有必要认识清楚。 今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时间来解释一下这两个术语的区别。  ...
  • 隐藏终端、暴露终端与RTS/CTS解析

    千次阅读 2013-04-17 16:52:54
    "隐藏终端"(Hidden Stations):在通信领域,基站A向基站B发送信息,基站C未侦测到A也向B发送,故A和C同时将信号发送至B,引起信号冲突,最终导致发送至B... "暴露终端"是在发送节点的覆盖范围内而在接收节点的覆

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 168,851
精华内容 67,540
关键字:

信息终端是指什么