gpt4 book ai didi

c - Pebble 不显示文字

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:00 24 4
gpt4 key购买 nike

所以,我正在构建一个 Pebble 应用程序,为了让我的头脑了解一些事情,我首先对手机到 Pebble 的连接进行了一些测试。虽然,一如既往地在 C 中,我被困在最基本的部分。初始文本未显示,屏幕只是空白。

相关代码如下:

static void change_text(Layer *layer, GContext *ctx){
text_layer_set_text(textLayer, textRecieved);
APP_LOG(APP_LOG_LEVEL_DEBUG, "Changing to: %s", textRecieved);
}

static void window_load(Window *window){

GRect bounds = layer_get_bounds(window_get_root_layer(window));
textLayer = text_layer_create(GRect(5,5, bounds.size.w-10, 30));

textRecieved = (char *) malloc(BUFFER_SIZE);
memset(textRecieved,0,BUFFER_SIZE);
strcpy(textRecieved, "Nothing yet.");

text_layer_set_text(textLayer, textRecieved);
layer_add_child(window_get_root_layer(window), text_layer_get_layer(textLayer));

APP_LOG(APP_LOG_LEVEL_DEBUG, "Recieved: %s", textRecieved);
layer_set_update_proc(text_layer_get_layer(textLayer), change_text);
}

相关变量定义(在文件的最顶部):

TextLayer* textLayer;
const int BUFFER_SIZE = 100;
char* textRecieved;

如果我注释掉 *layer_set_update_proc(...);* 行,我可以看到文本。我可能在 change_text 方法中做错了什么。 (它在 window_load 之后不久被调用。)我的调试打印的输出是:

[DEBUG] app_message.c:70: Recieved: Nothing yet.
[DEBUG] app_message.c:55: Changing to: Nothing yet.

最佳答案

您不应调用 layer_set_update_proc()。通过这样做,您可以覆盖默认的 text_layer 绘图机制。这就是您在屏幕上看不到任何内容的原因。

一些其他评论:

  • 是的,您可以随时调用 text_layer_set_text()
  • 使用 strncpy(textRecieved, "Nothing yet", sizeof(textRecieved)); 而不是 memset+strcpy

关于c - Pebble 不显示文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com