Arduino云上的Linux openWRT外壳:将输入行从串行端口保存到文件
我正试图将来自Arduino Yun(运行openWRT)上USB端口的输入保存到一个文件中,这样就可以从Yun上托管的PHP页面准备好,并通过浏览器访问 其想法是,Yun通过RS485充当锅炉的web接口,记录所有数据,生成锅炉提供的各种温度的图形,并保存到文件中 数据来自RS485馈线(来自锅炉),通过FTDI电缆 数据以…的形式每秒传送一次Arduino云上的Linux openWRT外壳:将输入行从串行端口保存到文件,linux,bash,shell,serial-port,arduino-yun,Linux,Bash,Shell,Serial Port,Arduino Yun,我正试图将来自Arduino Yun(运行openWRT)上USB端口的输入保存到一个文件中,这样就可以从Yun上托管的PHP页面准备好,并通过浏览器访问 其想法是,Yun通过RS485充当锅炉的web接口,记录所有数据,生成锅炉提供的各种温度的图形,并保存到文件中 数据来自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
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
我有一些运气使用以下提示。。。
而且。。。
最后一篇文章提供了以下代码:
#!/bin/bash
while read line; do
if [ "$line" != "EOF" ]; then
echo "$line" >> file.txt
else
break
fi
done < /dev/ttyUSB0
迄今采取的行动:
opkg安装kmod usb串行FTDI
chmod u+x boiler2text.sh的文件权限
/bin/ihiu/boiler2.txt&
。符号将在后台启动该过程;您必须在某个时候使用kill
或killall
命令手动终止进程(或者您可以让它永远运行)。如果不希望每次重新启动时都启动脚本,可以在/etc/init.d/
#!/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 $1;}'`
# 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
#/bin/bash
保存文件=hsffile.txt
读行时;做
回显“$line”>>$SAVE_文件
#通过以下方式确定文件中当前的行数:
#做一个单词计数,然后得到第一个单词
#产量。
行=`wc-l$SAVE_FILE | awk'{print$1;}'`
#检查行计数是否大于1000。
如果[[$lines-gt 1000]];然后
#使用sed删除文件的第一行。
sed-i'1d'$SAVE_文件
fi
完成
谢谢你的帮助。我确实是通过。。。我必须使用以下命令以正确的速度获得串行端口mgetty-s 19200/dev/ttyS0,然后运行现有脚本,这两个脚本都是在系统重新启动并联机30秒后从PHP页面以系统命令的形式发布的。虽然它似乎挂起系统30秒,但一切都开始顺利进行,进程继续运行(现在已经连续运行了24个多小时)。我已经让Php每天重命名数据文件,这样文件大小就不会太大(并且有sd卡写入失败的风险),但现在我可以玩得更多了。考虑在执行bash脚本之前使用php编辑它,这样我就可以让它设置文件名,并让它运行一定数量的行,如您所示。下一个任务是研究如何将命令发送回同一端口,并在传入消息之间计时。当前的想法是使用php杀死脚本,重写它,包括一个send命令,以立即跟踪数据的接收,然后重新激活。干杯。我意识到了为什么会出现语法错误。这是因为我在记事本中编辑文件,它插入了行尾字符。
#!/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 $1;}'`
# 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