你好,
我想从BLE扫描器中排除十进制值。我如何实现它?我正在尝试使用arch_printf能力,但我不知道如何做它确切。因为,我想要的值是在ADC VAL的特性1,谢谢!
这是我的代码:
空白app_adcval1_timer_cb_handler ()
{
struct custs1_val_ntf_req* req = KE_MSG_ALLOC_DYN(custs1_val_ntf_req,
TASK_CUSTS1,
TASK_APP,
custs1_val_ntf_req,
DEF_CUST1_ADC_VAL_1_CHAR_LEN);
//待采样的ADC值
Static uint32_t heart_rate, sample, sample2;
adc_init (GP_ADC_SE, 0, GP_ADC_ATTN3X);
adc_enable_channel (ADC_CHANNEL_P01);
Sample = adc_get_sample ();
adc_init (GP_ADC_SE, GP_ADC_SIGN, GP_ADC_ATTN3X);
adc_enable_channel (ADC_CHANNEL_P01);
Sample2 = adc_get_sample ();
Heart_rate = (sample + sample2);
heart_rate = heart_rate / 2;
申请- > conhdl = app_env - > conhdl;
申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;
申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;
memcpy(请求- >值、&heart_rate DEF_CUST1_ADC_VAL_1_CHAR_LEN);
ke_msg_send(要求的);
if (ke_state_get(TASK_APP) == APP_CONNECTED)
{
//再次设置,直到在控制特征中接收到停止命令
timer_used = app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY, app_adcval1_timer_cb_handler);
}
}
嗨herochua617,
您只需要启用它,并为UART TX/RX配置相关的gpio。以示例ble_app_peripehral为例。定义宏CFG_PRINTF, arch_printf将起作用。
你好,
只是为了确认它,我将从我的BLE扫描仪应用程序在我的手机上的ADC VAL 1特征的值输出与小数值?我已经完成了UART_TX和RX的配置,还在ble_app_peripheral的user_custs1_impl.c中定义了宏。我的代码是这样写的:
申请- > conhdl = app_env - > conhdl;
申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;
申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;
memcpy(请求- >数据、&heart_rate DEF_CUST1_ADC_VAL_1_CHAR_LEN);
arch_printf ();
由于req->数据是指向一个数组,该数组以字节存储值,它被定义为字符值,如何使用arch_printf来允许我从智能手机BLE扫描应用程序中获得一个整数值而不是十六进制?我在想,为了做到这一点,我应该在我的printf中放入什么。
非常感谢!
你好,
你可以看到这里的图片,我已经链接了。我只得到十六进制的值。
嗨herochua617,
我想我误解了你的问题。arch_printf是通过UART打印字符串。
作为你的问题,它总是十六进制值发送到空气和接收在应用程序方面。它的应用程序决定如何使用这些十六进制值,并相应地解释它们。
嗨LT_Dialog,
即使我使用HRPS配置文件,我仍然需要做一个应用程序来解释的价值?我不能使用BLE扫描器应用程序来得到十进制的值吗?根据这个链接,他们可以在BLE扫描仪应用程序中获得十进制值,所以我想知道它是否适用。https://github.com/ARMmbed/ble-examples/tree/master/BLE_HeartRate.谢谢!
嗨herochua671,
数据全部以十六进制发送和接收。应用程序可以决定如何解释(或在显示器上显示)接收到的数据。它可能BLE扫描仪解释在一个更人类可读的方式的特征值的那些SIG配置文件,如心率配置文件。
非常感谢。顺便说一下,请回看我评论过的这个链接。谢谢https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。.