0

Я пытаюсь установить значение int для характеристики в структуре Tyzen, и я имею в качестве возвращаемого значения параметр недопустимый. Я следовал этот учебник:Tizen bluetooth low energy invalid параметр error setting signed integer

https://developer.tizen.org/development/tutorials/native-application/network/bluetooth#gatt_setter

И это мой код:

ret = bt_gatt_client_create(remote_address, &client); 
    ret = bt_gatt_client_get_service(client, time_svc_uuid_16, &svc); 
    ret = bt_gatt_service_get_characteristic(svc, time_char_uuid_16, &chr); 
    ret = bt_gatt_characteristic_set_write_type(chr, BT_GATT_WRITE_TYPE_WRITE); 
    int data_output = 60; 

    ret = bt_gatt_set_int_value(chr, BT_DATA_TYPE_SINT32, data_output, 1); 
    if (ret == BT_ERROR_NONE) 
    { 
      dlog_print(DLOG_INFO, LOG_TAG, "bt_gatt_set_value success"); 

    } 
    else if (ret == BT_ERROR_INVALID_PARAMETER) 
{ 
      dlog_print(DLOG_INFO, LOG_TAG, "BT_ERROR_INVALID_PARAMETER is failed : %d", ret); 

} 
else if (ret == BT_ERROR_OPERATION_FAILED) 
{ 
      dlog_print(DLOG_INFO, LOG_TAG, "BT_ERROR_OPERATION_FAILED is failed : %d", ret); 

} 
else if (ret == BT_ERROR_NOT_SUPPORTED) 
{ 
      dlog_print(DLOG_INFO, LOG_TAG, "BT_ERROR_NOT_SUPPORTED is failed : %d", ret); 

} 
else{ 
      dlog_print(DLOG_INFO, LOG_TAG, "UNKNOWN bt_gatt_set_value is failed : %d", ret); 

} 

если я изменить это:

int data_output = 60; 

    ret = bt_gatt_set_int_value(chr, BT_DATA_TYPE_SINT32, data_output, 1); 

для этого:

char char_value[1] = {1 + (rand()%100)}; 
    ret = bt_gatt_set_value(chr, char_value, 1); 

I не имеют никаких проблем. Но мне нужно отправить целое число со знаком

Кто-нибудь знает, что может быть проблемой?

ответ

1

Решенный!

Я установил значение смещения в 0 и работает.

ret = bt_gatt_set_int_value(chr, BT_DATA_TYPE_SINT32, data_output, 0); 
+0

Привет, Я столкнулся с аналогичной проблемой. Я хочу написать значение больше 1000. int char_value_v = 10000; ret = bt_gatt_set_int_value (chr, BT_DATA_TYPE_UINT32, char_value_v, 1); Это не записывает ожидаемое значение. Если я пишу 1000, он дает E8 03. Любые предложения? –

+0

Привет, не могли бы вы открыть новый вопрос с большим количеством объяснений по поводу вашей проблемы? Немного кода, устройств и фреймворка. Каждая маленькая деталь может быть полезна для ее решения. Пришлите мне ссылку, когда она у вас есть. –

Смежные вопросы