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

📄 ls_menu.c

📁 通讯程序源码
💻 C
字号:
/* * Routines for displaying current line settings and prompting for changes. */#include <stdio.h>#include <curses.h>#include "dial_dir.h"#include "misc.h"#include "param.h"static void disp_settings();/* * Display the current line settings and prompt for changes.  A non-zero * return code means settings were changed. */intls_menu(){	extern int fd;	WINDOW *l_win, *newwin();	int num, ret_code;	l_win = newwin(21, 47, 0, 16);	mvwattrstr(l_win, 1, 16, A_BOLD, "Line Settings");	horizontal(l_win, 2, 0, 47);	mvwaddstr(l_win, 6, 5, "1)     300,E,7,1     8)     300,N,8,1");	mvwaddstr(l_win, 7, 5, "2)    1200,E,7,1     9)    1200,N,8,1");	mvwaddstr(l_win, 8, 5, "3)    2400,E,7,1    10)    2400,N,8,1");	mvwaddstr(l_win, 9, 5, "4)    4800,E,7,1    11)    4800,N,8,1");	mvwaddstr(l_win, 10, 5, "5)    9600,E,7,1    12)    9600,N,8,1");	mvwaddstr(l_win, 11, 5, "6)   19200,E,7,1    13)   19200,N,8,1");	mvwaddstr(l_win, 12, 5, "7)   38400,E,7,1    14)   38400,N,8,1");	mvwaddstr(l_win, 14, 4, "Parity        Data Bits       Stop Bits");	mvwaddstr(l_win, 15, 4, "15) Odd       16) 7 bits      18) 1 bit");	mvwaddstr(l_win, 16, 18, "17) 8 bits      19) 2 bits");	mvwaddstr(l_win, 18, 4, "20) Save Changes");	mvwattrstr(l_win, 18, 28, A_BOLD, "YOUR CHOICE:");	wmove(l_win, 18, 41);	box(l_win, VERT, HORZ);	mvwaddstr(l_win, 20, 13, " Press <ESC> to return ");					/* display current settings */	disp_settings(l_win);	wmove(l_win, 18, 41);	wrefresh(l_win);					/* get the options */	ret_code = 0;	while ((num = get_num(l_win, 2)) != -1) {		switch (num) {			case 1:				dir->baud[0] = 300;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 2:				dir->baud[0] = 1200;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 3:				dir->baud[0] = 2400;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 4:				dir->baud[0] = 4800;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 5:				dir->baud[0] = 9600;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 6:				dir->baud[0] = 19200;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 7:				dir->baud[0] = 38400;				dir->parity[0] = 'E';				dir->data_bits[0] = 7;				dir->stop_bits[0] = 1;				break;			case 8:				dir->baud[0] = 300;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 9:				dir->baud[0] = 1200;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 10:				dir->baud[0] = 2400;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 11:				dir->baud[0] = 4800;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 12:				dir->baud[0] = 9600;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 13:				dir->baud[0] = 19200;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 14:				dir->baud[0] = 38400;				dir->parity[0] = 'N';				dir->data_bits[0] = 8;				dir->stop_bits[0] = 1;				break;			case 15:				dir->parity[0] = 'O';				break;			case 16:				dir->data_bits[0] = 7;				break;			case 17:				dir->data_bits[0] = 8;				break;			case 18:				dir->stop_bits[0] = 1;				break;			case 19:				dir->stop_bits[0] = 2;				break;			case 20:					/* copy the current settings */				param->d_baud = dir->baud[0];				param->d_parity = dir->parity[0];				param->d_data_bits = dir->data_bits[0];				param->d_stop_bits = dir->stop_bits[0];				/*				 * We've changed the values in memory even				 * if the update fails.				 */				if (up_param()) {					touchwin(l_win);					wrefresh(l_win);				}				break;			default:				beep();		}		ret_code++;		disp_settings(l_win);		mvwaddstr(l_win, 17, 41, "    ");		wmove(l_win, 18, 41);		wrefresh(l_win);	}	if (fd == -1) {		werase(l_win);		wrefresh(l_win);	}	delwin(l_win);	return(ret_code);}/* * Display the current settings.  Formats the entire string at one * time, in case you've got a magic cookie terminal. */static voiddisp_settings(win)WINDOW *win;{	extern int xmc;	char buf[40];	sprintf(buf, "Current Settings: %5d,%c,%d,%d", dir->baud[0],	 dir->parity[0], dir->data_bits[0], dir->stop_bits[0]);	if (xmc > 0) {		touchwin(win);		clear_line(win, 4, 8, TRUE);		wrefresh(win);	}	mvwattrstr(win, 4, 8, A_BOLD, buf);	return;}

⌨️ 快捷键说明

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