Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

转载请注明: Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 | 学步园 +

转载自 http://www.xuebuyuan.com/282373.html

在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下。

c_cc[VTIME]和c_cc[VMIN]映像read函数的返回。

VTIME定义等待的时间,单位是百毫秒(通常是一个8位的unsigned char变量,取值不能大于cc_t)。

VMIN定义了要求等待的最小字节数,这个字节数可能是0。

如果VTIME取0,VMIN定义了要求等待读取的最小字节数。函数read()只有在读取了VMIN个字节的数据或者收到一个信号的时候才返回。

如果VMIN取0,VTIME定义了即使没有数据可以读取,read()函数返回前也要等待几百毫秒的时间量。这时,read()函数不需要像其通常情况那样要遇到一个文件结束标志才返回0。

如果VTIME和VMIN都不取0,VTIME定义的是当接收到第一个字节的数据后开始计算等待的时间量。如果当调用read函数时可以得到数据,计时器 马上开始计时。如果当调用read函数时还没有任何数据可读,则等接收到第一个字节的数据后,计时器开始计时。函数read可能会在读取到VMIN个字节 的数据后返回,也可能在计时完毕后返回,这主要取决于哪个条件首先实现。不过函数至少会读取到一个字节的数据,因为计时器是在读取到第一个数据时开始计时 的。

