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

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

글쓴이 : 치차리토 날짜 : 2018-11-29 (목) 17:46 조회 : 365
글주소 : http://www.androidside.com/B49/170500
 
  블루투스 전문 나눔몰
프리미엄 헤드폰은 나눔몰에서! 명품 전문 쇼핑몰, 무이자, 최대60개월 할부
www.nnmall.kr
  아두이노스토리 도매몰
블루투스 키트구매시 케이스무료증정/도매블루투스,오늘발송,키트 입문가이드제공
arduinostory.net
  카메라전문 ZOON IN
100%정품,히어로5판매, 카메라전문,리퍼,진열상품특가,당일발송
www.zoomin.co.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. 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포인트가 적립됩니다. ^^

이전글  다음글  목록 글쓰기

 


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