void ProcessaCMD_VERSION( BYTE * buffer ) { BYTE bufOut[16]; BYTE bLog; DWORD* dwTmp[3]; BYTE bTmp; char i; if ( !IsConnected() ) { return; } bLog = EVT_SW_VERSION; Log( EVT_SW, &bLog, sizeof( BYTE )); MakeHeader( bufOut, sizeof( bufOut ), buffer[EO_FIELD], CMD_VERSION ); dwTmp[0] = GetBoardVersion(); dwTmp[1] = GetFirmwareVersion(); dwTmp[2] = GetBootLoaderVersion(); for ( bLog = 0; bLog < GET_VEC_NUM_MEMBERS(dwTmp); bLog++ ) { for ( i = sizeof( DWORD ) ; i ; i-- ) { bTmp = CMD_FIELD + (bLog << 2) + (sizeof(DWORD) - (i - 1)); bufOut[ bTmp ] = ((BYTE*)dwTmp[bLog])[(i - 1)]; } } enviarPacotePC( bufOut, sizeof( bufOut )); }
BOOL MFC_HW_Init(void) { ///////////////////////// // // // 1. Reset the MFC IP // // // ///////////////////////// MfcReset(); //////////////////////////////////////// // // // 2. Download Firmware code into MFC // // // //////////////////////////////////////// MfcFirmwareIntoCodeBuf(); MfcFirmwareIntoCodeDownReg(); RETAILMSG(ZONE_FUNCTION, (TEXT("MFC::MFC_HW_Init ::Download FirmwareIntoBitProcessor OK.\r\n"))); //////////////////////////// // // // 3. Start Bit Processor // // // //////////////////////////// MfcStartBitProcessor(); //////////////////////////////////////////////////////////////////// // // // 4. Set the Base Address Registers for the following 3 buffers // // (CODE_BUF, WORKING_BUF, PARAMETER_BUF) // // // //////////////////////////////////////////////////////////////////// MfcConfigSFR_BITPROC_BUF(); ////////////////////////////////// // // // 5. Set the Control Registers // // - STRM_BUF_CTRL // // - FRME_BUF_CTRL // // - DEC_FUNC_CTRL // // - WORK_BUF_CTRL // // // ////////////////////////////////// MfcConfigSFR_CTRL_OPTS(); GetFirmwareVersion(); return TRUE; }
int main (int argc, char *argv[]) { float version = 0.0; long errorcode; long idnum = -1; //Using first found U12 long demo = 0; //Normal operations long trisD = 0; //Directions for D0-D15 long trisIO = 0; //Directions for IO0-IO3 long stateD = 0; //Output states for D0-D15 long stateIO = 0; //Output states for IO0-IO3 long updateDigital = 0; //Indicates is tris states will be written long outputD = 0; //Returns of the output registers for D0-D15 long outputIO = 0; //Output states of IO0-IO3. Cannot be read. version = GetDriverVersion(); printf("Driver version: %.3f\n", version); version = GetFirmwareVersion(&idnum); printf("U12 Firmware version: %.3f\n\n", version); /* Setting and reading directions and states */ trisD = (long)0x4800; //Setting D0-7 to outputs, D8-15 to inputs (b0000000011111111) trisIO = (long)0x0; //Setting IO0-1 to outputs, IO2-3 to inputs (b0011) stateD = (long)0x4800; //Setting D0-3 to low. D4-7 to high (b0000000011110000) stateIO = (long)0x0; //Setting IO0 to low. IO1 to high (b0010) outputIO = trisIO & stateIO; updateDigital = 1; //Updating D and IO lines errorcode = DigitalIO(&idnum, demo, &trisD, trisIO, &stateD, &stateIO, updateDigital, &outputD); handleError(errorcode, "DigitalIO (update)"); printf("DigitalIO, updating lines\n"); printf("D directions (read) = 0x%.4lx, states (read) = 0x%.4lx, output registers (read) = 0x%.4lx\n", trisD, stateD, outputD); printf("IO directions (set) = 0x%lx, states (read) = 0x%lx, output (set) = 0x%lx\n\n", trisIO, stateIO, outputIO); /* Only reading current directions (D lines only) and states */ trisD = 0; trisIO = 0; stateD = 0; stateIO = 0; updateDigital = 0; //Only read performed errorcode = DigitalIO(&idnum, demo, &trisD, trisIO, &stateD, &stateIO, updateDigital, &outputD); handleError(errorcode, "DigitalIO (read)"); printf("DigitalIO read only:\n"); printf("D directions = 0x%.4lx, states = 0x%.4lx, output registers = 0x%.4lx\n", trisD, stateD, outputD); printf("IO states = 0x%lx\n", stateIO); return 0; }
int main(int argc, char **argv) { // GetFWVer GetFirmwareVersionResponse *gfw = GetFirmwareVersion(); printf("Ver: %d, Rev: %d\n", gfw->Ver, gfw->Rev); free(gfw); InListPassiveTargetResponse *pt = InListPassiveTarget(2, 0, 0); printf("NbTg: %d\n", pt->NbTg); printf("Id: %x %x %x %x\n", pt->TargetData[5], pt->TargetData[6], pt->TargetData[7], pt->TargetData[8]); free(pt->TargetData); free(pt); }
int main (int argc, char *argv[]) { float version = 0.0; long errorcode = 0; long idnum = -1; //Using first found U12 long demo = 0; //Normal operations long stateIO = 0; //Output states for IO0-IO3 //AOUpdate specific paramters long trisD = 0; //Directions for D0-D15 long trisIO = 0; //Directions for IO0-IO3 long stateD = 0; //Output states for D0-D15 long updateDigital = 0; //Tris and state values are only being read long resetCounter = 0; //Not resetting counter unsigned long count = 0; //Returned current count value float analogOut0 = 0.8; //Voltage for AO0 float analogOut1 = 3.2; //Voltage for AO1 //AISample specific parameters long updateIO = 0; //State values are only being read long ledOn = 0; //Turning LED on long numChannels = 2; //Reading 2 channels long channels[2] = {2, 3}; //Reading AI2 and AI3 long gains[2] = {0, 0}; //Gains. Does not matter in this case since we are //performing single ended readings. long disableCal = 0; //Will apply calibration constants long overVoltage = 0; //Returns if overvoltage was detected (>1) float voltages[4] = {0}; //Returned voltage readings. Pass an array of all zeros. version = GetDriverVersion(); printf("Driver version: %.3f\n", version); version = GetFirmwareVersion(&idnum); printf("U12 Firmware version: %.3f\n\n", version); printf("Setting AO0 to %.3f V and AO1 to %.3f V\n", analogOut0, analogOut1); errorcode = AOUpdate(&idnum, demo, trisD, trisIO, &stateD, &stateIO, updateDigital, resetCounter, &count, analogOut0, analogOut1); handleError(errorcode, "AOUpdate"); errorcode = AISample(&idnum, demo, &stateIO, updateIO, ledOn, numChannels, channels, gains, disableCal, &overVoltage, voltages); handleError(errorcode, "AISample"); printf("AI%ld = %.3fV\nAI%ld = %.3fV\n", channels[0], voltages[0], channels[1], voltages[1]); return 0; }
/** * Common initialization code called by all constructors. */ void CANJaguar::InitCANJaguar() { m_table = NULL; m_transactionSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE); if (m_deviceNumber < 1 || m_deviceNumber > 63) { char buf[256]; snprintf(buf, 256, "device number \"%u\" must be between 1 and 63", m_deviceNumber); wpi_setWPIErrorWithContext(ParameterOutOfRange, buf); return; } uint32_t fwVer = GetFirmwareVersion(); if (StatusIsFatal()) return; // 3330 was the first shipping RDK firmware version for the Jaguar if (fwVer >= 3330 || fwVer < 101) { char buf[256]; if (fwVer < 3330) { snprintf(buf, 256, "Jag #%u firmware (%u) is too old (must be at least version 101 of the FIRST approved firmware)", m_deviceNumber, (u_int) fwVer); } else { snprintf(buf, 256, "Jag #%u firmware (%u) is not FIRST approved (must be at least version 101 of the FIRST approved firmware)", m_deviceNumber, (u_int) fwVer); } wpi_setWPIErrorWithContext(JaguarVersionError, buf); return; } switch (m_controlMode) { case kPercentVbus: case kVoltage: // No additional configuration required... start enabled. EnableControl(); break; default: break; } m_safetyHelper = new MotorSafetyHelper(this); nUsageReporting::report(nUsageReporting::kResourceType_CANJaguar, m_deviceNumber, m_controlMode); LiveWindow::GetInstance()->AddActuator("CANJaguar", 0, m_deviceNumber, this); }
// 자주사용되는 함수들.. // bool KPmacC::Open( int num ) // num < 0, num > 7 : 디바이스 선택, 7 >= num >= 0 : 열기시도 { // Pmac OpenRuntimeLink의 핸들을 얻어온다. if(m_hLink == NULL) { m_hLink = OpenRuntimeLink(); //Pmac Dll Load if(m_hLink == NULL) { DebugLog(_T("Lib Load Error")); return false; } } else return false; if ((num >= 0) && (num <= 7)) m_nDevice = num; if ((m_nDevice < 0) || (m_nDevice > 7)) m_nDevice = SelectDevice(0); if ((m_nDevice >= 0) && (m_nDevice <= 7)) m_bConnected = DeviceOpen((UINT)m_nDevice); //OpenPmacDevice((DWORD)m_nDevice); else m_bConnected = FALSE; if (m_bConnected) { GetPmacType(); GetFirmwareVersion(); GetFirmwareDate(); GetServoCycle(); } else { DebugLog(_T("Open Comm Error")); return false; } return true; }
BOOL CDevCProbe::Config(){ char filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgDevCProbe.xml")); m_wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_DEVCPROBE")); ((WndButton *)m_wf->FindByName(TEXT("cmdClose")))->SetOnClickNotify(OnCloseClicked); ((WndButton *)m_wf->FindByName(TEXT("cmdSetCompassCal")))->SetOnClickNotify(OnCompassCalClicked); ((WndButton *)m_wf->FindByName(TEXT("cmdSetCalGyro")))->SetOnClickNotify(OnCalGyroClicked); ((WndButton *)m_wf->FindByName(TEXT("cmdZeroDeltaPress")))->SetOnClickNotify(OnZeroDeltaPressClicked); GetFirmwareVersion(m_pDevice); if(m_wf) { m_wf->SetTimerNotify(OnTimer); m_wf->ShowModal(); delete m_wf; m_wf=NULL; } return TRUE; }
BOOL CDevCProbe::Config(PDeviceDescriptor_t d){ if(m_pDevice != d) { StartupStore(_T("C-Probe Config : Invalide device descriptor%s"), NEWLINE); return FALSE; } m_wf = dlgLoadFromXML(CallBackTable, TEXT("dlgDevCProbe.xml"), IDR_XML_DEVCPROBE); WndButton *wBt = NULL; wBt = (WndButton *)m_wf->FindByName(TEXT("cmdClose")); if(wBt){ wBt->SetOnClickNotify(OnCloseClicked); } wBt = (WndButton *)m_wf->FindByName(TEXT("cmdSetCompassCal")); if(wBt){ wBt->SetOnClickNotify(OnCompassCalClicked); } wBt = (WndButton *)m_wf->FindByName(TEXT("cmdSetCalGyro")); if(wBt){ wBt->SetOnClickNotify(OnCalGyroClicked); } wBt = (WndButton *)m_wf->FindByName(TEXT("cmdZeroDeltaPress")); if(wBt){ wBt->SetOnClickNotify(OnZeroDeltaPressClicked); } GetFirmwareVersion(m_pDevice); if(m_wf) { m_wf->SetTimerNotify(1000, OnTimer); m_wf->ShowModal(); delete m_wf; m_wf=NULL; } return TRUE; }
/** * Common initialization code called by all constructors. */ void CANJaguar::InitCANJaguar() { m_transactionSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE); if (m_deviceNumber < 1 || m_deviceNumber > 63) { // Error printf("ERROR: Invalid CAN device number \"%d\" - must be between 1 and 63.\n", m_deviceNumber); return; } UINT32 fwVer = GetFirmwareVersion(); // 3330 was the first shipping RDK firmware version for the Jaguar if (fwVer >= 3330 || fwVer < 92) { printf("fwVersion[%d]: %d\n", m_deviceNumber, fwVer); if (fwVer < 3330) { printf("ERROR: Jaguar %d firmware is too old. It must be updated to at least version 92 of the FIRST approved firmware!\n", m_deviceNumber); } else { printf("ERROR: Jaguar %d firmware is not FIRST approved. It must be updated to at least version 92 of the FIRST approved firmware!\n", m_deviceNumber); } wpi_assertCleanStatus(kRIOStatusVersionMismatch); return; } switch (m_controlMode) { case kPercentVbus: case kVoltage: // No additional configuration required... start enabled. EnableControl(); break; default: break; } m_safetyHelper = new MotorSafetyHelper(this); }
/** * Common initialization code called by all constructors. */ void CANJaguar::InitJaguar() { m_transactionSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE); if (m_deviceNumber < 1 || m_deviceNumber > 63) { // Error return; } UINT32 fwVer = GetFirmwareVersion(); printf("fwVersion[%d]: %d\n", m_deviceNumber, fwVer); if (fwVer >= 3330 || fwVer < 86) { wpi_assertCleanStatus(kRIOStatusVersionMismatch); return; } switch (m_controlMode) { case kPercentVoltage: sendMessage(LM_API_VOLT_T_EN | m_deviceNumber, NULL, 0); break; default: return; } }
//----------------------------------------------------------------------------- void DAQInit(void) { // setup serial port for (uint8 i = 0; i < 2; i++) { if (!OpenPort()) // open port return; if (SyncComms(ANALOG)) // sync the analogue board comms break; CloseHandle(hSerialDaq); // close serial port and try again Sleep(100); } if (hSerialDaq == INVALID_HANDLE_VALUE) serialRunning = false; if (serialRunning) { DEBUG_MESSAGE_EXT(_T("DAQ serial port opened successfully\r\n")); } else { ERROR_MESSAGE_EXT(_T("Failed to open DAQ serial port\r\n")); } if (!SyncComms(ANALOG)) { // sync the analogue board comms ERROR_MESSAGE_EXT(_T("Failed to communicate with Analog board\r\n")); return; } if (!SyncComms(HK)) { // sync the housekeeping board comms ERROR_MESSAGE_EXT(_T("Failed to communicate with Housekeeping board\r\n")); serialRunning = false; return; } // stop acquisition sprintf_s(command, "*S0"); SendCommand(); SendCommand(); Sleep(100); FlushComms(); // initialise housekeeping board HKFirmwareVersion = GetFirmwareVersion(HK); ChangeHWParam(HUMID_THRESH, humidThresh); ChangeHWParam(HUMID_HYSTERESIS, humidHysteresis); ChangeHWParam(FAN_THRESH, fanThresh); ChangeHWParam(FAN_HYSTERESIS, fanHysteresis); ChangeHWParam(HUMID_AUTO, OFF); ChangeHWParam(VALVE_DELAY, valveDelay); ChangeHWParam(FLASH_DAC, flashVoltage); // flash control voltage NORMAL ChangeHWParam(FLASH_DELAY, flashDelay); // flash delay ChangeHWParam(FLASH_LENGTH, flashPulseLength); // flash pulse ChangeHWParam(CAMERA_LENGTH, cameraPulseLength); ChangeHWParam(STIRRER, OFF); // stirrer off ChangeHWParam(CAMERA, ON); // camera on ChangeHWParam(LASER, ON); // laser on //ChangeHWParam(FANS, OFF); // fans off ChangeHWParam(FILL1microinjector, OFF); // valves off ChangeHWParam(FILL2bypassFilter, OFF); // N.O. solenoid -- ON bypasses filter cartridge after flow cell ChangeHWParam(FILL3newSheath, OFF); // N.C. solenoid -- ON allows new SW for sheath ChangeHWParam(ISOL, OFF); ChangeHWParam(SPARE, OFF); ChangeHWParam(FLASH, ON); // flashlamp ChangeHWParam(PMTA, 0.0); // PMTs ChangeHWParam(PMTB, 0.0); ChangeHWParam(PMTC, 0.0); IfcbHandle->dacsOn = false; // pump driver board if (pumpDrive) { ChangeHWParam(PUMP1, ON); // flashlamp Sleep(100); if (!SyncComms(ANALOG)) return; // sync the analogue board comms if (!SyncComms(HK)) return; // sync the housekeeping board comms if (!SyncComms(PUMP)) return; // sync the pump board comms ChangeHWParam(PUMP_DAC, pumpVolts); } if (laserState & 1) // laser power on/off ChangeHWParam(LASER, ON); else ChangeHWParam(LASER, OFF); if (fill3newSheathState & 1) { // recirculate sheath or not ChangeHWParam(FILL3newSheath, ON); // ChangeHWParam(FILL2bypassFilter, ON); // } else { ChangeHWParam(FILL3newSheath, OFF); ChangeHWParam(FILL2bypassFilter, OFF); } if (pumpState & 1) // pump1 ChangeHWParam(PUMP1, ON); else ChangeHWParam(PUMP1, OFF); if (pumpState & 2) // pump2 ChangeHWParam(PUMP2, ON); else ChangeHWParam(PUMP2, OFF); // configure analog board AnalogFirmwareVersion = GetFirmwareVersion(ANALOG); ChangeHWParam(TRIGA, trigThreshA); ChangeHWParam(TRIGB, trigThreshB); ChangeHWParam(TRIGC, trigThreshC); ChangeHWParam(TRIGD, trigThreshD); ChangeHWParam(ADC_RATE, adcDrate); ChangeHWParam(INTEGRATOR_SETTLE, integratorSettleTime); ChangeHWParam(TRIG_MASK, triggerPulseMask); ChangeHWParam(PGA, adcPga); ChangeHWParam(TRIG_TIMEOUT, triggerTimeout); ChangeHWParam(PULSE_STRETCH, pulseStretchTime); ChangeHWParam(MAX_PULSE_STRETCH, maxPulseStretch); ChangeHWParam(HAS_CAMERA, hasCamera); }
int main (int argc, char *argv[]) { char fStr[50]; float version = 0.0; long error = 0; int i = 0; long idnum = -1; //Using first found U12 long demo = 0; //Normal operations long channel = 0; //Channel to be read/set. Used by multiple functions. long state = 0; //Digital states to set or states read. Used by digital functions. //EAnalogOut specific parameters float analogOut0 = 2.0, analogOut1 = 3.5; //Voltages of AO0 and AO1 to set //EAnalogIn specific parameters long gain = 0; //G=1, +-20 V (gain 0 = 1) long overVoltage = 0; //Returns >0 if overvoltage is detected float voltage = 0.0; //Returns the voltage reading //EDigitalOut specific paramters long writeD = 0; //Indicates if D line is to be written instead of IO line //EDigitalIn specific paramters long readD = 0; //Indicates if D line is read instead of IO line //ECount specific parameters long resetCounter = 0; //Indicates if counter is reset to zero after read double count = 0; //Current count before reset double ms = 0; //Returns the number of milliseconds since the Epoch. version = GetDriverVersion(); printf("Driver version: %.3f\n", version); version = GetFirmwareVersion(&idnum); printf("U12 Firmware version: %.3f\n\n", version); /* Setting analog outputs */ printf("Setting AO0 to %.3f V and AO1 to %.3f V.\n\n", analogOut0, analogOut1); error = EAnalogOut(&idnum, demo, 2.0, 3.5); handleError(error, "EAnalogOut"); /* Reading analog inputs */ printf("Reading some analog inputs:\n"); /* Reading from single-ended AI0 and AI1 */ for(i = 0; i < 2; i++) { channel = i; error = EAnalogIn(&idnum, demo, channel, gain, &overVoltage, &voltage); sprintf(fStr, "EAnalogIn (%ld)", channel); handleError(error, fStr); printf("Single-ended AI%ld = %.3f V, overVoltage = %ld\n", channel, voltage, overVoltage); } printf("\n"); /* Reading from differential AI0-AI1 (channel 8) and AI2-AI3 (channel 9), G=1 (+-20 V) */ for(i = 8; i < 10; i+=1) { channel = i; error = EAnalogIn(&idnum, demo, channel, gain, &overVoltage, &voltage); sprintf(fStr, "EAnalogIn (%ld) diff.", channel); handleError(error, fStr); printf("Differential AI%ld-AI%ld = %.3f V, overVoltage = %ld\n", (channel-8)*2, (channel-8)*2+1, voltage, overVoltage); } /* Setting digital outputs */ printf("\nSetting digital lines IO1 and D1 to output-low, and IO2 to output-high\n\n"); channel = 1; writeD = 0; state = 0; error = EDigitalOut(&idnum, demo, channel, writeD, state); handleError(error, "EDigitalOut (IO1)"); channel = 1; writeD = 1; state = 0; error = EDigitalOut(&idnum, demo, channel, writeD, state); handleError(error, "EDigitalOut (D1)"); channel = 2; writeD = 0; state = 1; error = EDigitalOut(&idnum, demo, channel, writeD, state); handleError(error, "EDigitalOut (IO2)"); /* Reading digital inputs */ printf("Reading some digital inputs:\n"); channel = 0; readD = 0; error = EDigitalIn(&idnum, demo, channel, readD, &state); handleError(error, "EDigitalIn (IO0)"); printf("IO%ld state = %ld\n", channel, state); channel = 0; readD = 1; error = EDigitalIn(&idnum, demo, channel, readD, &state); handleError(error, "EDigitalIn (D0)"); printf("D%ld state = %ld\n\n", channel, state); /* Read from the Counter */ //Reseting counter first printf("Reading Counter:\nResetting count and waiting 2 seconds for new data.\n"); resetCounter = 1; error = ECount(&idnum, demo, resetCounter, &count, &ms); handleError(error, "ECount (reset)"); //Wait for 2 seconds for data usleep(2000000); //Read Counter reading with 2 second timer resetCounter = 0; error = ECount(&idnum, demo, resetCounter, &count, &ms); handleError(error, "ECount (read)"); printf("Count = %.0f, OS timer = %0.3f ms\n", count, ms); return 0; }
void CNetworkControllView::Fresh() { GetDlgItem(IDC_SERIALSTATIC)->SetFocus(); m_IDaddress=multi_register_value[6]; m_hardware_version=multi_register_value[8]; m_nSerialNum=get_serialnumber(); //m_firmwareVersion=get_curtstat_version(); GetFirmwareVersion(); m_nbldVersion = multi_register_value[14]; CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_BLDVERSION); CString strBldVer; strBldVer.Format(_T("%d"), m_nbldVersion); pEdit->SetWindowText(strBldVer); if (m_nbldVersion < _OLD_NC_VERSION && !m_bWarningBldVersion && m_nSerialNum != 0 && m_hardware_version < 4) // 序列号不等于0防止掉线时版本寄存器为0弹这个消息 { m_bWarningBldVersion = TRUE; CString strBldVer; strBldVer.Format(_T("NC(ID: %d) boot loader's current version is %d, it's too low, please upgrade it."), m_nSerialNum, m_nbldVersion); AfxMessageBox(strBldVer); } m_hardware_version=multi_register_value[8]; if(multi_register_value[1]<10) m_strDate.Format(_T("%d%d-%d-%d"),multi_register_value[200],multi_register_value[201],multi_register_value[202],multi_register_value[204]); else m_strDate.Format(_T("%d%d-%d-%d"),multi_register_value[0],multi_register_value[201],multi_register_value[202],multi_register_value[204]); m_strTime.Format(_T("%02d:%02d"),multi_register_value[205],multi_register_value[206]); m_ip_addressCtrl.SetAddress((BYTE)multi_register_value[107],(BYTE)multi_register_value[108],(BYTE)multi_register_value[109],(BYTE)multi_register_value[110]); m_subnet_addressCtrl.SetAddress((BYTE)multi_register_value[111],(BYTE)multi_register_value[112],(BYTE)multi_register_value[113],(BYTE)multi_register_value[114]); m_gateway_addressCtrl.SetAddress((BYTE)multi_register_value[115],(BYTE)multi_register_value[116],(BYTE)multi_register_value[117],(BYTE)multi_register_value[118]); OnBnClickedCheck1(); if(multi_register_value[12]==0) { m_baudRateCombox.SetCurSel(0); } if(multi_register_value[12]==1) { m_baudRateCombox.SetCurSel(1); } if(multi_register_value[106]==0) { m_ipModelComBox.SetCurSel(0); } if(multi_register_value[106]==1) { m_ipModelComBox.SetCurSel(1); } m_nListenPort=multi_register_value[120]; UpdateData(false); }