///// <summary> ///// 設定所有Channel輸出電壓 -10.0v ~ +10.0v ///// </summary> ///// <param name="voltageCN0">The voltage of channel 0</param> ///// <param name="voltageCN1">The voltage of channel 1</param> ///// <param name="voltageCN2">The voltage of channel 2</param> ///// <param name="voltageCN3">The voltage of channel 3</param> ///// <returns>設定結果</returns> //public bool SetVoltageAll(double voltageCN0, double voltageCN1, double voltageCN2, double voltageCN3) //{ // double[] lastValue = new double[4]; // for (int i = 0; i < 4; i++) // { // if (voltage[i] > dacPara.MaxVoltage[i]) // { // voltage[i] = dacPara.MaxVoltage[i]; // } // if (voltage[i] < dacPara.MinVoltage[i]) // { // voltage[i] = dacPara.MinVoltage[i]; // } // } // if (voltage[(int)channel] > dacPara.MaxVoltage[(int)channel]) // { // lastValue = dacPara.MaxVoltage[(int)channel]; // } // else // { // lastValue = voltage; // } // if (voltage[(int)channel] < dacPara.MinVoltage[(int)channel]) // { // lastValue = dacPara.MinVoltage[(int)channel]; // } // else // { // lastValue = voltage; // } // I16 rc = CA104_L132.CS_mnet_ao4_set_voltage_all((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, (U16)dacPara.SlaveIP, voltageCN0, voltageCN1, voltageCN2, voltageCN3); // if (rc != 0) // { // return false; // } // else // { // voltage[0] = voltageCN0; // voltage[1] = voltageCN1; // voltage[2] = voltageCN2; // voltage[3] = voltageCN3; // if (VoltageChangedCN0 != null) // { // VoltageChangedCN0(voltageCN0); // } // if (VoltageChangedCN1 != null) // { // VoltageChangedCN1(voltageCN1); // } // if (VoltageChangedCN2 != null) // { // VoltageChangedCN2(voltageCN2); // } // if (VoltageChangedCN3 != null) // { // VoltageChangedCN3(voltageCN3); // } // return true; // } //} /// <summary> /// Reset A104 DAC module /// </summary> /// <returns>the result of setting</returns> public bool ResetDAC() { I16 rc = CA104_L132.CS_mnet_ao4_reset_DAC((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, (U16)dacPara.SlaveIP); if (rc != 0) { return(false); } else { voltage[0] = 0; voltage[1] = 0; voltage[2] = 0; voltage[3] = 0; if (VoltageChangedCN0 != null) { VoltageChangedCN0(0); } if (VoltageChangedCN1 != null) { VoltageChangedCN1(0); } if (VoltageChangedCN2 != null) { VoltageChangedCN2(0); } if (VoltageChangedCN3 != null) { VoltageChangedCN3(0); } return(true); } }
private void slaveModuleInitialize() { I16 rc; uint mask = 0x00000001; uint[] deviceTable = new uint[2]; rc = CMNET_L132.CS_mnet_get_ring_active_table((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, ref deviceTable[0]); if (rc != 0) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("DeviceTableError") + "(" + DeviceName + ")")); } if ((deviceTable[0] == 0) && (deviceTable[1] == 0)) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("DidntFindA104DAC") + "(" + DeviceName + ")")); } for (int i = 0; i < 64; i++) { if (dacPara.SlaveIP > 63) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("WrongSlaveIP") + "(" + DeviceName + ")")); } if (dacPara.SlaveIP == i) { if (i < 32) { if ((deviceTable[0] & mask) == 0) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("WrongSlaveIP") + "(" + DeviceName + ")")); } } else { if (i == 32) { mask = 0x00000001; } if ((deviceTable[1] & mask) == 0) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("WrongSlaveIP") + "(" + DeviceName + ")")); } } } mask = mask << 1; } U8 slaveType = 0; rc = CMNET_L132.CS_mnet_get_slave_type((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, (U16)dacPara.SlaveIP, ref slaveType); if (rc == 0) { if (slaveType != 0xD0) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("WrongDeviceTypeA104DAC") + "(" + DeviceName + ")")); } } else { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("DeviceTableError") + "(" + DeviceName + ")")); } rc = CA104_L132.CS_mnet_ao4_initial((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, (U16)dacPara.SlaveIP); if (rc != 0) { throw new Exception(ExceptionHelper.GetFullCurrentMethod(ResourceHelper.Language.GetString("InitializeErrorA104DAC") + "(" + DeviceName + ")")); } }
/// <summary> /// 設定Channel輸出電壓 -10.0v ~ +10.0v /// </summary> /// <param name="channel">The Channel No</param> /// <param name="voltage">The Voltage</param> /// <returns>設定結果</returns> public bool SetVoltage(DACChannel channelNo, double setVoltage) { double lastValue = 0; if (setVoltage <= dacPara.MaxVoltage[(int)channelNo] && setVoltage >= dacPara.MinVoltage[(int)channelNo]) { lastValue = setVoltage; } else { if (setVoltage > dacPara.MaxVoltage[(int)channelNo]) { lastValue = dacPara.MaxVoltage[(int)channelNo]; } if (setVoltage < dacPara.MinVoltage[(int)channelNo]) { lastValue = dacPara.MinVoltage[(int)channelNo]; } } I16 rc = CA104_L132.CS_mnet_ao4_set_voltage((U16)dacPara.CardSwitchNo, (U16)dacPara.RingNoOfCard, (U16)dacPara.SlaveIP, (byte)channelNo, lastValue); if (rc != 0) { return(false); } else { voltage[(int)channelNo] = lastValue; switch (channelNo) { case DACChannel.CN0: if (VoltageChangedCN0 != null) { VoltageChangedCN0(lastValue); } break; case DACChannel.CN1: if (VoltageChangedCN1 != null) { VoltageChangedCN1(lastValue); } break; case DACChannel.CN2: if (VoltageChangedCN2 != null) { VoltageChangedCN2(lastValue); } break; case DACChannel.CN3: if (VoltageChangedCN3 != null) { VoltageChangedCN3(lastValue); } break; } return(true); } }