728x90
반응형
SMALL
TCP/IP통신 또는 Bluetooth 소켓 통신을 통해 약속한 형식에 맞는 프로토콜을 수신 받는데요.
보통 byte형 배열로 수신 받습니다.
수신받은 데이터를 형식에 맞게 형변환하여 사용하여야 하는데요. 정리해 보겠습니다.
byte[] 저장 코드
ByteBuffer tmpbuf = ByteBuffer.wrap(BytesArray);
tmpbuf.rewind();
byte b1 = tmpbuf.get();
byte b2 = tmpbuf.get();
받은 byte array를 ByteBuffer를 사용하여 저장후,
position을 rewind();를 통해 옮깁니다.
그 후 get() 메서드를 사용하면 byte별로 하나하나 저장할 수 있습니다.
처음 헤더 2byte를 저장해주었습니다.
다음으로는 float형이나 String형의 경우 약속한 byte 갯수가 있을텐데요.
한꺼번에 ByteBuffer를 새로 만들어 받아줍니다.
ByteBuffer stringBuf = ByteBuffer.allocate(32); //32byte String
for(int k=0;k<32;k++){
ssidbuf.put(tmpbuf.get());
}
ByteBuffer floatBuf = ByteBuffer.allocate(4); //4byte Float
for(int k=0;k<4;k++){
pwbuf.put(tmpbuf.get());
}
헤더 2byte다음에 32byte String, 4byte Float형으로 약속한 프로토콜을 각각 저장시킵니다.
get안에 특정 index를 넣어 저장할 수도 있습니다.
byte → Hex String으로 출력해보기
System.out.println("header1 : " + String.format("%02x", b1) + " header2 : " + String.format("%02x", b2) );
위에서 받은 header 2byte를 Hex string으로 출력해보았습니다.
byte[] → String 형변환
String str = new String(stringBuf.array(), "ASCII");
System.out.println("str : " + str );
위에서 저장한 String byte를 String으로 출력해보았습니다.
728x90
반응형
LIST
'Android > 통신' 카테고리의 다른 글
[안드로이드-아두이노] bluetooth classic 자동 페어링&연결 / 데이터 송,수신 (22) | 2020.12.21 |
---|---|
[안드로이드 Kotlin] BLE(Bluetooth Low Energy) 통신 예제 (39) | 2020.11.02 |
[안드로이드] Wifi List (와이파이 목록) 띄우기 ― Popup Window에서 Recycler View 사용하기 (7) | 2020.06.03 |
[안드로이드] 아두이노와 안드로이드 Bluetooth 통신하기 (24) | 2020.05.08 |