我正在使用 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
不起作用的想法都值得赞赏。
writeFile
echo` 默认情况下会添加新行。