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

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

글쓴이 : 치차리토 날짜 : 2018-11-29 (목) 17:46 조회 : 2423
글주소 : http://www.androidside.com/B49/170500
 
  블루투스 전문 나눔몰
갖고싶었던 헤드폰, 비싸서 망설였다면? 나눔몰 60개월할부로 가볍게 구매하세요.
www.nnmall.kr
  산업용 블루투스 전문 펌테크
BLE 모듈,각종스마트폰과 통신 가능한 초소형 모듈,데이터,오디오용블루투스모듈판매
www.firmtech.co.kr
  블루투스 리시버 SLASH
최상의 음질 국산 고성능 블루투스리시버 Quad DAC 내장, AptX-HD
smartstore.naver.com/mircorp
신청하기


안녕하세요?
임베디드 장치(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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기