2016-05-30 7 views
0

Я работаю над программой 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 символов. На стороне С, я использую следующий код, чтобы прочитать эти сообщения:

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); имеет правильный размер, чтобы обрабатывать полное сообщение?

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только вы [зарабатываете] (http://meta.stackoverflow.com/q/146472/169503) достаточно [ репутация] (http://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). Если у вас есть связанный, но другой вопрос, задайте новый вопрос (http://stackoverflow.com/questions/ask), ссылаясь на этот вопрос, если он поможет обеспечить контекст. –

+1

Вы можете отредактировать свой пост, чтобы он больше напоминал ответ, а не вопрос к OP –