4

有没有熟悉 libgpiod 的人可以回答这个问题:

使用ctxless函数而不是调用单个函数来操作芯片线(或一般情况下)是否有任何缺点?例如,要打开一条线路,我可能会写如下内容:

struct gpiod_chip* chip = gpiod_chip_open_by_name("gpiochip2");
struct gpiod_line* line = gpiod_chip_get_line(chip, 10);
gpiod_line_request_output(line, "foo", 0);
gpiod_chip_close(chip);

或者我可以简单地使用一个调用:

gpiod_ctxless_set_value("gpiochip2", 10, 1, false, "foo", NULL, NULL);

您什么时候会使用其中一种?

4

1 回答 1

2

ctxless 函数非常适合快速设置或获取 GPIO 的值。但是,我会在程序的整个生命周期中保留一次。

原因是使用 ctxless 函数时,libgpiod 必须始终重做相同的设置(打开 gpiochip、请求线路、设置其方向)然后获取或设置值。

如果您在程序中多次读取或设置该值,您可能不应该使用 ctxless 函数。

此外,在程序的生命周期内保持请求的线路绝对是一件好事,这将防止任何其他程序使用该 GPIO。

于 2019-03-16T14:41:19.887 回答