// 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"); } } }
// 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"); } } }