Linux Arduino Yun 上的 openWRT shell:将串行端口的输入行保存到文件
Linux openWRT shell on Arduino Yun: save input line from Serial Port to file
我正在尝试将来自 Arduino Yun (运行ning openWRT) 上 USB 端口的输入保存到一个文件中,以便它可以从 Yun 上托管的 PHP 页面准备好并通过浏览器访问。
想法是 Yun 充当锅炉的 Web 界面,通过 RS485 记录所有数据,生成从锅炉馈送的各种温度的图表并保存到文件中。
数据来自 RS485 馈送(来自锅炉),通过 FTDI 电缆。
数据每秒以以下形式传送...
DAT,39665,8,0.00,-273.15,-273.15,-273.15,0,0.00,0.60,0.00,0.00,-6.25,0.00,0.00,60.00,60.00,225,-273.15,0.00
STAT,39666,0.00,0,19,924,2,0,0,0,0,2,2,2,0,0
我使用以下提示时运气不错...
Linux shell: save input line from Serial Port each minute and send to remote server
还有……
Bash script: save stream from Serial Port (/dev/ttyUSB0) to file until a specific input (e.g. eof) appears
上一篇文章提供代码:
#!/bin/bash
while read line; do
if [ "$line" != "EOF" ]; then
echo "$line" >> file.txt
else
break
fi
done < /dev/ttyUSB0
但是它会引发错误 line 8: syntax error: unexpected "done" (expecting then)
但我不明白为什么,所以简化为:
#!/bin/bash
while read line; do
echo "$line" >> hsffile.txt
done < /dev/ttyUSB0
到目前为止的操作:
安装FTDI驱动程序opkg install kmod-usb-serial-ftdi
在文件夹 /bin/ihiu 中创建了一个名为 boiler2text.sh 的脚本,基于简化的以上版本。
授予文件权限 运行 chmod u+x boiler2text.sh
从 Putty SSH window 中执行脚本。 sh /bin/ihiu/boiler2text.sh
到目前为止,它运行良好,但我遇到了一些问题:
- 我需要 24/7 全天候使用脚本 运行,而无需通过 SSH 进入系统。我可以从 PHP 页面中执行系统命令,但它只是在 运行 执行脚本时挂起,并且似乎没有任何内容输出到文件。
- 随着文件开始变得相当大,理想情况下,每次添加文件时我都需要从文件开头删除一行 - 一旦文件达到最大文件大小。或者根据一天中的日期和时间将其保存到文件名中,因此文件名每小时更改一次。
我是 Linux 的新手,非常感谢任何指点。
- 为了避免必须通过 SSH 进入系统,当您启动命令时,运行
/bin/ihiu/boiler2.txt &
。符号将在后台启动该进程;您将不得不在某个时候使用 kill
或 killall
命令手动终止该进程(或者您可以永远保留它 运行ning)。如果您不想在每次重启时都启动脚本,您可以在 /etc/init.d/
中创建一个条目
为了防止你的文件超过 1000 行,你可以这样做:
#!/bin/bash
SAVE_FILE=hsffile.txt
while read line; do
echo "$line" >> $SAVE_FILE
# Determine the number of lines currently in the file by
# doing a word count and then getting the first piece
# of output.
lines=`wc -l $SAVE_FILE | awk '{print ;}'`
# Check to see if the line count is greater than 1000.
if [[ $lines -gt 1000 ]]; then
# Delete the first line of the file using sed.
sed -i '1d' $SAVE_FILE
fi
done < /dev/ttyUSB0
我正在尝试将来自 Arduino Yun (运行ning openWRT) 上 USB 端口的输入保存到一个文件中,以便它可以从 Yun 上托管的 PHP 页面准备好并通过浏览器访问。
想法是 Yun 充当锅炉的 Web 界面,通过 RS485 记录所有数据,生成从锅炉馈送的各种温度的图表并保存到文件中。
数据来自 RS485 馈送(来自锅炉),通过 FTDI 电缆。
数据每秒以以下形式传送...
DAT,39665,8,0.00,-273.15,-273.15,-273.15,0,0.00,0.60,0.00,0.00,-6.25,0.00,0.00,60.00,60.00,225,-273.15,0.00
STAT,39666,0.00,0,19,924,2,0,0,0,0,2,2,2,0,0
我使用以下提示时运气不错... Linux shell: save input line from Serial Port each minute and send to remote server
还有…… Bash script: save stream from Serial Port (/dev/ttyUSB0) to file until a specific input (e.g. eof) appears
上一篇文章提供代码:
#!/bin/bash
while read line; do
if [ "$line" != "EOF" ]; then
echo "$line" >> file.txt
else
break
fi
done < /dev/ttyUSB0
但是它会引发错误 line 8: syntax error: unexpected "done" (expecting then)
但我不明白为什么,所以简化为:
#!/bin/bash
while read line; do
echo "$line" >> hsffile.txt
done < /dev/ttyUSB0
到目前为止的操作:
安装FTDI驱动程序
opkg install kmod-usb-serial-ftdi
在文件夹 /bin/ihiu 中创建了一个名为 boiler2text.sh 的脚本,基于简化的以上版本。
授予文件权限 运行
chmod u+x boiler2text.sh
从 Putty SSH window 中执行脚本。
sh /bin/ihiu/boiler2text.sh
到目前为止,它运行良好,但我遇到了一些问题:
- 我需要 24/7 全天候使用脚本 运行,而无需通过 SSH 进入系统。我可以从 PHP 页面中执行系统命令,但它只是在 运行 执行脚本时挂起,并且似乎没有任何内容输出到文件。
- 随着文件开始变得相当大,理想情况下,每次添加文件时我都需要从文件开头删除一行 - 一旦文件达到最大文件大小。或者根据一天中的日期和时间将其保存到文件名中,因此文件名每小时更改一次。
我是 Linux 的新手,非常感谢任何指点。
- 为了避免必须通过 SSH 进入系统,当您启动命令时,运行
/bin/ihiu/boiler2.txt &
。符号将在后台启动该进程;您将不得不在某个时候使用kill
或killall
命令手动终止该进程(或者您可以永远保留它 运行ning)。如果您不想在每次重启时都启动脚本,您可以在/etc/init.d/
中创建一个条目
为了防止你的文件超过 1000 行,你可以这样做:
#!/bin/bash SAVE_FILE=hsffile.txt while read line; do echo "$line" >> $SAVE_FILE # Determine the number of lines currently in the file by # doing a word count and then getting the first piece # of output. lines=`wc -l $SAVE_FILE | awk '{print ;}'` # Check to see if the line count is greater than 1000. if [[ $lines -gt 1000 ]]; then # Delete the first line of the file using sed. sed -i '1d' $SAVE_FILE fi done < /dev/ttyUSB0