nodejs fs.writeFile 到 sysfs (/sys) 似乎不起作用

问题描述 投票:0回答:1

我正在使用 w1_therm 内核模块来读取 Raspberry Pi 4 上的一些 DS18B20 温度传感器的温度。只需读取

temperature
中的
/sys/bus/w1/devices/<ROM>
文件就可以很好地工作。

由于我有相当多的传感器,我想利用批量温度转换功能(请参阅上面的链接文档)。这可以通过将

trigger
写入
/sys/bus/w1/devices/w1_bus_master1/therm_bulk_read
来触发。此写入将花费 750 毫秒多一点(这是 DS18B20 上实现全精度温度转换所需的时间)。之后读取的温度只是从 fs 读取,不会触发另一次转换,这意味着它们非常快。

现在解决问题:如果我使用

echo trigger > /sys/bus/w1/devices/w1_bus_master1/therm_bulk_read
手动编写,一切正常,但是如果我尝试使用
await writeFile(...)
(其中
writeFile
是从
fs/promises
导入的)从 Node js (v18.17.1) 执行此操作,则写入仅需要约 20 毫秒(不会抛出异常),并且接下来的温度读取速度很慢,这意味着批量触发器不起作用。我尝试在nodejs中打开文件,写入然后在文件描述符上调用
sync()
,但无济于事。 节点进程有权写入该文件。

我尝试

spawn
创建一个流程表单节点,将其作为调试步骤添加到文件中,并且工作得很好。
任何 

echo

不起作用的想法都值得赞赏。

    

node.js raspberry-pi kernel-module sysfs 1wire
1个回答
0
投票
writeFile

echo` 默认情况下会添加新行。

    

© www.soinside.com 2019 - 2024. All rights reserved.