【发布时间】:2015-06-29 23:19:32
【问题描述】:
我正在尝试将来自 Arduino Yun(运行 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
最后这篇文章提供了代码:
#!/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 窗口中执行脚本。
sh /bin/ihiu/boiler2text.sh
到目前为止,它运行良好,但我遇到了一些问题:
- 我需要让脚本 24/7 全天候运行,而无需通过 SSH 连接到系统。我可以从 PHP 页面中执行系统命令,但它在运行脚本时只是挂起,似乎没有任何内容输出到文件。
- 随着文件开始变得非常大,理想情况下,每次添加一行时,我都需要从文件开头删除一行 - 一旦文件达到最大文件大小。或者让它根据一天中的日期和时间保存到一个文件名,这样文件名每小时都会改变。
我是 Linux 新手,非常感谢任何指点。
【问题讨论】:
标签: linux bash shell serial-port arduino-yun