Programing/ Nordic(BLE)
ble_app_uart nrf51822와 usb serial로 통신할 때
흰군
2015. 9. 24. 16:20
예제 소스를 실행하면 pc에서 데이터를 전송할때 데이터 마지막에 \n 문자가 들어가서나 20바이트 이상 보내야지만 휴대폰에 출력된다.
1바이트씩 통신하기 위해서는 아래와 같이 수정하면 된다.
main.c를 열어보면
void uart_event_handle(app_uart_evt_t * p_event) 함수가 존재한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | case APP_UART_DATA_READY: UNUSED_VARIABLE(app_uart_get(&data_array[index])); index++; if ((data_array[index - 1] == '\n') || (index >= (BLE_NUS_MAX_DATA_LEN))) { err_code = ble_nus_string_send(&m_nus, data_array, index); if (err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_CHECK(err_code); } index = 0; } break; | cs |
위 부분을 아래 처럼 변경하면 1 바이트씩 통신되는것을 확인할수 있다.
1 2 3 4 5 6 7 8 9 10 | case APP_UART_DATA_READY: UNUSED_VARIABLE(app_uart_get(&data_array[0])); err_code = ble_nus_string_send(&m_nus, data_array, 1); if (err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_CHECK(err_code); } break; | cs |
하지만 이렇게 바꾸면 8 바이트 이상 한번에 전송하면 블루투스 연결이 끊어지는 문제점이 발생한다.
왜 이런 현상이 발생하는지는 확인하지 못했지만 나중에라고 말게되면 글을 수정하겠다.