我正在使用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
的大小也没有效果。有人可以帮我弄清楚我做错了什么吗?我怀疑有一种方法来定义元组大小,但我不确定如何。谢谢!
答案 0 :(得分:-1)
我无法对此进行测试,因为CloudPebble目前无法正常工作,这是一个猜测,但您检查app_message_open( size_inbound, size_outbound );
的大小是否正确以处理完整的消息?