Myk*_*Myk 25 bash command-line serial-port arduino
所以,我有点过头了,我觉得我非常接近解决方案,但它还没有完成.这是我的情况:
我正在使用Arduino微控制器,我正在尝试编写两个Bash脚本(现在在Mac OS X 10.6中运行),它将(a)将来自Arduino单元的所有串行数据打印到标准输出,并且(b)允许我将序列数据发送到Arduino单元.然后将使用Adobe AIR的NativeProcess API调用这些脚本,以允许Arduino单元和Flex Adobe AIR应用程序之间的紧密集成.
我的两个脚本非常简单 -
这是我的WriteToSerial.sh脚本:
echo $1 > $2
Run Code Online (Sandbox Code Playgroud)
($ 1显然是我的字符串,$ 2是串口的位置 - 目前是/dev/tty.usbserial-A800eIUj)
这是我的ReadSerialOutput.sh脚本:
tail -f $1
Run Code Online (Sandbox Code Playgroud)
(1美元是我的串口的位置,目前是/dev/tty.usbserial-A800eIUj)
当我打电话或者这些脚本的(或者哪怕我只是直接键入命令到Bash的控制台),我的电脑只是挂起-我可以输入文字,但没有任何反应,直到我Ctrl+ C出来的过程.
但是,如果我打开Arduino IDE并打开串行监视器,然后tail -f打开端口,关闭串行监视器,然后回显"测试">串口,一切正常.
这告诉我,在Arduino IDE中打开串行监视器是以某种方式初始化串口,这反过来允许我拖延它没有问题.这反过来告诉我,我只是没有输入某种初始化命令.但是,我一直在高低搜索,似乎无法找到解决这个问题的任何东西.
解决办法是什么?
小智 30
我也遇到了同样的问题.我使用Arduino Uno和Ubuntu 12.04.搜索并尝试了几个小时后,我发现,Arduino的将复位串行设备打开时的第一次,但串行设备再次被打开时不会复位.
因此,在bash中运行命令 - echo"input string">/dev/ttyXXX将重置Arduino并立即发送"输入字符串".Arduino需要一些时间来初始化,并且不够快,无法接收此字符串.cat/dev/ttyXXX也将重置Arduino.
当的/ dev ttyXXX /在某处开了,首先,这些命令将工作.
这是我的解决方案:
1)通过将/ dev/ttyXXX重定向到文件描述3来打开/ dev/ttyXXX
exec 3 <>/dev/ttyXXX
2)等待Arduino的初始化
睡觉1
3)与Arduino沟通
echo"输入内容">&3
猫<&3
4)关闭/ dev/ttyXXX
执行3>& -
J. *_*fer 13
尝试使用stty工具:
stty -F /dev/my_serial_port <baud_rate> cs8 cread clocal
Run Code Online (Sandbox Code Playgroud)
与往常一样,在应用上述内容之前阅读联机帮助页. cread允许您接收数据.clocal如果使用流量控制,可能需要省略.如果您不确定上述设置是什么,请询问,我可以写出更完整的答案.