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(InitDMA initStructure, INIT_MODE mode = INIT_MODE.INIT) { if (deviceHandle == IntPtr.Zero) { return(API.DEVICE_DLLWASNOTLOADED); } Types.InitDMA iS = new Types.InitDMA(0); // для вызова своего конструктора iS.bufferSize = initStructure.bufferSize; iS.control = initStructure.control; iS.dmaMode = initStructure.dmaMode; iS.frequency = initStructure.frequency; iS.frequencyPack = initStructure.frequencyPack; iS.startType = initStructure.startType; iS.threshold = initStructure.threshold; iS.controlSynchro = initStructure.controlSynchro; 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.dmaMode = iS.dmaMode; initStructure.frequency = iS.frequency; initStructure.frequencyPack = iS.frequencyPack; initStructure.startType = iS.startType; initStructure.threshold = iS.threshold; initStructure.controlSynchro = iS.controlSynchro; 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); }