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

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

0 추천

안녕하세요?

타 커뮤니티에도 글을 올렸는데.. 답글이 없어 안드로이드 펍에도 질문올려봅니다.. ^^;

임베디드 장치(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초 내외에 됐던거 같은데.. 

당시에 어떻게 했나 기억이 안나네요. ㅠ

하오링찡 (300 포인트) 님이 2018년 11월 30일 질문

1개의 답변

0 추천
단순계산으로 115200bps 를  8N1(1start bit + 8 data bit + 1 stop bit = 10bit)방식으로 전송한다면

115200 / 10 = 11.52kb/초 전송가능

1Mbyte를 전송할경우

1024kb / 11.52kb / 초 = 88.8889초 소요

이상.
종이두장 님이 2023년 4월 18일 답변
...