本课目标
(1) 深入理解Linux设备文件的概念。
(2)掌握终端属性控制。
(3)掌握串口设备文件编程。
(4)掌握Libcurses编程。
主要知识点
(1)认识终端设备。
(2)终端属性及控制。
(3)串口编程。
(4)控制台应用基础及libcurses编程。
1. 设备文件及终端应用编程
“一切都是文件”让所有的应用层的程序、用户操作设备就像操作普通的文件一样。这样屏蔽了底层硬件的实现,简化了开发。这里面主要是VFS提供的统一的接口。这体现面向对象的思路。
终端TTY实际上管理了很多的设备:包括串口、控制台、虚拟终端等设备。
delphi@delphi-vm:~/code/test$ cat /proc/tty/drivers
/dev/tty /dev/tty 5 0 system:/dev/tty(当前的终端)
/dev/console /dev/console 5 1 system:console (控制台终端)
/dev/ptmx /dev/ptmx 5 2 system (实现虚拟网络终端设备)
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
rfcomm /dev/rfcomm 216 0-255 serial (串口设备)
serial /dev/ttyS 4 64-111 serial
pty_slave /dev/pts 136 0-1048575 pty:slave(虚拟网络终端从设备)
pty_master /dev/ptm 128 0-1048575 pty:master(虚拟网络终端主设备)
unknown /dev/tty 4 1-63 console
理解printf
是怎么打印的信息到当前的终端?
delphi@delphi-vm:~$ ll /dev/stdout
lrwxrwxrwx 1 root root 15 2018-08-06 19:35 /dev/stdout -> /proc/self/fd/1
delphi@delphi-vm:~$ ll /proc/self/fd/1
lrwx------ 1 delphi delphi 64 2018-08-07 17:05 /proc/self/fd/1 -> /dev/pts/0
stdout
最终链接到当前的终端设备
2. 终端属性与串口编程
终端设备文件,有相应的具体针对设备的属性控制。
输入属性:由驱动程序控制的输入属性
输出属性:由驱动程序控制的输出属性,如换行映射成CR/LF
控制属性:物理串行线的特点。例如波特率,停止位,奇偶校验等
本地属性:用户界面相关的,例如回显
网友评论