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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!