我有一个接受 uint8_t* 的函数,它应该是一个字符串。我想向这个函数发送一个双精度。我在下面尝试过这段代码,但它不起作用。
double a = 10.98
uint8_t* p = (uint8_t*) &a;
printf("p: %u \n", p);
send_data(p);
但是下面的代码有效,我想要的只是用双变量 ABOVE 替换字符串“90”。
static const char *data[6];
data[0] = "90";
static uint8_t *test;
test = ( unsigned char *) data[dataCounter] ;
send_data(test);
所以我的意思是不起作用的是函数 send_data 应该通过蓝牙向安卓手机发送一个字符串。如果我像第一个示例代码那样做,则字符串传递正确。
注意:我认为这可能是因为传递给第二个参数的数据类型不同。该函数需要 3 个参数。
static uint32_t send_data(uint8_t data[]){
return ble_nus_string_send(&m_nus, data, 5);
}
这是函数定义:
uint32_t ble_nus_string_send (ble_nus_t * p_nus,uint8_t * p_string,
uint16_t length
)