This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to use "ble_nus_string_send correctly" ?

Hello everybody, I try to send nus_string data. I bought different inputs and outputs like this;

INPUT;

while(ble_nus_string_send(&m_nus, (uint8_t *)"aaaaaaaaaaaaaaa", (uint16_t *)17) != NRF_SUCCESS);   // I wrote "a" 17 times

OUTPUT;

"aaaaa" received       // Send 5 times "a"

INPUT;

while(ble_nus_string_send(&m_nus, (uint8_t *)"aaaaaaaaaaaaaaaaa", (uint16_t *)19) != NRF_SUCCESS);     //I wrote "a" 19 times

OUTPUT;

There is no response!

1-Why do I see 5 characters when I enter 17 characters?

2-Why do not I see anything when I enter 19 characters?

3-How do I enter any characters and see all of it?

Thank you :)

Parents Reply
  • Try this:

    APP_TIMER_DEF(send_some_uart_data);    /**< Some timer */
    
    void send_some_uart_data_handler(void * p_context)
    {
        ret_code_t err_code;
        
        uint8_t string[] = "serial updated\n\r";
        uint16_t length = sizeof(string);
        
        do
        {
            
            err_code = ble_nus_string_send(&m_nus, string, &length);
            if ( (err_code != NRF_ERROR_INVALID_STATE) && (err_code != NRF_ERROR_BUSY) )
            {
                APP_ERROR_CHECK(err_code);
            }
        } while (err_code == NRF_ERROR_BUSY);    
    }
    
    void send_some_data_uart_init(void)
    {
        app_timer_create(&send_some_uart_data,APP_TIMER_MODE_REPEATED, send_some_uart_data_handler);
        app_timer_start(send_some_uart_data, APP_TIMER_TICKS(1000), NULL);
    }
    
    // Call send_some_data_uart_init(); in main() to run send_some_uart_data_handler() at configured internal.
    

Children
Related