Пример #1
0
int main(int argc, char *argv[]){
	parce_args(argc, argv);
	tty_init();
	signal(SIGTERM, quit);		// kill (-15)
	signal(SIGINT,  quit);		// ctrl+C
	signal(SIGQUIT, SIG_IGN);	// ctrl+\   .
	signal(SIGTSTP, SIG_IGN);	// ctrl+Z
	setbuf(stdout, NULL);
	erase_ctrlr();
	if(G.erasecmd) return 0;
	if(G.relaycmd == -1 && G.gotopos == NULL){
		printf("No commands given!\n");
		return -1;
	}
	if(G.relaycmd != -1){
		int ans;
		if(G.relaycmd) // turn on
			ans = con_sig('R',0);
		else // turn off
			ans = con_sig('r',0);
		if(ans)
			wait_for_answer();
		else
			return -1;
	}
	if(G.gotopos){
		if(strcasecmp(G.gotopos, "refmir") == 0){
			if(!con_sig('1',0)) return -1;
			printf("Go to last end-switch\n");
			wait_for_answer();
			if(!con_sig('-',500)) return -1;
		}else if(strcasecmp(G.gotopos, "diagmir") == 0){
			if(!con_sig('0',0)) return -1;
			printf("Go to zero's end-switch\n");
			wait_for_answer();
			if(!con_sig('+',2500)) return -1;
		}else if(strcasecmp(G.gotopos, "shack") == 0){
			if(!con_sig('1',0)) return -1;
			printf("Go to last end-switch\n");
			wait_for_answer();
			if(!con_sig('-',30000)) return -1;
		}else{
			printf("Wrong goto command, should be one of refmir/diagmir/shack\n");
			return -1;
		}
		printf("Go to position\n");
		wait_for_answer();
	}
	return 0;
}
Пример #2
0
int main() {

	char cmd, data;
	char config[8];
//	char state = 0;		// State: 0=failure, 1=success
	int i;
	InitUart();

	//Error:
	while(1)
	{
		if(!EmptyUart1())
		{
			cmd = GetUart1();
			switch(cmd)
			{
			// 'test' command
			case 't':
				if (start_test())
					PutUart1('s');
				else
					PutUart1('f');
				break;
			// 'ready' inquiry
			case 'r':
				PutUart1('a');		// Acknowledge
				break;
			// 'memory' command
			case 'm':
				PutUart1('a');		// Acknowledge
//				flush_rx_buffer();
				if(dump_memory())
					PutUart1('s');
				else
					PutUart1('f');
				break;
			// 'configuration' command
			case 'c':
#if REMOTE_CONFIG == 0
				PutUart1('f');
#else
				PutUart1('a');		// Acknowledge
				for(i=0; i<8; i++)
				{
					if(!wait_for_answer(&data))
						break;
					config[i] = data;
				}
				if(i<8)
					PutUart1('f');
				else
				{
					INT_A_PERIOD = config[0];
					INT_B_PERIOD = config[1];
					INT_C_PERIOD = config[2];
					INT_D_PERIOD = config[3];
					BURST_WRITE = config[4]>0 ? 1 : 0;
					TIME_SCALER = config[5]>0 ? config[5] : 1;
					HOLD_TIME = config[6];
					TEST_DURATION = config[7];
					PutUart1('s');
				}
#endif
				break;
			default:

				break;
			}
		}
	}
	return( 0 );
}