如何以编程方式从 bash 向 arduino 发送数据

How to programmatically send data to arduino from bash

我喜欢通过串口从我的 Raspberry Pi 发送一些数据到 arduino。我的问题是发送它,我读到类似 sudo echo "8933" > /dev/ttyUSB0 的内容,但它不起作用。通过 Arduino 中的串行监视器发送 - IDE 工作正常并且 sudo screen /dev/ttyUSB0 也可以。

我如何以编程方式执行此操作?
如果它是 bash 脚本就好了,因为我想通过 ssh 运行 它。

如果您已经有一些生成数据的脚本想要发送到您的 Arduino 串行监视器,您可以尝试一个简单的 python 包装器来发送您的数据。类似于:

#!/usr/bin/python2
import sys
import serial

def main():
    data = sys.argv

    if data[1:]:
        ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)
        for d in data[1:]:
            print d
            ser.write(str(d))                            
        ser.close()

    else:
        print "No Input given!\n"

if __name__ == "__main__":
    main()

此脚本会将传入的任何内容作为参数,并通过串行方式发送(即发送到您的 Arduino 串行监视器)。

./[this_script] `[your_script]`

这只是我刚刚拼凑起来的东西,可能应该清理一下。我会考虑熟悉 Python,因为它非常适合像这样的一次性脚本任务。

我发现 sudo echo "8933" > /dev/ttyUSB0 有两个问题。

  1. echo 将换行符附加到它输出的任何内容。尝试 printf "8933" 代替。

  2. sudo命令仅适用于实际回显。在 sudo 运行之前,输出文件仍然由 "you"(不是 root)打开。尝试 printf "8933" | sudo tee /dev/ttyUSB0 > /dev/null.