如果VTIME和VMIN都取0,即使读取不到任何数据,函数read也会立即返回。同时,返回值0表示read函数不需要等待文件结束标志就返回了。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
#include #include #include #include #include #include #include #include #include int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop) { struct termios newtio,oldtio; if ( tcgetattr( fd,&oldtio) != 0) { perror("SetupSerial 1"); return -1; } bzero( &newtio, sizeof( newtio ) ); newtio.c_cflag |= CLOCAL | CREAD; newtio.c_cflag &= ~CSIZE; switch( nBits ) { case 7: newtio.c_cflag |= CS7; break; case 8: newtio.c_cflag |= CS8; break; } switch( nEvent ) { case 'O': newtio.c_cflag |= PARENB; newtio.c_cflag |= PARODD; newtio.c_iflag |= (INPCK | ISTRIP); break; case 'E': newtio.c_iflag |= (INPCK | ISTRIP); newtio.c_cflag |= PARENB; newtio.c_cflag &= ~PARODD; break; case 'N': newtio.c_cflag &= ~PARENB; break; } switch( nSpeed ) { case 2400: cfsetispeed(&newtio, B2400); cfsetospeed(&newtio, B2400); break; case 4800: cfsetispeed(&newtio, B4800); cfsetospeed(&newtio, B4800); break; case 9600: cfsetispeed(&newtio, B9600); cfsetospeed(&newtio, B9600); break; case 115200: cfsetispeed(&newtio, B115200); cfsetospeed(&newtio, B115200); break; case 460800: cfsetispeed(&newtio, B460800); cfsetospeed(&newtio, B460800); break; default: cfsetispeed(&newtio, B9600); cfsetospeed(&newtio, B9600); break; } if( nStop == 1 ) newtio.c_cflag &= ~CSTOPB; else if ( nStop == 2 ) newtio.c_cflag |= CSTOPB; newtio.c_cc[VTIME] = 0; newtio.c_cc[VMIN] = 0; tcflush(fd,TCIFLUSH); if((tcsetattr(fd,TCSANOW,&newtio))!=0) { perror("com set error"); return -1; } // printf("set done!\n\r"); return 0; } int main(void) { int fd1,fd2,nset1,nset2,nread; char buf[100]; char buf1[1]; char *buff = "Hello\n\r"; fd1 = open( "/dev/ttySAC0", O_RDWR); if (fd1 == -1) exit(1); fd2 = open( "/dev/ttySAC1", O_RDWR); if (fd2 == -1) exit(1); nset1 = set_opt(fd1, 115200, 8, 'N', 1); if (nse
登录后台:/admin 管理员及密码都为:admin 2008.8.15 1.修正采集数据时图片出错 2.修改相关动漫的图片 3.修下相关链接的错误 4.增加生成SiteMap地图功能 2008.7.23 1.修正后台不能删除文件错误 2.修改动态播放页错位 3.修下相关链接的错误 2008.7.22 1.增加集数链接标签:{videourlnum} 2.增加当前播放集数标签:{maxz_nv} 3.增加总集数(自动获取最多集数的地址库):{maxz_num} 4.增加相关影片集{maxz_related} 5.增加下载模块 6.增加上下集数标签,让用户播放更方便 7.增加顶踩模块,用户体验 8.优化生成HTML的速度 9.增加专题模块(暂没开放) 10.增加无限重分类(暂没开放) 2008.7.3 1.增加三重分类 2.增加可以生成全部集码生成播放HTML页面 3.增加可显示更新到第几集,两组地址库自动显示最新集数 幻影动漫网视频系统CMS1.0正式版标签及安装使用说明文档 核心是马克斯CMS1.0正式稳定版所有兼容原Max原所有的标签的使用 幻影动漫网视频系统主要更新功能如下: 1、增加影片数量统计函数。 2、改进侧边栏及首页列表第一数据是否显示图片的函数。 3、加入AJAX留言插件。 4、加入AJAX评论插件,后台可设置是否开启,后台可分别按IP,留言者,影片名显示留言,并可以批量删除,留言和评论插件后台均有相关参数设置。 5、改进点播列表集数过多则自动限制在一定范围。 6、增加数据批量替换功能。 7、增加分类合并功能。 8、后台增加HTML状态判断,没有生成的自动选中,可直接批量生成。 9、后台增加人气显示,可以分别按人气,ID,时间排序,并显示当前影片评论数量,多来源数据将显示多个来源。 10、增加DZ编辑器,添加影片介绍更得心应手。 11、改进播放器选项为下拉式,并标有详细来源提示,更贴近新手。 12、改进后台登录模块,防止他人用COOKIES欺骗登录后台,为了绝对安全,建议还是改名。 13、重新增加播放前广告。 14、广告管理增加JS转换工具,凡是JS被编辑时下面均显示转换工具。 15、增加后台添加数据时重复数据检测。 16、不选播放器可以直接添加跳转地址,例如填KU6的。 幻影动漫网视频系统CMS1.0-1.1正式版标签及安装使用说明文档 1.分类列表标签 {maxz_loop:itemloopvTypeid} 自由排版区 {/maxz_loop} 参数 vTypeid:为数字类型,值为0时显示所有一级分类,其它值为指定某个一级分类的ID 自由排版区可用的变量 {zt_typename}一级分类名称 {zt_typeid}一级分类ID {zt_en}一级分类英文名称 {zt_typename_2}二级分类名称 {zt_typeid_2}二级分类ID {zt_en_2}二级分类英文名称 示例: {maxz_loop:itemloop0} <li> {/maxz_loop} 2.友情链接列表标签 {maxz_loop:linklooplinktype} 自由排版区 {/maxz_loop} 参数 Linktype:为数字类型,值为0时显示文字链接,值为1时显示图片链接 自由排版区可用的变量 {link_title}站点名称 {link_url}链接网址 {link_pic}链接图片 {link_content}站点简介 示例: {maxz_loop:linkloop1} </li><li> {/maxz_loop} 3.关键字列表标签 {maxz_loop:keyloop} 自由排版区 {/maxz_loop} 参数:暂无 自由排版区可用的变量: {keywords}关键词 示例: {maxz_loop:keyloop} {/maxz_loop} 4.视频调用标签 {maxz_loop:videoloopvOrder,vTypeid,vNum,vLen,vLen1,vLen2,vRecommendID,vTime} 自由排版区 {/maxz_loop} 参数 vOrder:视频列表排序方式,数字类型,值为0按照时间排序,为1按照推荐排序,为2按照点击量排序,为3按照顶过量排序,为2按照踩量排序,为2按照ID排序 vTypeid:视频列表所在的分类ID,数字类型,值为-1表示当前分类,为0表示全部分类,其它为指定某个分类ID vNum:视频列表数量,数字类型,值为0时表示取出所有,其他值表示指定数量 vLen:每条视频的标题字符长度,数字类型 vLen1:每条视频的演员字符长度,数字类型 vLen2:每条信息的内容简介字符长度,数字类型 vRecommendID:视频的推荐种类,数字类型,-2为全部视频,-1为全部推

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值