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

📄 xgps.c

📁 gpsd, a popular GPS daemon.
💻 C
📖 第 1 页 / 共 3 页
字号:
	(void)XtVaCreateManagedWidget("Latitude", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		6,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		5,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		12,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		0,	    NULL);	(void)XtVaCreateManagedWidget("Longitude", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		12,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		5,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		18,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		0,	    NULL);	(void)XtVaCreateManagedWidget("Altitude", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		18,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		5,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		24,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		0,	    NULL);	(void)XtVaCreateManagedWidget("Speed", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		24,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		5,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		30,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		0,	    NULL);	text_1 = XtVaCreateManagedWidget("time",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		0,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		15,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		6,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		5,	    NULL);	text_2 = XtVaCreateManagedWidget("latitude",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		6,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		15,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		12,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		5,	    NULL);	text_3 = XtVaCreateManagedWidget("longitude",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		12,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		15,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		18,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		5,	    NULL);	text_4 = XtVaCreateManagedWidget("altitude",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		18,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		15,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		24,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		5,	    NULL);	text_5 = XtVaCreateManagedWidget("speed",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		24,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		15,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		30,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		5,	    NULL);	(void)XtVaCreateManagedWidget("EPH", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		0,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		20,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		6,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		15,	    NULL);	(void)XtVaCreateManagedWidget("EPV", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		6,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		20,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		12,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		15,	    NULL);	(void)XtVaCreateManagedWidget("Climb", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		12,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		20,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		18,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		15,	    NULL);	(void)XtVaCreateManagedWidget("Track", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		18,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		20,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		24,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		15,	    NULL);	(void)XtVaCreateManagedWidget("Status", xmLabelGadgetClass, gps_data,	    XmNalignment,		XmALIGNMENT_END,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		24,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		20,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		30,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		15,	    NULL);	text_7 = XtVaCreateManagedWidget("eph",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		0,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		30,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		6,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		20,	    NULL);	text_8 = XtVaCreateManagedWidget("epv",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		6,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		30,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		12,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		20,	    NULL);	text_9 = XtVaCreateManagedWidget("climb",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		12,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		30,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		18,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		20,	    NULL);	text_6 = XtVaCreateManagedWidget("track",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		18,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		30,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		24,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		20,	    NULL);	text_10 = XtVaCreateManagedWidget("status",	    xmTextFieldWidgetClass,	gps_data,	    XmNeditable,		False,	    XmNcursorPositionVisible,	False,	    XmNtopAttachment,		XmATTACH_POSITION,	    XmNtopPosition,		24,	    XmNrightAttachment,		XmATTACH_POSITION,	    XmNrightPosition,		30,	    XmNbottomAttachment,	XmATTACH_POSITION,	    XmNbottomPosition,		30,	    XmNleftAttachment,		XmATTACH_POSITION,	    XmNleftPosition,		20,	    NULL);	XtManageChild(gps_data);	XtManageChild(sat_frame);	XtManageChild(sky_frame);	XtManageChild(gps_frame);	XtVaSetValues(main_w,	    XmNmenuBar,		menubar,	    XmNworkWindow,	form,	    NULL);	XtRealizeWidget(toplevel);	/*@ -type -nullpass @*/	delw = XmInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",	    (Boolean)False);	(void)XmAddWMProtocolCallback(toplevel, delw, 		(XtCallbackProc)quit_cb, NULL);	/*@ +type +onlytrans @*/	/* create empty list items to be replaced on update */	string = XmStringCreateSimple(" ");	for (i = 0; i <= MAXCHANNELS; i++)		XmListAddItem(satellite_list, string, 0);	XmStringFree(string);}/*@ +mustfreefresh -ignoresigns +immediatetrans @*//* runs when there is no data for a while */static voidhandle_time_out(XtPointer client_data, XtIntervalId *ignored){	XmTextFieldSetString(text_10, "UNKNOWN");}static voidhandle_input(XtPointer client_data, int *source, XtInputId *id){	if (gps_poll(gpsdata) < 0) {		XtRemoveInput(gps_input);		(void)gps_close(gpsdata);		XtRemoveTimeOut(timeout);		XmTextFieldSetString(text_10, "No GPS data available");		(void)err_dialog(toplevel, "No GPS data available.\n\n"		    "Check the connection to gpsd and if gpsd is running");		gps_lost = true;		gps_timeout = XtAppAddTimeOut(app, 3000, handle_gps, app);	}}/* runs on each sentence */static voidupdate_panel(struct gps_data_t *gpsdata, char *message, 	size_t len UNUSED, int level UNUSED){	unsigned int i;	int newstate;	XmString string[MAXCHANNELS + 1];	char s[128], *latlon, *sp;	/* the raw data sisplay */	if (message[0] != '\0')		while (isspace(*(sp = message + strlen(message) - 1)))			*sp = '\0';	XmTextFieldSetString(status, message);	/* This is for the satellite status display */	if (gpsdata->satellites) {		string[0] = XmStringCreateSimple(		    "PRN:   Elev:  Azim:  SNR:  Used:");		for (i = 0; i < MAXCHANNELS; i++) {			if (i < (unsigned int)gpsdata->satellites) {				(void)snprintf(s, sizeof(s),  				    " %3d    %2d    %3d    %2d      %c", 				    gpsdata->PRN[i], gpsdata->elevation[i],				    gpsdata->azimuth[i], gpsdata->ss[i],				    gpsdata->used[i] ? 'Y' : 'N');			} else			    (void)strlcpy(s, "                  ", sizeof(s));			string[i + 1] = XmStringCreateSimple(s);		}		XmListReplaceItemsPos(satellite_list, string,		    (int)sizeof(string), 1);#ifndef S_SPLINT_S		for (i = 0; i < (sizeof(string)/sizeof(string[0])); i++)			XmStringFree(string[i]);#endif /* S_SPLINT_S */	}	/* here are the value fields */	if (isnan(gpsdata->fix.time)==0) {	    (void)unix_to_iso8601(gpsdata->fix.time, s, sizeof(s));		XmTextFieldSetString(text_1, s);	} else		XmTextFieldSetString(text_1, "n/a");	if (gpsdata->fix.mode >= MODE_2D) {		latlon = deg_to_str(deg_type,		    fabs(gpsdata->fix.latitude));		(void)snprintf(s, sizeof(s), "%s %c", latlon,		    (gpsdata->fix.latitude < 0) ? 'S' : 'N');		XmTextFieldSetString(text_2, s);	} else		XmTextFieldSetString(text_2, "n/a");	if (gpsdata->fix.mode >= MODE_2D) {		latlon = deg_to_str(deg_type,		    fabs(gpsdata->fix.longitude));		(void)snprintf(s, sizeof(s), "%s %c", latlon,		    (gpsdata->fix.longitude < 0) ? 'W' : 'E');		XmTextFieldSetString(text_3, s);	} else		XmTextFieldSetString(text_3, "n/a");	if (gpsdata->fix.mode == MODE_3D) {		(void)snprintf(s, sizeof(s), "%f %s",		    gpsdata->fix.altitude * altunits->factor,		    altunits->legend);		XmTextFieldSetString(text_4, s);	} else		XmTextFieldSetString(text_4, "n/a");	if (gpsdata->fix.mode >= MODE_2D && isnan(gpsdata->fix.track)==0) {		(void)snprintf(s, sizeof(s), "%f %s",		    gpsdata->fix.speed * speedunits->factor,		    speedunits->legend);		XmTextFieldSetString(text_5, s);	} else		XmTextFieldSetString(text_5, "n/a");	if (gpsdata->fix.mode >= MODE_2D && isnan(gpsdata->fix.track)==0) {		(void)snprintf(s, sizeof(s), "%f degrees",

⌨️ 快捷键说明

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