元组字典搜索不返回完整字符串

时间:2016-05-30 18:00:09

标签: c pebble-watch pebble-sdk pebble-appmessage

我正在使用Pebble应用程序,我正在使用AppMessage在PebbleKitJS和常规C应用程序之间进行通信。在JS方面,我使用以下代码发送不同长度的字符串字典:

var msg = {
    1: totalMessageString[0],
    2: totalMessageString[1],
    3: totalMessageString[2],
    4: totalMessageString[3],
    5: totalMessageString[4],
  };

  Pebble.sendAppMessage(msg, 
                        function(e) {
                          console.log("Search Results Sent!");
                        },
                        function(e) {
                          console.log("Search Results Failed with Error: " + e.error);
                        });

存储在totalMessageString中的字符串长度为30到200个字符。在C方面,我使用以下代码来阅读这些消息:

static void inbox_received_callback(DictionaryIterator *iter, void *context) {
  for (int i = 1; i < 11; i++) {
    Tuple *result = dict_find(iter, i);

    if (result) {
      char *location_name = result->value->cstring;
      static char s_buffer[512];
      snprintf(s_buffer, sizeof(s_buffer), "%s", location_name);
      APP_LOG(APP_LOG_LEVEL_INFO, "Message Recieved: %s",s_buffer);
      text_layer_set_text(text_layer, s_buffer);
    }

    //No More results!
    else {
      APP_LOG(APP_LOG_LEVEL_INFO, "No Message found for index %i",i);
      break;
    }
  }

}

不到70个字符的字符串被发送得很好,但是超过它的字符串被截断(它们不会完全打印出来)。增加s_buffer的大小也没有效果。有人可以帮我弄清楚我做错了什么吗?我怀疑有一种方法来定义元组大小,但我不确定如何。谢谢!

1 个答案:

答案 0 :(得分:-1)

我无法对此进行测试,因为CloudPebble目前无法正常工作,这是一个猜测,但您检查app_message_open( size_inbound, size_outbound );的大小是否正确以处理完整的消​​息?