• Linux基础(16)终端与串口编程


    Linux终端编程概念

      每天使用Linux每天都要接触到Bash,使用Bash时似乎永远都让人摸不着头脑的概念就是终端,坐在这台运行着Linux的机器的显示器前面,这个显示器就是终端的输出,而插在机器上的USB键盘或者PS/2键盘就是终端的输入,看来这是一种最直白意义上关于终端的解释。

      但是有的时候,机器上并没有看到显示器或者键盘接口,但是却有一个串口,想操作这台机器想必只能通过这个串口来进行了,这个时候,串口另一端的那台电脑的显示器键盘也叫做终端。除了上述两种意义的终端之外,我们使用的类似SecureCRT这种软件上运行的SSH,Telnet等也算是一种终端程序,只是说它是通过TCP/IP网络而不是通过串口与主机连接的。

      现在可以给终端下一个非严格意义上的定义了,什么是终端?终端就是处理计算机主机输入输出的一套设备,它用来显示主机运算的输出,并且接受主机要求的输入,典型的终端包括显示器键盘套件,打印机打字机套件等。但想要彻底理解终端的概念,还是要从计算机发展历史的角度去寻根溯源

       转自:  https://blog.csdn.net/yazhouren/article/details/78793367


    Linux /dev/里有相应的设备文件接口,用户通过这些接口往底层读写数据,从而进行设备间的相互通信(类似FIFO) , 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

    终端(Terminal):对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的。

    在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

    1、串行端口终端( /dev/ttyS[n])(物理串口)

      串行端口终端(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)

      SSH等就是虚拟终端, open( /dev/ptmx)就可以创建一个虚拟终端SSH也有此操作

      pts/ptmx(pts/ptmx结合使用,进而实现pty):

          pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

      伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。

      例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和/dev/pty/s3),它们与实际物理设备并不直接相关!!!!!

    3、控制终端( /dev/tty)

      如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps -ax”来查看进程与哪个控制终端相连。本机的命令行窗口就是tty

    4、控制台终端( /dev/ttyn,  /dev/console)

      在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)

    转自:  https://www.php.cn/linux-438264.html

    在Linux里查看终端的类型 : sudo cat /proc/tty/drivers 


    串口编程

    串口编程其实就是通过系统提供给应用层的接口(例如 /dev/ttyS)传输数据,经过VFS(虚拟文件系统)传输给串口驱动处理数据

     dev/这些设备文件类似于管道, 往A端写B端读 ,Linux一切皆文件,而所有文件都可以用write和read进行读写操作

    嵌入式也是串口编程的一种, 而他们都绕不开ioctl(), ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。

  • 相关阅读:
    Push UIViewController with different orientation to previous
    shouldAutoRotate Method Not Called in iOS6
    UIScrollView中图片放大后不居中,或居中后移动有偏差解决办法
    iOS7隐藏状态栏 status Bar
    【struts2】Struts2的系统架构
    【struts2】核心概念
    【struts2】struts2的execAndWait拦截器使用
    【struts2】<s:url>标签
    【sql】CHARINDEX
    【js】在js中加HTML注释标签的原因?
  • 原文地址:https://www.cnblogs.com/yxnrh/p/12673901.html
Copyright © 2020-2023  润新知