有没有人熟悉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。