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

📄 ecusetup.c

📁 一个通讯程序源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	setup_display_tty();	setup_display_single_char();	setup_display_baud();	wrefresh(setw);}	/* end of setup_display_screen *//*+-------------------------------------------------------------------------	setup_line_open()--------------------------------------------------------------------------*/intsetup_line_open(){	register itmp;	register retries = 8;	char *linst_err_text();	char *cptr;	char msg[80];	long wait_msec;	int displayed_single_char_exit = 0;	while(itmp = lopen())	{		if(retries)		{			if(	(itmp != LINST_ENABLED_IN_USE) &&				(itmp != LINST_DIALOUT_IN_USE) && (itmp < 0))			{				goto FAIL;			}			sprintf(msg,"%s - waiting %d sec",linst_err_text(itmp),retries);			cptr = msg;			if(!displayed_single_char_exit)			{				setw_bot_msg("Press any key to skip retries");				displayed_single_char_exit = 1;			}		}		else		{FAIL:			retries = 0;			cptr = linst_err_text(itmp);			ring_bell();		}		setw_err_msg(cptr);		if(!retries--)			break;		wait_msec = 1000L;		while(wait_msec > 0)		{			if(ttyrdchk())			{				(void)ttygetc(1);				goto FAIL;			}			wait_msec -= Nap(100L);		}		setw_err_msg("");	}	setup_display_tty();	return(itmp);}	/* end of setup_line_open *//*+-------------------------------------------------------------------------	setw_get_single(nondelim_list)assumes cursor is already positioned--------------------------------------------------------------------------*/intsetw_get_single(nondelim_list)register char *nondelim_list;{	register uint itmp;	static uchar setw_nondelim_list[] =	{		CRET,NL,CTL_B,CTL_D,TAB,ESC,CTL_L,CTL_R,XFend,XFcurup,XFcurdn	};	itmp = winget_single(setw,nondelim_list,setw_nondelim_list);	if((itmp & 0xFF) == CRET)		itmp = NL | 0x1000;	return(itmp);}	/* end of setw_get_single *//*+-------------------------------------------------------------------------	setup_screen(argv_logical)--------------------------------------------------------------------------*/voidsetup_screen(argv_logical)char *argv_logical;{	register itmp;	register input_state = 0;	char s80[80];	char *cptr;	char logical[NAME_LEN + 1];	int done = 0;	uint baud;	uchar delim;	/* important to be unsigned to avoid sign extension */	PDE *tpde;	WINDOW *window_create();	static uchar use_input_delim[] =		{TAB,NL,XFcurdn,XFcurup,XFend,CTL_D,(uchar)0};	windows_start();	sprintf(s80,"ecu %s",revstr);	setw = window_create(s80,-3,SETW_TLY,SETW_TLX,SETW_LINES,SETW_COLS);	shm->Llogical[0] = 0;	logical[0] = 0;	setup_display_screen(1);REENTER_INPUT_LOOP:	while(!done)	{		wrefresh(setw);		switch(input_state)		{			case 0:				if(argv_logical)				{					itmp = 0;	/* 'ecu -' means dont dial */					if(strcmp(argv_logical,"-"))	/* if not "-" */					{						strncpy(s80,argv_logical,NAME_LEN + 1);						s80[NAME_LEN + 1] = 0;						itmp = strlen(s80);					}					argv_logical = (char *)0;					delim = XFend;				}				else				{					if(logical[0])						strcpy(s80,logical);					setw_bot_msg(						"logical phone directory entry, phone number or empty"); 					itmp = wingets(setw,NAME_Y,NAME_X,s80,NAME_LEN + 1,&delim,						(logical[0] != 0),(int *)0);					setw_err_msg("");				}				if(strchr((char *)use_input_delim,(char)delim))				{					strcpy(logical,s80);					if((tpde = logical_telno_to_pde(logical)) &&						!copy_pde_to_Lvariables(tpde,1))					{						strcpy(logical,tpde->logical);						setup_display_screen(0);						break;					}					else					{						setw_err_msg(errmsg);						setup_display_screen(0);						ring_bell();						argv_logical = (char *)0;						continue;					}				}				setup_display_name();				break;			case 1:				cptr = strrchr(DEFAULT_TTY,'/'); /* there will be a /, right? */				cptr++;				sprintf(s80,"comm line: i.e., %s",cptr);				setw_bot_msg(s80);				setup_display_tty();				strcpy(s80,"/dev/");				strcpy(s80,&shm->Lline[5]); 				itmp = wingets(setw,TTY_Y,TTY_X,s80,TTY_LEN + 1,&delim,					1,(int *)0);				setw_err_msg("");				if(strchr((char *)use_input_delim,(char)delim))				{					strcpy(shm->Lline,"/dev/");					strcpy(&shm->Lline[5],s80);				}				setup_display_tty();				break;			case 2:				setw_bot_msg("duplex F:full H:half");				wmove(setw,DPX_Y,DPX_X);				wrefresh(setw);				delim = NL;				switch(itmp = setw_get_single("fh"))				{					case 0:					case 1:						shm->Lfull_duplex = itmp;						break;					default:						delim = itmp & 0xFF;						break;				}				break;			case 3:		/* baud */				setw_bot_msg(				"rates: 110,300,600,1200,2400,4800,9600,19200,38400");CASE_3:				sprintf(s80,"%u",shm->Lbaud); 				itmp = wingets(setw,BAUD_Y,BAUD_X,s80,BAUD_LEN + 1,&delim,					1,(int *)0);				if(strchr((char *)use_input_delim,(char)delim))				{					if(valid_baud_rate(baud = atoi(s80)) < 0)					{						setup_display_baud();						ring_bell();						goto CASE_3;					}					shm->Lbaud = baud;				}				setup_display_baud();				break;			case 4:				setw_bot_msg("parity: N:none E:even O:odd");				wmove(setw,PAR_Y,PAR_X);				wrefresh(setw);				delim = NL;				switch(itmp = setw_get_single("neo"))				{					case 0:	shm->Lparity = 0;   break;					case 1: shm->Lparity = 'e'; break;					case 2: shm->Lparity = 'o'; break;					default:						delim = itmp & 0xFF;						break;				}				wmove(setw,DB_Y,DB_X);				waddch(setw,(shm->Lparity) ? '7' : '8');				break;			case 5:				setw_bot_msg("");				wmove(setw,XADDNL_Y,XADDNL_X);				wrefresh(setw);				delim = NL;				switch(itmp = setw_get_single("ny"))				{					case 0:					case 1: shm->Ladd_nl_outgoing = itmp; break;					default: delim = itmp & 0xFF;				}				break;			case 6:				setw_bot_msg("");				wmove(setw,RADDNL_Y,RADDNL_X);				wrefresh(setw);				delim = NL;				switch(itmp = setw_get_single("ny"))				{					case 0:					case 1: shm->Ladd_nl_incoming = itmp; break;					default: delim = itmp & 0xFF; break;				}				break;		}		if(argv_logical)			break;		switch(delim)		{			case XFcurup:			case CTL_B:				if(input_state)					input_state--;				else					input_state = 6;				break;			case XFcurdn:			case TAB:			case NL:				input_state++;				input_state %= 7;				break;			case ESC:				if(shm->Liofd >= 0)					lclose();				setw_bot_msg("");				setup_display_tty();				termecu(0);				break;			case CTL_L:			case CTL_R:				tcap_clear_screen();				touchwin(stdscr);				wrefresh(stdscr);				setup_display_screen(1);				touchwin(setw);				wrefresh(setw);				break;			case XFend:			case CTL_D:				done = 1;				break;		}	}	if(shm->Liofd < 0)	{		wmove(setw,TTY_Y,TTY_X);		wrefresh(setw);		if(setup_line_open())		{			done = 0;			input_state = 1;			argv_logical = (char *)0;			goto REENTER_INPUT_LOOP;		}	}	wmove(setw,SETW_LINES - 2,1);	wstandout(setw);	waddstr(setw,		/* kludge -- must change if setw width does */		"------- Press HOME then 'help' for further assistance --------");	wstandend(setw);	setw_bot_msg("");	wrefresh(setw);	delwin(setw);	windows_end(0);	ttymode(1);	tcap_cursor(SETW_TLY + SETW_LINES + 2,0);	rcvr_pid = -2;	if(delim == CTL_D)		phdir_manager();	else if(logical[0])	{		tpde = logical_telno_to_pde(logical); /* error return not likely now */		pde_dial(tpde);	}	else 		start_rcvr_process(1);}	/* end of setup_screen *//* vi: set tabstop=4 shiftwidth=4: */

⌨️ 快捷键说明

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