마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ble 1대 n 통신 data전송 및 disconnect

0 추천

안녕하세요

 

하드웨어와 ble통신을 하고 있습니다.

 

android에서 제공되는 BluetoothLeService를 포팅하여 사용하고 있습니다.

 

1 대 N 연결가능 및 하드웨어에서 보내주는 데이터를 Read또한 가능한 상태입니다.

 

하지만 writeCharacteristics를 사용하여 하드웨어에 data를 전송할때는 마지막 연결된 하드웨어에만 데이터가 전송이 되네요...

 

또한, ble disconnect 시킬 때도 마지막에 연결된 하드웨어만 ble가 disconnect되는 현상이 발생되고 있습니다.

 

하드웨어 ble의 address를 통해 원하는 디바이스에만 data send 및 disconnect가 가능할까요??

 

혹시 가능하다면 해결방안에 대해 좋은 답변 부탁드립니다.

익명사용자 님이 2017년 11월 9일 질문

1개의 답변

0 추천
 
채택된 답변

멀티 디바이스를 연결한다는 것은 각 디바이스별로 상태를 관리할 것이고, 

BluetoothGattCallback 도 멀티 객체를 관리한다는 이야기가 되겠네요. 여러 대의 Devices에서 오는 신호를 계속 뿌려주고 있다면, 제대로 연결된 것으로 맞는 것 같습니다.

그런 상태라면, writeCharacteristic()을 사용할 때 입니다. 제가 Ping을 보내는 것과 사용자가 버튼을 눌러서 send data를 하는 경우에 서로 같은 시간에 보내면 데이터가 날라가는 현상이 있었습니다.

혹시 writeCharacteristic() 이후에 BLE단말에서 응답이 온다면, 해당 응답이 온 다음에 다음 데이터를 보내는 형태가 되어야 할 것 같습니다.

이렇게 적어놓고 보니, 이상하네요. 마지막에 연결된 데이터만 전송이 된다는 것과 앞에서 readCharacteristic()이 잘된다는 게 사실 조금 충돌 나는 현상인데요...

다시 질문한다면, BLE_GATT 연결을 관리하는 Service가 N개로 따로 관리 되어야 하고요,
그 서비스를 루프를 돌아서 writeCharacteristic() 해야 합니다.


혹시 다 제대로 구성되어 있는데, 마지막 BLE_GATT Service로만 데이터를 write하는 거 아닌가요?

제대로 만들려면, 메시징 큐도 추가해야 합니다만...

 

Will Kim (43,170 포인트) 님이 2017년 11월 10일 답변
다중전송은 어떻게 하고 다중접속은 어떻게 하나요...
...