1.       设备文件操作

UNIX对设备文件的操作相对简单,一般分为打开设备文件、设置设备文件、读写设备文件和关闭设备文件等几部分。

代码示例如下:

fd = open(devname, O_RDWR);//打开设备文件

ioctl(fd, TCGETA, &oldtty);//备份设备文件设置

ioctl(fd, TCSETA, &newtty);//设置设备文件设置

……………………………

read(fd, buf, len);//循环设备文件读写

write(fd, buf, len);

……………………………..

ioctl(fd, TCSETA, &oldtty);//恢复设备文件的设置

close(fd);

ioctl函数原型:

int ioctl(int fileds, int cmd, …/*args*/);

PS:函数ioctl对文件描述符对应的设备文件进行各种控制命令,参数cmd确定了执行的具体命令,并且决定了第三个参数arg的类型:arg一般为指针类型,cmd命令决定了它是为函数传递数据还是从函数中获取数据。

PS:当使用ioctl设置设备属性时,务必养成先保存,再恢复的习惯。

2.       终端设备

2.1   结构体termio定义

struct termio

{

unsigned short c_iflag;   /*终端输入方式*/

unsigned short c_oflag;  /*终端输出方式*/

unsigned short c_cflag;  /*终端控制方式*/

unsigned short c_lflag;   /*行规则模式*/

char c_line;

unsigned char c_cc[NCC]; /*控制字符*/

}

2.2   输入方式

实例:设置输入属性为:忽略Break输入,换行自动变回车,大写字母不自动转换为小写。

struct termio new;

………………….

new.c_iflag |= INLCR | IGNBRK;

new.c_iflag &= ~IUCLC;

PS:当设置终端属性时,使用按位或(“|”);当取消属性时,逻辑反(“~”)后使用按位与(“&”);

2.3   终端输出方式

实例:设置终端输出属性为:字符处理后输出,换行自动变换成回车换行,小写字母不自动转换为小写。

struct termio new;

……………………

new.c_oflag |= POPST | ONLCR;

new.c_oflag &= ~OLCUC;

2.4   终端控制方式

实例:设置终端的波特率为38400,字节长度为7bit。

struct termio new;

…………………

new.c_cflag &= ~(B9600 | CS8);

new.c_cflag |= (B38400 | CS7);

2.5   行规则模式

描述终端的行规则,可选择终端输入模式:标准模式(有缓冲)和原始模式(无缓冲)

2.6   控制字符

字符数据成员记录了一组字符控制信息,其中最常见的控制字符是c_cc[VMIN]和字符c_cc[VTIME]。VMIN:表示原始模式下读取字符的个数。VTIME:标志了原始模式下每次读取字符的时间,单位为0.1秒。

VMIN

VTIME

描述

>0

>0

读入VMIN个字符,或者时间超出VTIME后返回

=0

>0

读入字符,或者时间操作VTIME后返回

>0

=0

直到读入VMIN个字符后返回

=0

=0

立刻返回

转载于:https://my.oschina.net/fuyajun1983cn/blog/263915

专题 7 设备文件编程相关推荐

  1. 专题5 低级文件编程

    1.       文件的打开与创建 1.1   函数原型 #include <fcntl.h> int open(const char *filename, int oflag, -/*[ ...

  2. 专题 6 目录文件编程

    1.       对目录文件的操作包括创建.打开.定位和删除等内容, 其中 (1)       获取工作目录的函数有getcwd和getwd等. (2)       设置工作目录的函数有chdir和f ...

  3. linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍

    参考:linux文件编程(2)--文件操作原理简述之文件描述符.动静态文件.块设备 作者:丶PURSUING 发布时间: 2021-04-09 11:14:12 网址:https://blog.csd ...

  4. linux文件编程(1)—— open、write、read、lseek、阻塞问题

    参考:linux文件编程(1)-- 常用API之open.write.read.lseek 作者:丶PURSUING 发布时间: 2021-04-08 22:19:28 网址:https://blog ...

  5. linux文件编程(open、write、read、creat、lseek函数)

    文件编程内容比较多,如文件系统原理及访问机制文件在内核中的管理机制,什么是文件信息节点iNode.文件共享.文件权限.各种用户对其权限等等.以下主要记录如何用代码操作文件,实现文件的创建.打开.编辑等 ...

  6. input子系统基础之按键2——input设备应用层编程实践

    以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 一.input设备应用层编程实践1 1.确定设备文件名 (1)应用层操作驱动有2条路:/dev目录下的设备文件,/sy ...

  7. 字符设备驱动高级篇3——自动创建字符设备驱动的设备文件

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.问题描述 使用mknod创建设备文件的缺点: 能否自动生成和删除设备文件: 2.解决方案:udev(嵌入式中用 ...

  8. 设备文件BSP及嵌入式驱动开发笔记

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! BSP及嵌入式驱动开辟笔记 第一讲嵌入式系统基本概念 以应用为中央,以计算机 ...

  9. 3种字符设备驱动编程

    目录 1 杂项字符设备 核心结构体 操作函数 杂项字符设备注册应用 2 早期经典方式注册 操作函数 经典设备注册应用 3 Linux2.6字符设备 核心结构体 操作函数 Linux2.6设备注册应用 ...

最新文章

  1. java的标记接口_Java中的标记接口?
  2. catia 如何提取cgr面_CATIA 创成式外形设计精品课程
  3. Android UncaughtExceptionHandler 全局异常监控
  4. python import
  5. Unicode 和 UTF-8 有什么区别?
  6. 暴雪帝国辉煌能否延续
  7. javaweb(05):tomcat服务器的安装、启动,IDEA整合Tomcat创建动态web工程
  8. es6,es7,es8语法总结
  9. Seesharp EasyChartX 常用属性
  10. CSS常用定位方法(绝对定位、相对定位、固定定位)
  11. 程序员为什么更容易掉头发?
  12. Facebook,Twitter,Linkedin分享
  13. typescript 高阶类型 Exclude 和 Extract
  14. html如何固定字号,css怎么控制字体大小?
  15. 360cdn能挡住cc攻击_云防CDN是网页CC攻击的克星?cdn集群防御
  16. python中write函数%啥意思_python write( )函数
  17. 线性表的创建和基本操作
  18. C++实现简易图书馆管理系统
  19. 关闭potplayer播放器屏幕大量信息
  20. 蓝桥杯重点(C/C++)(随时更新,更新时间:2023.2.9)

热门文章

  1. JsCV Core v0.2发布 Javascript图像处理系列目录
  2. 解决 DNS general: warning: *** POKED TIMER ***
  3. linux 命令详解 二十二
  4. Spring Cloud构建微服务架构-服务网关
  5. ZAM 3D入门教程(5):Lathe编辑器
  6. Hyper-V虚拟机快照占用磁盘空间过多,导致虚拟机不能启动怎么办
  7. SDWebImage 最新版详解
  8. 全面接入「人脸识别」,智慧城市公共服务的另一种思路
  9. 手动编写第一个javaWEB文件
  10. Windows 7各版本主要区别