앱인벤터 블루투스클라이언트 컴포넌트
앱인벤터의 컴포넌트들을 이해와 실제 예제를 통해 실습을 통해 모바일 앱 개발에 활용도를 높이고자 한다.
블루투스클라이언트 컴포넌트는 블루투스를 사용하여 스마타폰과 다른 스마트폰이 연결하고 통신하는데 사용하는 컴포넌트이다. 블루투슬라이언트 컴포넌트는 통신을 위해 Serial Port Profile(SPP)를 사용한다. 만약 저절전 블루투스를 사용하는데 관심이 있다면 BluetoothLE 확장을 참고하자.
블루투스클라이언트 컴포넌트
팔레트의 연결 부분에서 블루투스클라이언트 컴포넌트는 보이지 않는 컴포넌트로, 뷰어에 drag&drop하면 화면에는 아무것도 표시되지 않는다. 본문에서는 블루투스클라이언트 컴포넌트를 사용하여 다른 스마트폰과 통신하는 앱을 만들어보자.
팔레트
블루투스클라이언트 컴포넌트는 '연결'에 있다. 블루투스클라이언트 컴포넌트를 오른쪽 뷰어에 Drag&Drop하면 추가된다.
뷰어
컴포넌트들을 추가했을 때, 기본적으로 사각형이 뷰어 화면에 출력된다.
뷰어에는 보이는 않는 컴포넌트로 블루투스클라이언트 컴포넌트 외에 아래 그림과 같은 화면으로 구성되어 있다.
컴포넌트
블루투스클라이언트 컴포넌트를 활용한 간단한 파일 앱에서 활용되는 컴포넌트는 아래와 같다.
- 블루투스클라이언트 컴포넌트
- 블루투스서버와 연결하는 블루투스클라이언트 컴포넌트
- 목록선택버튼 컴포넌트 1개
- 목록선택에는 블루투스 목록선택을 제공한다.
- 레이블 컴포넌트 1개 :
- 레이블 : "연결상태-none" 연결상태를 표시하는 레이블
- 레이블 : "데이터전송하기" 레이블 출력
- 텍스트박스 컴포넌트 1개 :
- 서버에 문자열을 전송하기 위한 텍스트 입력 박스이다.
- 버튼 컴포넌트
- 서버에 문자열을 전송하기 위한 버튼
- 시계 컴포넌트
- 주기적으로 블루투스 연결 상태를 확인하기 위한 타이머
- 알림 컴포넌트
- 블루투스 연결에 '경고창보이기' 알림을 표시하기 위해 알림 컴포넌트를 사용한다.
블루투스클라이언트 컴포넌트 속성값
블루투스클라이언트 속성값은 문자인코딩, 구분바이트, DisconnectOnError, 높은바이트우선여부, 보안 속성값이 있다.
문자인코딩(CharacterEncoding) 속성값은 블루투스 통신을 통해 텍스트를 발신, 송신할 때 사용하는 문자인코딩을 설정한다. 기본값은 UTF-8값이다.
구분바이트(DelimiterByte) 속성값은 '텍스트받기', '부호있는바이트받기', '부호없는바이트받기' 블럭을 호출할 때 바이트수(numberOfBytes) 인자값에 음수를 전달할 때 사용한다.
DisconnectOnError 속성값은 블루투수 통신 상에 에러가 발생했을 때, 블루투스클라이언트와 블루투스서버는자동으로 연결이 끊기는지 여부를 설정하는 값이다.
높은바이트우선순위(HighByteFirst) 속성값은 숫자를 송수신할 때 첫번째 부호 바이트를 먼저 보낼지 여부를 설정하는 값이다.
보안(Secure) 속성값은 보안 연결을 사용할지 여부를 설정하는 값이다.
. 기타 속성값
주소와이름(AdressAndNames) : 패어드된 불루투스 기기의 리스트를 반환할 때, 기기의 주소, 공백 그리고 기기의 이름으로 구성된 문자열이 리스트로 반환된다.
가용(Available) : 블루투스가 기기 상에서 사용 가능하면 참값, 아니면 거짓값을 가진다.
사용가능(Enabled) : 블루투스가 사용가능하면 참값, 불가능하면 거짓값이다.
연결여부(IsConnected) : 블루투스 기기에 연결이 되었으면 참값, 연결이 되어있지 않으면 거짓값이다.
블루투스클라이언트 컴포넌트 이벤트 블럭들
블루투스클라이언트 컴포넌트 이벤트 블럭에는 BluetoothError 이벤트 블럭이 있다.
. 블루투스클라이언트 컴포넌트 BluetoothError 블럭
블루투스클라이언트에서 연결시 오류가 발생했을 때 호출되는이벤트 블럭이다. 인자값으로 '함수이름'과 '메시지'가 반환된다.
블루투스클라이언트 컴포넌트 호출 블럭들
블루투스클라언트 컴포넌트에 호출 블럭은 받을수있는바이트크기가져오기, 연결, UUID로연결하기, 연결끊기, 디바이스페어링여부가져오기, 부호있는1바이트숫자받기, 부호있는2바이트숫자받기, 부호있는4바이트숫자받기, 부호있는바이트받기, 텍스트받기, 부호없는1바이트숫자받기, 부호없는2바이트숫자바기, 부호없는4바이트숫자받기, 부호없는바이트받기, 1바이트숫자보내기, 2바이트숫자보내기, 4바이트숫자보내기, 바이트보내기, 텍스트보내기 호출 블럭이 있다.
. 블루투스클라어인트 컴포넌트 받을수있는바이트크기가져오기 블럭
입력 스트림으로부터 받울 수 있는 바이트의 수를 가져오는 블럭이다.
. 블루투스클라어인트 컴포넌트 연결 블럭
주어진 주소로 블루투스 기기에 연결을 요청하는 블럭이다.
. 블루투스클라어인트 컴포넌트 UUID로연결하기 블럭
주어진 주소와 특정 UUID를 가진 블루투스 기기에 연결을 요청하는 블럭이다.
UUID(Universally Unique IDetifier)는 소프트웨어 구축에 사용하는 식별자표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화되었다. UUID는 16옥텟(128비트)의 수이다.UUID는 32개의 십육진수로 표현되며, 총 36개문자(32개문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다.
UUID 레코드 레이아웃
이름 | 길이(바이트/비트) | 내용 |
time_low | 4 / 8 | 시간의 low 32비트를 부여하는 정수 |
time_mid | 2 / 4 | 시간의 middle 16비트를 부여하는 정수 |
time_hi_and_version | 2 / 4 | 최상위 비트에서 4비트 "version", 그리고 시간의 high 12비트 |
clock_seq_hi_and_res clock_seq_low | 2 / 4 | 최상위 비트에서 1-3비트, 그리고 13-15비트 클럭 시퀀스 |
node | 6 / 12 | 48비트 노드 id |
<<출처 : 범용 고유 식별자 - 위키백과, 우리 모두의 백과사전 (wikipedia.org), 위키백과>>
. 블루투스클라어인트 컴포넌트 연결끊기 블럭
연결된 블루투스 기기로부터 연결 끊기를 요청하는 블럭이다.
. 블루투스클라어인트 컴포넌트 디바이스페어링여부가져오기 블럭
주어진 주소에 블루투스 기기가 페어드 되어있는지 여부를 요청하는 블럭이다.
. 블루투스클라어인트 컴포넌트 부호있는1바이트숫자받기 블럭
. 블루투스클라어인트 컴포넌트 부호있는2바이트숫자받기 블럭
. 블루투스클라어인트 컴포넌트 부호있는4바이트숫자받기 블럭
부호있는1바이트 숫자, 부호있는2바이트 숫자, 부호있는4바이트 숫자를 블루투스 연결을 통해 수신을 요청하는 블럭이다.
. 블루투스클라어인트 컴포넌트 부호있는바이트받기 블럭
블루투스 연결 스트림으로부터, 인자값' 바이트수' 만큼 부호있는바이트를 읽기를 요청하는 블럭이며, 리스트로서 읽은 문자열을 반환한다.
만일 '바이트수'가 음수이면 '부호있는바이트받기' 블럭은 구분자바이트를 읽을때까지 바이트를 읽을 것이다.
. 블루투스클라어인트 컴포넌트 텍스트받기 블럭
입력 스트림으로부터 바이스수 만큼 읽고 읽은 바이트를 텍스트로 변환하여 반환한다.
만일 '바이트수' 값이 음수이면, 구분바이트를 읽을 때까지 바이트를 읽는다.
. 블루투스클라어인트 컴포넌트 부호없는1바이트숫자받기 블럭
. 블루투스클라어인트 컴포넌트 부호없는2바이트숫자받기 블럭
. 블루투스클라어인트 컴포넌트 부호없는4바이트숫자받기 블럭
부호없는1바이트 숫자, 부호없는2바이트 숫자, 부호없는4바이트 숫자를 블루투스 연결을 통해 발신을 요청하는 블럭이다.
. 블루투스클라어인트 컴포넌트 부호없는바이트받기 블럭
블루투스 연결 스트림으로부터, 인자값' 바이트수' 만큼 부호없는바이트를 읽기를 요청하는 블럭이며, 리스트로서 읽은 문자열을 반환한다.
만일 '바이트수'가 음수이면 '부호없는바이트받기' 블럭은 구분자바이트를 읽을때까지 바이트를 읽을 것이다.
. 블루투스클라어인트 컴포넌트 1바이트숫자보내기 블럭
. 블루투스클라어인트 컴포넌트 2바이트숫자보내기 블럭
. 블루투스클라어인트 컴포넌트 4바이트숫자보내기 블럭
주어진 문자열을 숫자로 디코드하고 출력 스트림에 1바이트씩 보내는 블럭이다.
만일 인자값 '번호' 가 숫자로 디코드되지 않는다면 혹은 숫자가 1 바이트에 일치하지 않는다면, 'Form's Erroroccurred' 이벤트가 발생되고 해당 블럭은 출력 스트림에 기록없이 반환된다.
주어진 문자열을 숫자로 디코드하고 출력 스트림에 2바이트씩 보내는 블럭이다.
만일 인자값 '번호' 가 숫자로 디코드되지 않는다면 혹은 숫자가 2 바이트에 일치하지 않는다면, 'Form's Erroroccurred' 이벤트가 발생되고 해당 블럭은 출력 스트림에 기록없이 반환된다.
주어진 문자열을 숫자로 디코드하고 출력 스트림에 4바이트씩 보내는 블럭이다.
만일 인자값 '번호' 가 숫자로 디코드되지 않는다면 혹은 숫자가 4 바이트에 일치하지 않는다면, 'Form's Erroroccurred' 이벤트가 발생되고 해당 블럭은 출력 스트림에 기록없이 반환된다.
. 블루투스클라어인트 컴포넌트 바이트보내기 블럭
주어진 리스트로부터 각 요소를 가져와서 이를 문자열로 변환한다. 문자열을 숫자로 디코드하고 한바이트씩 출려스트림에보낸다. 만일 하나의 요소가 숫자로 디코드되지 않는다면 혹은 1바이트에 정학하게 일치하지 않는다면 'Form's ErrorOccurred' 이벤트가 발생하고 해당 블럭은 출력 스트림에 어떤 바이트도 보내지 않고 반환된다.
. 블루투스클라어인트 컴포넌트 텍스트보내기 블럭
. 주어진 '텍스트'를 바이트로 변환하고 출력 스트림에 보내는 블럭이다.
블루투스클라이언트 컴포넌트 가져오기/지정하기 블럭들
블루투스클라어인트 컴포넌트 중 가져오기/지정하기 블럭은 주소와이름, 사용가능, 문자인코딩, 구분바이트, DisconnectOnError, 활성화, 높은바이트우선순위 연결여부, 보안 등의 블럭이 있다.
. 블루투스클라어인트컴포넌트 주소와이름 블럭
패어링된 블루투스 기기의 주소와 이름의 리스트를 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 사용가능 블럭
블루투스가 해당 기기에 사용가능한지를 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 문자인코딩 블럭
텍스트를 송수신할 때 사용하는 문자인코딩을 지정하거나 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 구분바이트 블럭
텍스트를 수신할 때 '바이트수' 인자값에 대해 음수를 전달할 때, 문자열과 다음 문자열을 구분하기 위해 '구분문자열'을 지정하거나 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 DisconnectOnError 블럭
블루투스 연결에 오류가 발생했을때 자동으로 연결이 끊을지 여부를 지정하거나 지정된 값을 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 활성화 블럭
블루투스가 활성화되어 있는지 여부를 가져오는 블럭이다.
. 블루투스클라어인트컴포넌트 높은바이트우선여부 블럭
'높은바이트우선순위' 속성값을 지정하거나 가져오는 블럭이다.
'높은바이트우선순위' 속성값에 대해서는 위에 설명한 부분을 참조하세요.
. 블루투스클라어인트컴포넌트 연결여부 블럭
블루투스 연결이 되어있는지 여부를 가져오는 블럭이다. 참값이면 연결이 되어 있는것이고, 거짓이면 연결이 되어 있지 않는 것이다.
. 블루투스클라어인트컴포넌트 보안 블럭
블루투스 연결을 할 때, 보안연결할지 여부를 지정하거나, 설정된 값을 가져오는 블럭이다.
이상으로 앱인벤터 블루투스클라이언트 컴포넌트 블럭에 대해 간략히 살펴보았다. 좀더 자세히 확인하기 싶으면, 블루투스클라이언트 컴포넌트를 활용하여 간단하게 다른 기기에 연결하고 텍스트를 전송하는 앱을 블럭들을 하나씩 사용해보면서 블럭의 활용 용도 등을 파악하면 좋을 것 같다. 눈으로 보는 것보다 직접 해보는게 여러모로 코딩하는데 이해하고 코딩 실력이 향상되는데 도움이 된다.
Just Do it!!!
Just Drag&Drop!!!
'앱인벤터 > 앱인벤터 컴포넌트' 카테고리의 다른 글
앱인벤터 웹 컴포넌트 (0) | 2022.06.15 |
---|---|
앱인벤터 블루투스서버 컴포넌트 (0) | 2022.06.15 |
앱인벤터 액티비티스타터 컴포넌트 (0) | 2022.06.10 |
앱인벤터 타이니웹DB 컴포넌트 (0) | 2022.06.09 |
앱인벤터 타이니DB 컴포넌트 (0) | 2022.06.06 |
댓글