GTK3: я хотел бы сделать программу, чтобы иметь возможность отдельно управлять основной функцией - PullRequest
0 голосов
/ 26 октября 2018

Я создал программу, позволяющую управлять датчиками и исполнительными механизмами на языке Си.И теперь я пытаюсь создать пользовательский интерфейс для программы.

Итак, я создал программу, как показано ниже, псевдокод.

void on_main_window_destroy()
{
   gtk_main_quit();
}

int create_main_window()
{
    gtk_widget * main_window;
    ....
    gtk_widget_show_all(main_window);
}
int get_gtk_user_interface();
{
  if(login == false)
     create_new_login_dialog();
  if(login == true)
     create_main_window();
  return 0;
}

main(){

get_gtk_user_interface();

while(true){

  run_sensor_thread();
  run_actuator_thread();
  run_network_thread();
  ....
  while(gtk_events_pending())
     gtk_main_iteration();
}
}

Однако она вводится вбесконечный цикл в соответствии с этим кодом, когда он входит в create_main_windows();.Таким образом, от датчика к сети потоки не работают вообще.

Что я действительно хочу, так это то, что пользовательский интерфейс обрабатывается так же, как другие потоки без входа в бесконечный цикл.Таким образом, соответствующая ему функциональность обрабатывается, только когда происходит событие кнопки.

...