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

时间:2015-05-19 16:43:33

标签: bash serial-port arduino raspberry-pi

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

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

2 个答案:

答案 0 :(得分:1)

如果您已经有一些生成数据的脚本,您希望发送到您的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,因为它非常适合像这样的一次性脚本化任务。

答案 1 :(得分:0)

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

  1. echo为其输出的内容添加换行符。尝试  而是printf "8933"

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