2013-05-20 120 views
1

呼应我有这个bash文件:猛砸在屏幕

#!/bin/bash 
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -   iext en -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

screen /dev/ttyACM0 9600 
echo "1" 

这基本上是一个Arduino连接到我的Ubuntu电脑,我可以完美运行所有的代码,直到echo "1"部分。

我可以...

  1. 建立连接
  2. 看到串行连接的屏幕
  3. "1",看到我的灯泡亮起来,当我键入"0"灯泡关掉。

现在我遇到的问题是,我想控制代码中的开/关(没有我手动输入),似乎几乎不可能这样做。逻辑是正确的,但是当我开始screen时,代码就停在那里并运行屏幕,等待我输入一些信息。直到我插上Arduino后,echo终于出来了。有没有办法解决这个问题?

+0

尝试'screen -d -m/dev/ttyACM0 9600'' screen -X echo“1”'OR 'screen/dev/ttyACM0 9600'' screen -X echo“1”' –

+0

对于第一个代码它运行但没有结果。对于第二个代码,它运行但出现错误,如“Arduino必须连接到终端” –

回答

4

我有过这样的问题,这是我的解决方法:

我有更多的运气立方米然后用stty的

启动屏幕会话:

screen -S arduino -dmS cu -l /dev/ttyACM0 -s 9600 

现在有一个创建名为arduino的屏幕会话

您可以通过脚本向其发送命令:

screen -S arduino -X stuff 1 

这将1发送到就像你的例子串行连接

如果你想控制这个用不同的用户确保权利将允许这一点,并用这将是相同的用户创建的屏幕会话发送命令到屏幕会话。

如果您有更多的问题请问我。