有没有熟悉 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);
你什么时候会使用一个?
请您参考如下方法:
ctxless 函数非常适合快速设置或获取 GPIO 的值。但是,我会在您的程序的整个生命周期中将其保留一次。
原因是使用 ctxless 函数,libgpiod 必须始终重做相同的设置(打开 gpiochip,请求线路,设置其方向),然后获取或设置值。
如果您在程序中多次读取或设置该值,您可能不应该使用 ctxless 函数。
此外,在您的程序生命周期内保留请求的行绝对是一件好事,这将阻止任何其他程序使用该 GPIO。