public API Init(int chanNumber, double frequency, int bufferSize) { API st; uint caps = (uint)CAPS.SOFT_INIT_DMA; st = device.Get(GET.DEVICE_IS_CAPABLE, ref caps); // Проверим, поддерживается ли структура DMA. if (st == API.SUCCESS) { InitDMA p = new InitDMA(); // Структура для инициализации параметров работы платы. p.startType = (uint)InitDMA.StartTypeBit.Program; // Запуск платы по внутреннему таймеру. p.bufferSize = (uint)bufferSize; // Размер внутреннего блока данных, по готовности которого произойдёт прерывание. p.frequency = frequency; // Частота дискретизации. foreach (Channel ch in p.channels) { ch.control = (uint)Channel.ControlBit.Used; // Сделаем 0-ой канал активным. ch.gain = 1; // Зададим коэффициент усиления для 0-го канала. if (--chanNumber == 0) { break; } } return(device.Init(p)); } caps = (uint)CAPS.SOFT_INIT_MEMORY; st = device.Get(GET.DEVICE_IS_CAPABLE, ref caps); // Проверим, поддерживается ли структура DMA. if (st == API.SUCCESS) { InitMemory p = new InitMemory(); // Структура для инициализации параметров работы платы. p.startType = (uint)InitMemory.StartTypeBit.Program; // Запуск платы по внутреннему таймеру. p.bufferSize = (uint)bufferSize; // Размер внутреннего блока данных, по готовности которого произойдёт прерывание. p.frequency = frequency; // Частота дискретизации. foreach (Channel ch in p.channels) { ch.control = (uint)Channel.ControlBit.Used; // Сделаем 0-ой канал активным. ch.gain = 1; // Зададим коэффициент усиления для 0-го канала. if (--chanNumber == 0) { break; } } return(device.Init(p)); } return(API.PARAMETER_NOTSUPPORTED); }
public API Init(InitMemory initStructure, INIT_MODE mode = INIT_MODE.INIT) { if (deviceHandle == IntPtr.Zero) { return(API.DEVICE_DLLWASNOTLOADED); } Types.InitMemory iS = new Types.InitMemory(0); iS.bufferSize = initStructure.bufferSize; iS.control = initStructure.control; iS.frequency = initStructure.frequency; iS.startType = initStructure.startType; iS.beforeHistory = initStructure.beforeHistory; iS.controlSynchro = initStructure.controlSynchro; iS.hysteresis = initStructure.hysteresis; iS.packetNumber = initStructure.packetNumber; iS.startDelay = initStructure.startDelay; iS.threshold = initStructure.threshold; iS.channelSynchro.control = initStructure.channelSynchro.control; iS.channelSynchro.gain = initStructure.channelSynchro.gain; for (int i = 0; i < initStructure.channels.Length; i++) { iS.channels[i].control = initStructure.channels[i].control; iS.channels[i].gain = initStructure.channels[i].gain; iS.channels[i].delta = initStructure.channels[i].delta; } try { operationStatus = Connector.UniDriverInit(deviceHandle, (uint)mode, ref iS); } catch (Exception ex) { Console.WriteLine(ex.Message); if (ex.Message.Contains("Unable to load DLL")) { return((API)(operationStatus = (uint)API.UNIDRIVER_DLLWASNOTLOADED)); } else { return(API.UNDEFINED); } } API st = (API)(operationStatus & MASK_RSH_ERROR); if (st == API.SUCCESS) { initStructure.bufferSize = iS.bufferSize; initStructure.control = iS.control; initStructure.frequency = iS.frequency; initStructure.startType = iS.startType; initStructure.beforeHistory = iS.beforeHistory; initStructure.controlSynchro = iS.controlSynchro; initStructure.hysteresis = iS.hysteresis; initStructure.packetNumber = iS.packetNumber; initStructure.startDelay = iS.startDelay; initStructure.threshold = iS.threshold; initStructure.channelSynchro.control = iS.channelSynchro.control; initStructure.channelSynchro.gain = iS.channelSynchro.gain; for (int i = 0; i < initStructure.channels.Length; i++) { initStructure.channels[i].control = iS.channels[i].control; initStructure.channels[i].gain = iS.channels[i].gain; initStructure.channels[i].delta = iS.channels[i].delta; } } return(st); }