![将消息发送到“屏幕”以由 /dev 上的设备接收](https://linux22.com/image/81637/%E5%B0%86%E6%B6%88%E6%81%AF%E5%8F%91%E9%80%81%E5%88%B0%E2%80%9C%E5%B1%8F%E5%B9%95%E2%80%9D%E4%BB%A5%E7%94%B1%20%2Fdev%20%E4%B8%8A%E7%9A%84%E8%AE%BE%E5%A4%87%E6%8E%A5%E6%94%B6.png)
我的问题可能看起来微不足道......但这是因为尽管我有长期的 linux/unix/osx 系统经验,但我发现自己缺乏一些基本概念。
我创建了一个小型蓝牙/arduino 开关来控制家里的一些电器。这是一个简单的程序,如下所示http://www.tinkernut.com/2014/03/arduino-bluetooth-basics/
要启用或禁用我的开关,我这样做:
screen /dev/tty.HC-06-DevB
然后我在控制台中输入 0 或 1,我的开关就会打开或关闭。
有用。真的,这没什么难的...只是我不知道与/dev/中的资源通信背后的原理,并且我不知道如何开始学习。
我怎样才能有一个简单的命令来发送 1 或 0 到这个特定的设备?就像是:
echo 1 > screen /dev/tty.HC-06-DevB
我尝试了下面的命令,它不起作用:
echo 1 > /dev/tty.HC-06-DevB
zsh: resource busy: /dev/tty.HC-06-DevB
在哪里可以了解 /dev 中的这些“东西”是什么?
PS:我使用的是 OS X El Capitan。
答案1
这是的手册screen
。查找screen
您感兴趣的特定命令行选项。
例如,-r
重新连接到分离的屏幕进程。
-R
如果可能则重新连接,否则启动新会话。我认为这就是您正在寻找的选项。
所以,我会这样做:
$ screen -R /dev/tty.HC-06-DevB
也来自手册页:
-D (-r) 分离并注销远程(然后在此处重新连接)。
如果您认为我误解了某些内容,请随时发表评论。
答案2
经过多次阅读,并感谢 Bibek_G 的回答帮助我在互联网上找到了一些链接,我终于明白了我需要什么以及如何使事情发挥作用。实际上,我想做的不需要屏幕......正确的命令是:
sudo echo 1 > /dev/cu.HC-06-DevB
一开始没用,因为我没有用过sudo
。
顺便说一句,我还学会了如何使用screen
。
谢谢你们。