⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 LINUX下非常有名的视频采集和显示源代码,直接安装后可以使用,效果很好
💻 C
字号:
#include <unistd.h>#include <stdlib.h>#include <string.h>#include <getopt.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <fcntl.h>#include <pthread.h>#include <gtk/gtk.h>#include <linux/types.h> #include <linux/videodev.h>#include <stdio.h>#include <jpeglib.h>#include <png.h>#include "gqcam.h"#include "timer.h"#include "save.h"void set_timer_seconds(GtkWidget *widget, struct Camera *camera){  camera->timer_struct.unit = SECONDS;}void set_timer_minutes(GtkWidget *widget, struct Camera *camera){  camera->timer_struct.unit = MINUTES;}void timer_snap_now(GtkWidget *widget, struct Camera *camera){  next_frame(camera);}void timer_stop_timer(GtkWidget *widget, struct Camera *camera){  camera->on_timer = 0;  gtk_timeout_remove(camera->timeoutid);  if(!camera->timeout)    camera->speed_fastest = 1;  else    camera->timeoutid = gtk_timeout_add(camera->timeout, (GtkFunction)next_frame, (gpointer)camera);  camera->timer_struct.beep = 0;  camera->timer_struct.iscommand = 0;  gtk_widget_destroy(widget->parent->parent);}void timer_ok(GtkWidget *widget, struct Camera *camera){  GtkWidget *window;  GtkWidget *vbox;  GtkWidget *snaplabel;  GtkWidget *nowbutton;  GtkWidget *stopbutton;  int timeout;  char snaplabeltext[30];    if(strlen(gtk_entry_get_text(GTK_ENTRY(camera->timer_struct.commandentry))) > 255){    printf("Command too long...\n");    return;  }  camera->on_timer = 1;    if(strnlen(gtk_entry_get_text(GTK_ENTRY(camera->timer_struct.commandentry))) != 0){    strcpy(camera->timer_struct.command, gtk_entry_get_text(GTK_ENTRY(camera->timer_struct.commandentry)));    camera->timer_struct.iscommand = 1;  }  else    printf("No command\n");    if(camera->timer_struct.unit == SECONDS){    timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(camera->timer_struct.spinbutton))*1000;    sprintf(snaplabeltext, "Snapping Every %d %s", gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(camera->timer_struct.spinbutton)), "Second(s)");  }  else{    timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(camera->timer_struct.spinbutton))*1000*60;    sprintf(snaplabeltext, "Snapping Every %d %s", gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(camera->timer_struct.spinbutton)), "Minute(s)");  }    if(GTK_TOGGLE_BUTTON(camera->timer_struct.beepselect)->active)    camera->timer_struct.beep = 1;  if(camera->speed_fastest)    camera->speed_fastest = 0;  else    gtk_timeout_remove(camera->timeoutid);  camera->timeoutid = gtk_timeout_add(timeout, (GtkFunction)next_frame, (gpointer)camera);    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_window_set_title (GTK_WINDOW (window), "Snapping...");  vbox = gtk_vbox_new(FALSE, 2);  gtk_container_add(GTK_CONTAINER(window), vbox);  gtk_widget_show(vbox);    snaplabel = gtk_label_new(snaplabeltext);  gtk_box_pack_start(GTK_BOX(vbox), snaplabel, TRUE, TRUE, 0);  gtk_widget_show(snaplabel);    nowbutton = gtk_button_new_with_label("Snap Now");  gtk_box_pack_start(GTK_BOX(vbox), nowbutton, TRUE, TRUE, 0);  gtk_signal_connect(GTK_OBJECT(nowbutton), "clicked", (GtkSignalFunc)timer_snap_now, camera);  gtk_widget_show(nowbutton);  stopbutton = gtk_button_new_with_label("Stop Snapping");  gtk_box_pack_start(GTK_BOX(vbox), stopbutton, TRUE, TRUE, 0);  gtk_signal_connect(GTK_OBJECT(stopbutton), "clicked", (GtkSignalFunc)timer_stop_timer, camera);  gtk_widget_show(stopbutton);  gtk_widget_destroy(camera->timer_struct.timerdialog);  gtk_widget_show(window);}void timer_cancel(GtkWidget *widget, struct Camera *camera){  //camera->on_timer = 0;  gtk_widget_destroy(camera->timer_struct.timerdialog);}void set_timer(GtkWidget *widget, struct Camera *camera){/*  GtkWidget *timerdialog;  GtkWidget *hbox;  GtkWidget *spinlabel;  GtkWidget *spinbutton;  GtkObject *spinadjust;  GtkWidget *dropbox;  GtkWidget *dropboxmenu;  GtkWidget *secondsitem;  GtkWidget *minutesitem;  GtkWidget *beepselect;  GtkWidget *commandlabel;  GtkWidget *commandentry;  GtkWidget *imageinfobutton;  GtkWidget *okbutton;  GtkWidget *cancelbutton;*/  //  camera->on_timer = 1;    camera->timer_struct.timerdialog = gtk_dialog_new();  gtk_window_set_title (GTK_WINDOW (camera->timer_struct.timerdialog), "Set Timer");  camera->timer_struct.okbutton = gtk_button_new_with_label("Ok");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (camera->timer_struct.timerdialog)->action_area), camera->timer_struct.okbutton, TRUE, TRUE, 0);  gtk_signal_connect(GTK_OBJECT (camera->timer_struct.okbutton), "clicked", (GtkSignalFunc) timer_ok, camera);  gtk_widget_show(camera->timer_struct.okbutton);  camera->timer_struct.cancelbutton = gtk_button_new_with_label("Cancel");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (camera->timer_struct.timerdialog)->action_area), camera->timer_struct.cancelbutton, TRUE, TRUE, 0);  gtk_signal_connect(GTK_OBJECT (camera->timer_struct.cancelbutton), "clicked", (GtkSignalFunc) timer_cancel, camera);  gtk_widget_show(camera->timer_struct.cancelbutton);  camera->timer_struct.hbox = gtk_hbox_new (FALSE, 2);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (camera->timer_struct.timerdialog)->vbox), camera->timer_struct.hbox, TRUE, TRUE, 0);  gtk_widget_show(camera->timer_struct.hbox);  camera->timer_struct.spinlabel = gtk_label_new("Every");  gtk_box_pack_start (GTK_BOX (camera->timer_struct.hbox), camera->timer_struct.spinlabel, TRUE, TRUE, 0);  gtk_widget_show(camera->timer_struct.spinlabel);  camera->timer_struct.spinadjust = gtk_adjustment_new( 0, 0, 999, 1, 10, 0 );  camera->timer_struct.spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT(camera->timer_struct.spinadjust), .5, 0);  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(camera->timer_struct.spinbutton), TRUE);  gtk_box_pack_start (GTK_BOX (camera->timer_struct.hbox), camera->timer_struct.spinbutton, TRUE, TRUE, 0);  gtk_widget_show(camera->timer_struct.spinbutton);  camera->timer_struct.dropbox = gtk_option_menu_new();  gtk_box_pack_start(GTK_BOX(camera->timer_struct.hbox), camera->timer_struct.dropbox, TRUE, TRUE, 0);  camera->timer_struct.dropboxmenu = gtk_menu_new();  camera->timer_struct.secondsitem = gtk_menu_item_new_with_label("seconds");  gtk_menu_append(GTK_MENU(camera->timer_struct.dropboxmenu), camera->timer_struct.secondsitem);  camera->timer_struct.unit = SECONDS;  gtk_signal_connect(GTK_OBJECT (camera->timer_struct.secondsitem), "activate",                     GTK_SIGNAL_FUNC (set_timer_seconds), camera);  gtk_widget_show(camera->timer_struct.secondsitem);  camera->timer_struct.minutesitem = gtk_menu_item_new_with_label("minutes");  gtk_menu_append(GTK_MENU(camera->timer_struct.dropboxmenu), camera->timer_struct.minutesitem);  gtk_signal_connect(GTK_OBJECT (camera->timer_struct.minutesitem), "activate",                     GTK_SIGNAL_FUNC (set_timer_minutes), camera);  gtk_widget_show(camera->timer_struct.minutesitem);  gtk_option_menu_set_menu(GTK_OPTION_MENU(camera->timer_struct.dropbox), camera->timer_struct.dropboxmenu);  gtk_widget_show(camera->timer_struct.dropbox);  camera->timer_struct.beepselect = gtk_check_button_new_with_label("Beep on snap");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (camera->timer_struct.timerdialog)->vbox), camera->timer_struct.beepselect, TRUE, TRUE, 0);  gtk_widget_show(camera->timer_struct.beepselect);  camera->timer_struct.commandlabel = gtk_label_new("Run command after snap:");  gtk_label_set_justify(GTK_LABEL(camera->timer_struct.commandlabel), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->timer_struct.timerdialog)->vbox), camera->timer_struct.commandlabel, FALSE, FALSE, 0);  gtk_widget_show(camera->timer_struct.commandlabel);  camera->timer_struct.commandentry = gtk_entry_new();  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->timer_struct.timerdialog)->vbox), camera->timer_struct.commandentry, TRUE, TRUE, 0);  gtk_widget_show(camera->timer_struct.commandentry);  camera->timer_struct.imageinfobutton = gtk_button_new_with_label("Set image information");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (camera->timer_struct.timerdialog)->vbox), camera->timer_struct.imageinfobutton, TRUE, TRUE, 2);  gtk_signal_connect (GTK_OBJECT (camera->timer_struct.imageinfobutton), "clicked", GTK_SIGNAL_FUNC (save_dialog), camera);  gtk_widget_show(camera->timer_struct.imageinfobutton);  gtk_widget_show(camera->timer_struct.timerdialog);  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -