我正在为CubeSat创建一个基本的GROUND CONTROL STATION,将它分为两部分:COMMANDS(没有问题)和TELEMETRY。我正在使用C代码和GTK;在遥测窗口中我需要在每次收到遥测数据包时显示一些信息,所以我尝试对每个信息使用gtkview / gtkentry,但我不知道,如何更新它们中显示的信息。
特别是,一个例子是:
//View PACKET NUMBER
view = gtk_text_view_new();
frame = gtk_frame_new("Packet number");
gtk_container_add(GTK_CONTAINER(frame), view);
gtk_text_view_set_editable(GTK_TEXT_VIEW(view),FALSE);
gtk_table_attach(GTK_TABLE(table2),frame,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
gtk_text_buffer_get_iter_at_offset(buff, &iter, 0);
gtk_text_buffer_insert(buff, &iter,"waiting", -1);
所以,首先是文本“WAITING”,然后当收到数据包时我想更新该文本:我该怎么做?
我试过重复这段代码,但改变了“等待”一个引用“数据包号码”的变量,但是我获得了核心转储
我也试过这段代码,但我总是遇到同样的问题。
viewprova = gtk_entry_new();
frameprova = gtk_frame_new("Packet number");
gtk_container_add(GTK_CONTAINER(frameprova), viewprova);
gtk_entry_set_editable(GTK_ENTRY(viewprova),FALSE);
gtk_table_attach(GTK_TABLE(table2),frameprova,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
gtk_entry_set_text(GTK_ENTRY(viewprova),"waiting");
frameprova = gtk_frame_new("Packet number");
viewprova = gtk_label_new ("waiting");
gtk_container_add(GTK_CONTAINER(frameprova), viewprova);
gtk_table_attach(GTK_TABLE(table2),frameprova,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
感谢您的帮助!
答案 0 :(得分:0)
接受C字符串的gtk_label_new()
等函数不能取整数,C函数不是多态的。您需要构建一个字符串表示并传递它,例如使用snprintf()
将数字格式化为字符串缓冲区。
答案 1 :(得分:0)
好的,所以如果我理解正确,你知道如何设置显示小部件的文本,但不知道如何用新内容填充它们,对吗?看看你的代码,以及你正在做的事情。首先,您要创建一个文本小部件。然后用初始文本填充它。第二部分是你重复的部分:
如果是GtkEntry
,gtk_entry_set_text(GTK_ENTRY(viewprova), "My new text");
如果是GtkTextView
(实际上您正在使用基础TextBuffer
),gtk_text_buffer_set_text(buff, "My new text", -1);