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"

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

我可以 ...

  1. 建立连接
  2. 查看串行连接的屏幕
  3. 输入"1"并看到我的灯泡亮起,当我输入时"0"灯泡关闭。

我现在遇到的问题是我想控制代码中的开/关(无需我手动输入),而且似乎几乎不可能做到这一点。逻辑是正确的,但是当我启动时screen,代码就停在那里并运行屏幕等待我输入一些内容。直到我把 Arduino 插上电源才会echo最终出来。有没有办法解决这个问题?

4

1 回答 1

4

我之前遇到过这样的问题,这是我的解决方法:

我在 cu 上比在 stty 上更幸运

启动屏幕会话:

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

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

您可以从脚本向它发送命令:

screen -S arduino -X stuff 1

就像您的示例一样,这会将 1 发送到串行连接

如果您想用不同的用户来控制它,请确保权限允许这样做,并与将向屏幕会话发送命令的同一用户创建屏幕会话。

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

于 2013-05-21T08:09:15.493 回答