I2C 文件描述符上的 I2C 总线可写/可读标志
Posted
技术标签:
【中文标题】I2C 文件描述符上的 I2C 总线可写/可读标志【英文标题】:I2C Bus writable/readable flags on I2C file descriptor 【发布时间】:2018-10-11 16:43:33 【问题描述】:我想通过 Raspbian 上的 I2C 总线将多个温度计连接到 Raspberry 板,使用 C++ 应用程序和包含 pselect()
的事件循环。从应用程序打开默认的i2c-0
文件描述符(并使用linux/i2c-dev.h 接口),我会将文件描述符添加到pselect()
的fd_set *readfds
和fd_set *writefds
。我想知道这个文件描述符是否会变成 FD_WRITEABLE
或 FD_READABLE
?由于I2C是主/从设置,温度计应该不可能发起通信,因为读写操作都是由用户态的应用程序发起的,所以我想FD_READABLE
应该是不可能的,是吗?对吧?
我还没有发现任何关于将 I2C 与 pselect 一起使用的信息,what does readable/writable mean in a socket file descriptor? And why regular files don't bother with that? 是我偶然发现的最接近的答案:“可读意味着套接字接收缓冲区中存在数据或 FIN。 可写意味着套接字发送缓冲区中有可用空间。” I2C 设备是否已缓冲?我可以依赖这种机制吗?
非常感谢!
【问题讨论】:
【参考方案1】:所以是这样的:
pselect() 和 select() 函数应支持常规文件、终端和伪终端设备、基于 STREAMS 的文件、FIFO、管道和套接字。 pselect() 和 select() 在引用其他类型文件的文件描述符上的行为未指定。
i2c-0 是字符设备文件类型:https://www.kernel.org/doc/Documentation/i2c/dev-interface
pselect()
确实不保证该文件的任何内容。所以,不,你不能依赖它。
【讨论】:
以上是关于I2C 文件描述符上的 I2C 总线可写/可读标志的主要内容,如果未能解决你的问题,请参考以下文章