블루투스 드라이버를 제공하지 않는 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
하지만 아이디어가 있다면 읽기가 작동하지 않는다는 것을 모르겠습니다 …