Пример #1
0
// read data format  "X40001.234e-3"
// write data format  "X60001.234e-3"
void scia_cmd_proc( int * sci_cmd, double * sci_ref)
{
	double data;
	int addr,check;
	 
	* sci_cmd = CMD_NULL;
	* sci_ref = 0.0;

	if( scia_rx_msg_flag == 0) return;

	scia_rx_msg_flag = 0;

	if ( scia_rx_msg_box[0] != 'X') return;
	
	addr =  (scia_rx_msg_box[2]- '0')* 100 +(scia_rx_msg_box[2]- '0')*10 + (scia_rx_msg_box[2]- '0');
	data =  atof( & scia_rx_msg_box[4]);
	
	// regist write function decoding
	if( scia_rx_msg_box[1] == '6'){
		if( addr == 900 ){ * sci_cmd = CMD_START; * sci_ref = data;}
		else if( addr == 901 ){ * sci_cmd = CMD_STOP;  * sci_ref = 0.0;}
		else{
			// registor_write_proc(addr,data);

			check = SaveDataProc(addr, data);
		}
	}
	else if(scia_rx_msg_box[1] == '4'){
		check = get_code_information( addr, CMD_READ_DATA , & code_inform);
		if( check != 0 ){
			if( code_inform.type == TYPE_DOUBLE ) data = code_inform.code_value.doubles;
			else 								  data = (double)(code_inform.code_value.ints);

			snprintf( gStr1,20,"read data =10.3%e \n",data);
			load_scia_tx_mail_box(gStr1);		
		}
		else{
			load_scia_tx_mail_box("Error Invalid Address");		
		}
	}
}
Пример #2
0
// read data format   "9:4:123:x.xxxe-x"
// write data format  "9:6:123:1.234e-3"
void scia_cmd_proc( int * sci_cmd, double * sci_ref)
{
	double data;
	int addr,check;
	char str[30]={0};
	 
	* sci_cmd = CMD_NULL;
	* sci_ref = 0.0;

	if( scia_rx_msg_flag == 0) return;

	scia_rx_msg_flag = 0;

	if ( scia_rx_msg_box[0] != '9') return;
	
	addr =  (scia_rx_msg_box[4]- '0')* 100 +(scia_rx_msg_box[5]- '0')*10 + (scia_rx_msg_box[6]- '0');
	scia_rx_msg_box[16]=0;
	data =  atof( & scia_rx_msg_box[8]);
	
	// regist write function decoding
	if( scia_rx_msg_box[2] == '6'){
		if( addr == 900 ){
			check = (int)data;
			if(check == 10){
				* sci_cmd = CMD_START; * sci_ref = data;
				load_scia_tx_mail_box("\n UART CMD_START");		
			}
			else if( check == 20 ){
				* sci_cmd = CMD_STOP;  * sci_ref = 0.0;
				load_scia_tx_mail_box("\n UART CMD_STOP");		
			}
			else if( check == 30 ){
				* sci_cmd = CMD_RESET;  * sci_ref = 0.0;
				load_scia_tx_mail_box("\n UART CMD_RESET");		
			}
			else if( data == 40 ){
				* sci_cmd = CMD_SAVE;  * sci_ref = 0.0;
				load_scia_tx_mail_box("\n UART CMD_SAVE");		
			}
			else if( data == 80 ){
				* sci_cmd = CMD_NULL;  * sci_ref = 0.0;
				get_adc_offset();
			}
			else if( data == 90 ){
				* sci_cmd = CMD_NULL;  * sci_ref = 0.0;
				load_scia_tx_mail_box("\n EEPROM init Start");		
				check = init_eprom_data();		// 0이 아니면 address value
				if( check != 0) load_scia_tx_mail_box("\n EEPROM init Fail");		
				else		load_scia_tx_mail_box("\n EEPROM init Success");
			}
			else{
				load_scia_tx_mail_box("\n Illegal CMD data");		
			}
		}
		else{
			// registor_write_proc(addr,data);
			check = SaveDataProc(addr, data);
			Nop();
		}
	}
	else if(scia_rx_msg_box[2] == '4'){
	
		if(addr == 901){	//	monitor state
			check = (int)data;
			if(check == 0){
				switch(gMachineState){
					case STATE_POWER_ON:	load_scia_tx_mail_box("\n POWER_ON"); break;		
					case STATE_READY: 		load_scia_tx_mail_box("\n STATE_READY"); break;		
					case STATE_RUN: 		load_scia_tx_mail_box("\n STATE_RUN"); break;		
					case STATE_TRIP: 		load_scia_tx_mail_box("\n STATE_TRIP"); break;		
					case STATE_INIT_RUN: 	load_scia_tx_mail_box("\n STATE_INIT_RUN"); break;		
					case STATE_GO_STOP: 	load_scia_tx_mail_box("\n STATE_GO_STOP"); break;		
					case STATE_WAIT_BREAK_OFF: load_scia_tx_mail_box("\n STATE_WAIT_BREAK_OFF"); break;	
					default: 				load_scia_tx_mail_box("\n Unknown State"); break;
				}
			}
			return;
		}
		else if(addr == 902){	//	내부 변수 read
			check = (int)data;
			
			// check 에 따른 변수를 포인터로 두어서 처리 한다. 
			snprintf( str,30,"\n Vdc =%10.3e \n",Vdc);	load_scia_tx_mail_box(str); 
			return;
		}

		check = get_code_information( addr, CMD_READ_DATA , & code_inform);
	
		if( check == 0 ){
			load_scia_tx_mail_box(code_inform.disp);		
			if( code_inform.type == TYPE_DOUBLE )
				snprintf( str,30," :: read data =%10.3e \n",code_inform.code_value.doubles);
			else
				snprintf( str,30," :: read data =%10d \n",code_inform.code_value.ints);
			
			load_scia_tx_mail_box(str);		
		}
		else{
			load_scia_tx_mail_box("Error Invalid Address");		
		}
	}
}