6.5.1. LIRC read()

6.5.1.1. 名称

lirc-read - 从 LIRC 设备读取

6.5.1.2. 概要

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count)

6.5.1.3. 参数

fd

open() 返回的文件描述符。

buf

要填充的缓冲区

count

要读取的最大字节数

6.5.1.4. 描述

read() 尝试从文件描述符 fd 读取最多 count 个字节到从 buf 开始的缓冲区中。如果 count 为零,则 read() 返回零,并且没有其他结果。如果 count 大于 SSIZE_MAX,则结果未指定。

数据的确切格式取决于驱动程序使用的LIRC 模式。使用 ioctl LIRC_GET_FEATURES 获取支持的模式,并使用 ioctls LIRC_GET_REC_MODE 和 LIRC_SET_REC_MODE 设置当前活动模式。

模式 LIRC_MODE_MODE2 用于原始 IR,其中包含描述 IR 信号的无符号 int 值的包从字符设备读取。

或者,可以使用 LIRC_MODE_SCANCODE,在这种模式下,扫描码由软件解码器或硬件解码器解码。rc_proto 成员设置为用于传输的IR 协议scancode 设置为解码后的扫描码,keycode 设置为键码或 KEY_RESERVED

6.5.1.5. 返回值

成功时,返回读取的字节数。如果此数字小于请求的字节数或一个帧所需的数据量,则不是错误。如果出错,则返回 -1,并且会适当地设置 errno 变量。