如何以编程方式从 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
有两个问题。
echo
将换行符附加到它输出的任何内容。尝试
printf "8933"
代替。
sudo
命令仅适用于实际回显。在 sudo
运行之前,输出文件仍然由 "you"(不是 root)打开。尝试 printf "8933" | sudo tee /dev/ttyUSB0 > /dev/null
.
我喜欢通过串口从我的 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
有两个问题。
echo
将换行符附加到它输出的任何内容。尝试printf "8933"
代替。sudo
命令仅适用于实际回显。在sudo
运行之前,输出文件仍然由 "you"(不是 root)打开。尝试printf "8933" | sudo tee /dev/ttyUSB0 > /dev/null
.