Поиск по словарю кортежа не возвращает полную строку
Я работаю над Приложением 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
также не имеет никакого эффекта. Может кто-нибудь помочь мне понять, что я делаю не так? Я подозреваю, что есть способ определить размер Tuple, но я не уверен, как. Спасибо!
1 ответ
Я не могу проверить это, поскольку CloudPebble в настоящее время не работает, и это предположение, но вы проверили app_message_open( size_inbound, size_outbound );
правильно настроен для обработки всего сообщения?