총 게시물 39,234건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

블루투스 이미지 전송 속도문제

글쓴이 : 치차리토 날짜 : 2018-11-29 (목) 17:46 조회 : 1202
글주소 : http://www.androidside.com/B49/170500
 
  명품 헤드폰, 나눔몰
블루투스 찾고있다면? 명품헤드폰 나눔몰에 다 있다! 최대 60개월 할부 가능
www.nnmall.kr
  산업용 블루투스 전문 펌테크
BLE 모듈,각종스마트폰과 통신 가능한 초소형 모듈,데이터,오디오용블루투스모듈판매
www.firmtech.co.kr
  Slash shop
세계처음 Quad(4)DAC Aptx-HD 스마트폰 오디오 자동차 고품질 블루투스
smartstore.naver.com/mircorp
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

안녕하세요?
임베디드 장치(QT 기반) 에서 이미지 파일을 안드로이드 폰으로 전송하려고 하는데..
속도가 느려서 경험자분들께 도움을 요청합니다. 

송신쪽에서는 이미지를 읽어서 1024 바이트로 나눠서 보내고 각 패킷마다 딜레이를 270ms 를 줍니다. 
좀 더 줄이면 데이터 손실이 납니다.. 

아래 코드가 (QT 코드 입니다.) 송신 쪽이고요
블루투스통신은 SPP 통신인데 baudrate는  115200 을 쓰고 있습니다. 

#define BT_BUFF_SIZE 1024

FILE *fp;

fp = fopen("/window.bmp", "rb");
while(1){
readCnt = fread((void*)buff, 1, BT_BUFF_SIZE, fp);
             total+=readCnt;
                if(readCnt < BT_BUFF_SIZE){ // 1024로 나눠서 보내고 남은 짜투리를
                    write(mIntFd, &buff, readCnt); // 보내고 루프를 나옴.
                    break;

                }
                write(mIntFd, &buff, BT_BUFF_SIZE);
                usleep(270000); // 1024를 보내고 270ms 딜레이.
}


아래 코드가 안드로이드 코드입니다. 
테스트이기 때문에 이미지 사이즈는 하드코딩 했습니다. 
public void run() {

byte[] buffer = new byte[2048];
int bytesRead = 0;
readBytesIdx = 0;

if(mInit == false){
mBytes_Buffer = new byte[500000];
mInit = true;
}

// Keep listening to the InputStream while connected
while (true) {
try {
if(inputStream != null) {
bytesRead = inputStream.read(buffer); // Received Data' Length

System.arraycopy(buffer, 0, mBytes_Buffer, readBytesIdx, bytesRead);
readBytesIdx+=bytesRead;

Log.d(TAG, "read Bytes Idx = " + readBytesIdx);

// 현재 테스트 하는 이미지 크기가 151374 입니다.
if(readBytesIdx == 151374){
updateImageView(); // 데이터 수신이 끝나면 이미지뷰 업데이트.
}

그냥 다른 동료 안드로이드폰 하고 블루투스 연결해서 
이미지 전송해보면 속도가 4~5초 정도 걸리는데.. 
어떻게 가능한건지 모르겠네요..


그리고 제 기억이 왜곡 된건지 모르겠습니다만..
수년 전에 제가 테스트할때는 약 한 1메가 정도 되는 이미지 수신이 3~4초 내외에 됐던거 같은데.. 
당시에 어떻게 했나 기억이 안나네요. ㅠ






질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

UnlimitedJava 2018-12-21 (금) 09:55
제 기억이 맞다면  baudrate 115200은 단위가 bit(bps)일텐데요 초당 115200bit이면 초당 14kb 정도이고 이 속도는 몇 Mb 단위의 데이터 전송에는 근원적으로 한계가 있을 텐데요. 

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기