페이지

글목록

2016년 6월 7일 화요일

[nordic BLE] PCA10028 BLE-to-UART(SPP)예제 20-Byte 구분 char 변경

nordic BLE 를 사용하면서 좀 이상한 점은,
APP 에서 20-Byte 이상은 한번에 전송되지 않는다는 점과 
20-Byte 마다 또는 전송이 끝날 때 마다 구분용 char('\n') UART RxD로 출력된다는 점입니다.

다이얼로그에서는 이런 현상이 없었는데, 좀 다른 점이 있네요.
제가 얼핏 보기로는 BLE 는 모두 20-Byte 단위로 전송이 이루어 지고 연속으로 보내지는 것 처럼 보이는 것은 APP에서
20 Byte 전송 데이터 사이마다 딜레이를 줘서 연속으로 전송되는 것 처럼 보이는 것이라 들었습니다.

확실히 모르는데, 앱 개발자가 한 말이고 제가 앱을 모르니까 그런가 보다 하고 있습니다. ^^

nRF51 디바이스에서 20-Bte 마다 또는 전송이 끝날 때마다 구분자를 출력하는 부분은 다음과 같이 정의되어 있습니다.
main.c 파일의 nus_data_handler 함수에서 처리합니다.


전송이 완료되면 '\n' 이 출력되도록 디폴트 설정이 되어 있는데,
일반적으로 아무것도 출력하지 않고 사용하더군요.

뭐, 취향에 맞게 다른 값으로 고치셔도 되고.. 
만약 아예 안나오도록 하려면 다음과 같이 주석처리를 하시면 됩니다.

static void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length)
{
    for (uint32_t i = 0; i < length; i++)
    {
        while(app_uart_put(p_data[i]) != NRF_SUCCESS);
    }
    //while(app_uart_put('\n') != NRF_SUCCESS);
}

댓글 없음:

댓글 쓰기