【发布时间】:2014-06-06 19:35:02
【问题描述】:
我有一个 tty 设备 (/dev/ttyUSB0),它偶尔会以Cycle 1: 30662 ms, 117.41 W 的形式输出一个字符串。我正在使用一个简单的 bash 脚本来处理它:
#!/bin/sh
stty -F /dev/ttyUSB0 57600
cd /home/pi
while true; do
cat /dev/ttyUSB0 | awk '{ print $0 > "/dev/stderr"; if (/^Cycle/) { print "update kWh.rrd N:" $5 } }' | php5 test.php
sleep 1
done
test.php 脚本如下所示:
<?php
stream_set_blocking(STDIN, 0);
$line = trim(fgets(STDIN));
$file = 'kwhoutput.txt';
$current = file_get_contents($file);
$current .= $line;
file_put_contents($file, $current);
?>
但是,kwhoutput.txt 仍然为空。为什么这不起作用?
【问题讨论】:
-
回显 $line 会产生什么吗?
-
“偶尔”有多偶然?
-
@glennjackman 这取决于我们的能源使用情况,大约每 20-30 秒一次。
cat /dev/ttyUSB0工作得很好。 -
试试你的 while 循环而不用管道连接到 PHP。会发生什么?
-
尝试
od -c /dev/ttyUSB0看看它是否包含您认为的内容。