linux串口编程--规范模式和非规范模式及read的阻塞与非阻塞

本文介绍了Linux串口编程中阻塞与非阻塞模式的区别,详细阐述了read和write在两种模式下的行为,并讨论了如何通过O_NDELAY标志和fcntl()函数切换模式。同时,探讨了规范模式和非规范模式的特点,特别是它们在行处理和读写行为上的差异。
摘要由CSDN通过智能技术生成

1.阻塞与非阻塞

1.1 阻塞的定义

对于read,指当串口输入缓存区没有数据的时候,read函数将会阻塞在这里,直到串口输入缓存区中有数据可读取,read读到了需要的字节数之后,返回值为读到的字节数;

对于write,指当串口输出缓冲区满,或剩下的空间小于将要写入的字节数,则write将阻塞,一直到串口输出缓冲区中剩下的空间大于等于将要写入的字节数,执行写入操作,返回写入的字节数。

1.2 非阻塞的定义

对于read,指当串口输入缓冲区没有数据的时候,read函数立即返回,返回值为-1。

对于write,指当串口输出缓冲区满,或剩下的空间小于将要写入的字节数,则write将进行写操作,写入当前串口输出缓冲区剩下空间允许的字节数,然后返回写入的字节数。

1.3 阻塞与非阻塞模式的切换

在打开串口文件时,打开模式加上O_NDELAY可以以非阻塞方式打开串口;反之,不加上O_NDEAY,默认以阻塞方式打开串口。

打开串口之后,可以通过fcntl()函数进行控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值