/dev의 장치가 수신할 수 있도록 "화면"에 메시지를 보냅니다.

/dev의 장치가 수신할 수 있도록 "화면"에 메시지를 보냅니다.

내 질문이 사소해 보일 수도 있지만, 그 이유는 linux/unix/osx 시스템에 대한 오랜 경험에도 불구하고 몇 가지 기본 개념이 부족하기 때문입니다.

집에 있는 일부 가전제품을 제어하기 위해 작은 블루투스/아두이노 스위치를 만들었습니다. 아래 그림과 같은 간단한 프로그램입니다.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에 이러한 "사물"이 무엇인지 어디서 알 수 있나요?

추신: 저는 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.

다들 감사 해요.

관련 정보