원시 직렬 터미널을 블루투스 연결에 연결하는 방법은 무엇입니까? 순수한 진단을 위해이

블루투스 드라이버를 제공하지 않는 Totalstation에 연결하려고합니다. 순수한 진단을 위해이 작업을 수행하면서 설정된 직렬 연결의 원시 출력을보고 싶습니다.

블루투스 연결의 모든 출력을 터미널 로 파이프하려면 어떻게해야 합니까?



답변

브라이언의 대답에 덧붙여서. 화면이 작동하지 않아서 즉시 표시되었습니다.[screen is terminating]

그래서 나는 이 소형 파이썬 스크립트를 발견 했습니다 . 사용법은 비슷합니다.

sudo miniterm.py /dev/rfcomm0

답변

1) hcitool scan장치의 Mac 주소를 찾는 데 사용 합니다.

장치는 알려진 핀으로 슬레이브 모드로 설정해야합니다. 알려진 핀을 사용하지 않으면 우분투가 핀을 만들어 일반적으로 측정 도구의 복잡한 메뉴에 입력 할 시간이 없습니다.

2) 이것이 꼭 필요한지는 확실하지 않지만 블루투스 GUI 메뉴에서 장치를 페어링하십시오.

3) /etc/bluetooth/rfcomm.conf에서

rfcomm0 {
        bind no;
        device 00:07:80:44:4F:37;
        channel 1;
        comment "Serial Port";
        }

“바인드 번호 없음”이 중요합니다. 그렇지 않으면 자폐 적으로 바인딩하려고 시도합니다. 이로 인해 실제로 디바이스에 액세스 할 때 발생하는 모든 종류의 문제가 발생합니다 (연결될 때 매우 까다롭기 때문에).

4) sudo rfcomm connect 0

오류가 있으면 블루투스 서비스를 다시 시작하십시오.

5) screen /dev/rfcomm0

이 방법으로 전송 된 실제 직렬 명령은 공급 업체에 문의하여 구걸하십시오.


답변

내 arduino에 연결된 HC-05 블루투스 장치에 연결하는 방법은 다음과 같습니다. Brian의 답변과 같은 파일을 작성할 필요는 없지만 아이디어는 비슷합니다. HC-05 장치에서 전송 속도 9600 속도로 테스트했습니다.

첫 번째 단계 : 장치를 페어링하고 PIN을 제공하십시오

GUI에서 페어링을 설정하려고 시도했지만 작동하지 않았습니다. 여기 나를 위해 일한 진행 명령 줄 방법이 있습니다. 먼저 장치를 명령 줄에서 페어링 해 보겠습니다. 운영 :

sudo bluetoothctl

블루투스 장치가 시작되었는지 확인하십시오 :

# power on

이제 “핀을 기억하는”에이전트를 시작합니다 rfcomm.

# agent on

이제 스캔 모드를 활성화하여 장치를 찾아 페어링 할 수 있습니다.

# scan on

몇 초 후에 장치의 MAC이 나타납니다. 우리는 그것을 이후로 표시 할 것입니다. 그런 다음 장치를 다음과 같이 페어링하면됩니다.

# pair <MAC>

기본적 1234으로 내 HC-05 장치에 PIN을 입력하라는 메시지가 표시됩니다 . 다음과 같은 메시지로 장치를 연결하고 연결을 끊을 수 있습니다.

[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no

그러나 문제는 아닙니다. 연결할 필요가 없으므로을 bluetoothctl입력하여 종료 할 수 있습니다 Ctrl + D.

사용 가능한 파일 제공 /dev/rfcomm0

먼저, 전에 rfcomm 명령을 실행하지 않았는지 확인하십시오. 실제로, Ctrl+C프로그램으로 닫아도 여전히 백그라운드에서 실행됩니다.

sudo killall rfcomm

이제, 당신은 실행할 수 있습니다

sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &

rfcom의 입력에 쓰려고하면 아무 일도 일어나지 않습니다. 다른 프로그램을 사용해야합니다.

세번째이자 마지막 단계 : /dev/rfcomm0

파일을 작성하는 방법에는 여러 가지가 있지만 진행하는 모든 방법에는 루트가 포함됩니다. 여기에이를 수행 할 수있는 몇 가지 프로그램이 설명되어 있습니다 (예를 들어 필요에 따라 또는 시스템에 설치된 항목에 따라 선택할 수 있음). 프로그램을 루트로 실행하는 것을 잊어 버린 경우 오류가 발생할 수 있습니다.

stty: /dev/rfcomm0: Device or resource busy

첫 번째 옵션 : 연결 screen

화면은 매우 강력한 도구입니다. 다음을 사용하여 설치할 수 있습니다 (더 이상 유용합니다).

sudo apt-get install screen

그런 다음 실행

sudo screen /dev/rfcomm0

루트로 실행하는 것을 잊어 버린 경우 Aleksander와 같은 오류가 발생합니다.

[screen is terminating]

종료하려면 “(CTRL + A) + : quit”를 입력하십시오.

두 번째 옵션 : 연결 minicom

설치

sudo apt-get install minicom

그런 다음 실행

sudo minicom -D /dev/rfcomm0

루트로 실행하는 것을 잊어 버린 경우 다음과 같은 오류가 발생합니다

minicom: cannot open /dev/rfcomm0: Device or resource busy

종료하려면 “Ctrl + A X”를 입력하십시오.

세 번째 옵션 : python script miniterm

이 스크립트를 다운로드 하고 다음을 실행하십시오.

chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0

파일에 직접 쓰기

먼저 다음 명령을 실행하십시오 (9600은 전송 속도입니다).

sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

이제이 파일을 클래식 파일처럼 쓸 수 있습니다 :

sudo su -c "echo 'message' > /dev/rfcomm0"

이론 상으로는

sudo tail -f /dev/rfcomm0

하지만 아이디어가 있다면 읽기가 작동하지 않는다는 것을 모르겠습니다 …