LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: casino

如何在LINUX下编写一个C语言的串口程序

[复制链接]
发表于 2006-8-29 14:55:24 | 显示全部楼层

那么read返回什么值啊!?

Post by 半杯可乐
我的串口程序里,read返回的不是-1,但是接收buff里面却是空的,请问高手这是什么问题啊 ?


你的buffer给得否正确呢!?
回复 支持 反对

使用道具 举报

发表于 2006-8-31 17:54:24 | 显示全部楼层
弱问一下,串口是哪个啊? 联打印机的? 还是联老式鼠标的? 就是扁长的那个?
回复 支持 反对

使用道具 举报

发表于 2006-9-1 11:05:21 | 显示全部楼层
好,顶上一下!保留下来,有时间再看!
回复 支持 反对

使用道具 举报

发表于 2007-3-21 18:35:29 | 显示全部楼层
好东西,顶起来,
回复 支持 反对

使用道具 举报

发表于 2007-6-3 11:56:19 | 显示全部楼层
顺便说一下termios中的c_cc域中VTIME和VMIN的一些提示。
假设终端处于raw模式,进程发出了read的系统调用,并等待结果。
如果VTIME和VMIN均大于0.
VTIME表示读取字符间隔的时间,但仅在接收到第一个字符之后才起作用。在VTIME超时之前,tty设备的读缓冲区已经有了VMIN个字符,那么read立刻返回。若已经接收到1个字符,VTIME超时,那么read至少能返回一个字符。如果连第一个字符都没有收到,那么进程阻塞。
如果VMIN>0,VTIME=0。
如果读到了VMIN个字符,那么立刻返回。否则进程被阻塞。
如果VMIN=0,VTIME>0。
当收到一个字符或者超时时,read返回。返回值可能为1或者0。
如果VMIN=0,VTIME=0。
那么返回不超过read调用所指示的字节数的缓冲区内所有可用字符。如果缓冲区没有字符,那么返回0。

可见如果应用程序想真正收到指定的字节数目还是选择最后一种情况比较好。

另外一点,当调用write写串口时,驱动程序会从用户提供的缓冲区一个字符一个的取然后copy到tty设备驱动的发送缓冲区,当发送缓冲区充满之后或者用户的缓冲区字符拿完之后才去真正的写串口。
所以write时最好把count参数最好设置为1
回复 支持 反对

使用道具 举报

发表于 2007-6-7 20:07:33 | 显示全部楼层
太感谢了,好东西呀!
回复 支持 反对

使用道具 举报

发表于 2007-6-9 23:49:31 | 显示全部楼层
好文!好文!好文!好文!
回复 支持 反对

使用道具 举报

发表于 2008-4-17 10:55:26 | 显示全部楼层
好贴,正要写串口程序,还不知道LFS中串口,是不是直接就能操作呢
回复 支持 反对

使用道具 举报

发表于 2008-4-17 11:42:33 | 显示全部楼层
提供两个封装的串口读写文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-4-15 15:15:44 | 显示全部楼层
谢谢  好东西
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表