gpt4 book ai didi

Arduino Yun 上的 Linux openWRT shell : save input line from Serial Port to file

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:22 25 4
gpt4 key购买 nike

我正在尝试将 Arduino Yun(运行 openWRT)上 USB 端口的输入保存到文件中,以便可以从 Yun 上托管的 PHP 页面准备好并通过浏览器访问。

这个想法是,Yun 充当锅炉的网络界面,通过 RS485 记录所有数据,并生成从锅炉馈送的各种温度的图表并保存到文件。

数据通过 FTDI 电缆来自 RS485 馈送(来自锅炉)。

数据每秒以以下形式馈送...

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

但是它会引发错误第8行:语法错误:意外的“完成”(预期然后)

但我不明白为什么,所以简化为:

#!/bin/bash
while read line; do
echo "$line" >> hsffile.txt
done < /dev/ttyUSB0

迄今为止采取的行动:

  1. 安装 FTDI 驱动程序 opkg install kmod-usb-serial-ftdi

  2. 基于上述简化版本,在文件夹 /bin/ihiu 中创建了一个名为 boiler2text.sh 的脚本。

  3. 授予文件运行chmod u+x锅炉2text.sh

  4. 的权限
  5. 从 Putty SSH 窗口中执行脚本。 sh/bin/ihiu/boiler2text.sh

到目前为止,它运行良好,但我遇到了一些问题:

  1. 我需要让脚本 24/7 运行,而无需通过 SSH 进入系统。我可以从 PHP 页面中执行系统命令,但它在运行脚本时只是挂起,并且似乎没有任何内容输出到文件中。
  2. 随着文件开始变得相当大,理想情况下,我需要在每次添加行时从文件开头删除一行 - 一旦文件达到最大文件大小。或者将其保存为基于日期和时间的文件名,这样文件名每小时都会更改。

我是 Linux 新手,非常感谢任何指点。

最佳答案

  1. 为了避免必须通过 SSH 连接到系统,请在启动命令时运行 /bin/ihiu/boiler2.txt &。 & 符号将在后台启动该进程;您必须在某个时候使用 killkillall 命令手动终止该进程(或者您可以让它永远运行)。如果您不想每次重新启动时都启动脚本,可以在 /etc/init.d/
  2. 中创建一个条目
  3. 为了防止文件超过 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 $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

关于Arduino Yun 上的 Linux openWRT shell : save input line from Serial Port to file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com