C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75677] Re:Re:TByte를 문자열로 바꿔서 출력하는 방법 질문합니다 (블루투스 관련)
금목암 [iconms1] 2020 읽음    2019-11-04 10:14
빌더(TWx) 님이 쓰신 글 :
: 질문쟁이 님이 쓰신 글 :
: : RAD 12.0 C++빌더로 TBluetooth에서 받아온 TByte값을 String으로 출력하고자 합니다.
: :
: : 지금 시도중인건 아두이노 블루투스를 사용해 제 컴퓨터가 아닌 다른 기기에 아두이노를 연결한 채로 블루투스로 정보를 주고받는것인데요,
: :
: : TBluetoothSocket->SendData(TEncoding::UTF8->GetByte("보낼문자열")); 라는 방식으로 코드를 짜서 컴퓨터에서 블루투스로 정보를 보내는데에는 성공했지만, 반대로 블루투스쪽에서 이쪽으로 정보를 받아오는데에는 실패했습니다.
: :
: : 질문은
: :
: : 1. 이 때 블루투스쪽에서부터 정보를 받아오는 코드는 RecieveData()인가 ReadData()인가
: : 2. 두 경우 모두 TByte값으로 정보를 전송해주는데, 이걸 String이나 Char로 바꾸는 방법
: :
: : 입니다. TEncoding::GetChar를 쓰는게 맞는지 아닌지, 맞는 경우라면 Bytes_High는 무슨 의미를 가진 int값인지 알고싶어요.
:
:
:
:
: 답변:
:
:
: HC-06 / 05 블루투스 모듈이 링크되어 있는 Arduino 보드가 USB로 PC에 연결되어 있는 한 측 A와
: 블루투스 지원하는 노트북을 한 측 B로 해서 통신을 하려고 하는 것으로 보이는데...
:
: Arduino 보드의 USB는 시리얼포트가 없는 PC를 virtual Serial 포트로 사용하기 위한 수단을 제공하는 것에 불과하고
:
:
: 보드에서 펌웨어 코드를...
:
: void loop()
: {
:   // BlueTooth Module -> Data -> USB Virtual Serial
:   if (BTSerial.available()) {
:     Serial.write(BTSerial.read());
:   }
:   // USB Virtual Serial -> Data -> BlueTooth Module
:   if (Serial.available()) {
:     BTSerial.write(Serial.read());
:   }
: }
:
: 위와 같은 식으로 프로그래밍 해 주면...
: BT로 받은 데이타를 USB 시리얼 포트로,  USB 시리얼 포트를 통해서 받은 데이타는 BT로 전송할 수 있는 구조가 되고
:
: 따라서 B 측에서 데이타를 받을려면...
: A측에 연결되어 있는 PC에선 버추얼 시리얼포트 터미널 프로그램 이용해서 데이타를 써주고
: B측에선 BlueTooth 프로토콜 이용해서 아래와 같이 읽으면 됍니다.
:
:
: 현재 RAD 10.3 이 최신 버전인데 12.0 은 뭔 말인지?
:
:    TBluetoothSocket *p;
:    TBytes bytes = p->ReceiveData();
:    Memo1->Lines->Add(TEncoding::UTF8->GetString(bytes));
:
: RAD 10.3.1 에서 ReadData()는 deprecated API 이므로 ReceiveData()를 사용해야 하고
:
:
: encoding 은 A와 B 양쪽에서 어떤 식으로 약속을 정해서 사용하는가에 따라 정해지는 거라 UTF8은 의미 없고.
:
:
:
: 참고로...
:
: Arduino 보드에 연결해서 사용하는 HC-05 또는 HC-06 블루투스 모듈은 Rx/Tx 핀을 두고 있지만...
: 이 핀은 RSC-232 시그널이 아닌... 마이컴과 직접 인터페이스(회로연결)를 취할 수 있도록 하기 위해
: TTL 레벨을 사용하게 회로가 설계되어 있다는 것을 반드시 알고 있어야 합니다.
:
: 간단하게 TTL 신호레벨을 RSC-232로 바꾸어주는 회로를 꾸며서 시리얼 포트에 연결해 주면...
: Arduino 보드가 없더라도 HC-05 또는 HC-06 블루투스 모듈만 이용해서 통신할 수도 있는데
:
: 디지틀 회로이론에 대한 지식이 없으면
: TTL 시그널 레벨을 USB Virtual Serial 로 바꾸어주는 젠더를 이용할 수도 있고요.
:
: RSC-232 시그널과 회로 서킷에서 직접 사용되는 TTL 시그널은 하드웨어적 특성이 완전히 다른 겁니다.
:
:
:
: Arduino 보드 없이, 블루투스 모듈을 여러개 이용해서 멀티통신도 가능한데
: 하나를 Master 모드로 나머지를 Slave 모드로 사용하면 되지요.
:
: 블루투스 장치를 Discovery 하는 주체 역할하는 디바이스를 Master 모드에 있다고 하고...
: Discovery의 대상이 되는 역할만 하는 디바이스를 Slave 모드상태 라고 합니다.
:
: Master/Slave 관계는 디바이스 Discovery 단계에서 중요한 역할을 하지만
: 일단 디바이스가 Paired 상태가 되면 구분은 의미 없게 됍니다. Discovery 프로토콜이 그래요.
:
:
: VCL 프레임웍에서 지원하고 있는 Classic 블루투스 기능은...
: OS에서 제공해주는 BlueTooth API와 Windows Socket 레이어를 래핑해 놓은 것에 불과 하므로
: BlueTooth 프로토콜을 디테일하게 이해하면서 사용하려면 VCL사용하지 말고 Windoows OS API 이용해서
: 직접 프로그래밍 하는 게 더 낫습니다.
:
: 프로토콜을 이해하지 못하고 사용하면... 눈뜬 장님에게 책 읽어보라고 하는 것과 마찬가지.
:
:
: ====================================
아마도 오타 일거라고 생각이 듭니다
10.2 라고 쓰려고 하지 않았을까요 ?

+ -

관련 글 리스트
75408 TByte를 문자열로 바꿔서 출력하는 방법 질문합니다 (블루투스 관련) 질문쟁이 2565 2019/05/13
75421     Re:TByte를 문자열로 바꿔서 출력하는 방법 질문합니다 (블루투스 관련) 빌더(TWx) 2957 2019/05/17
75677         Re:Re:TByte를 문자열로 바꿔서 출력하는 방법 질문합니다 (블루투스 관련) 금목암 2020 2019/11/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.