1

CubeSat 用の基本的な GROUND CONTROL STATION を作成し、コマンド (問題なし) と TELEMETRY の 2 つの部分に分けています。私は 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);   

助けてくれてありがとう!

4

2 に答える 2

0

C文字列を受け入れるようなgtk_label_new()関数は、代わりに整数を取ることはできません。C関数はポリモーフィックではありません。文字列表現を作成して渡す必要があります。たとえばsnprintf()、数値を文字列バッファにフォーマットするために使用します。

于 2012-10-08T12:49:14.703 に答える
0

わかりました。私の理解が正しければ、テキスト表示ウィジェットの設定方法は知っていますが、ウィジェットに新しいコンテンツを入力する方法はわかりませんよね? コードを見て、何をしているのか見てください。まず、テキスト ウィジェットを作成します。次に、最初のテキストを入力します。この 2 番目の部分は、繰り返します。

の場合GtkEntrygtk_entry_set_text(GTK_ENTRY(viewprova), "My new text");

GtkTextView(実際には基礎となる を使用していますTextBuffer)の場合、gtk_text_buffer_set_text(buff, "My new text", -1);

于 2012-10-10T07:47:28.893 に答える