private ECLib.ErrorCode setCAParams(ref ECLib.EccParams parameters, ref string file) { ECLib.ErrorCode err = ECLib.ErrorCode.ERR_NOERROR; int structsize = Marshal.SizeOf(typeof(ECLib.EccParam)); // size of a parameter file = ECLib.is_vmp4(infos.DeviceCode) ? "ca4.ecc" : "ca.ecc"; // allocate parameters in memory for the unmanaged call. parameters.len = 16; parameters.pparams = Marshal.AllocHGlobal(parameters.len * structsize); err |= ECLib.BL_DefineSglParameter("Voltage_step", 1.5f, 0, parameters.pparams + structsize * 0); // E0 (V) err |= ECLib.BL_DefineBoolParameter("vs_initial", false, 0, parameters.pparams + structsize * 1); // vs. init err |= ECLib.BL_DefineSglParameter("Duration_step", 0.1f, 0, parameters.pparams + structsize * 2); // Step duration (s) // Step #1 err |= ECLib.BL_DefineSglParameter("Voltage_step", -1.0f, 1, parameters.pparams + structsize * 3); // E1 (V) err |= ECLib.BL_DefineBoolParameter("vs_initial", false, 1, parameters.pparams + structsize * 4); // scan to E1 s. init err |= ECLib.BL_DefineSglParameter("Duration_step", 0.2f, 1, parameters.pparams + structsize * 5); // Step duration (s) // Step #2 err |= ECLib.BL_DefineSglParameter("Voltage_step", 2.0f, 2, parameters.pparams + structsize * 6); // E2 (V) err |= ECLib.BL_DefineBoolParameter("vs_initial", false, 2, parameters.pparams + structsize * 7); // vs. init err |= ECLib.BL_DefineSglParameter("Duration_step", 0.1f, 2, parameters.pparams + structsize * 8); // Step duration (s) // others err |= ECLib.BL_DefineIntParameter("Step_number", 2, 0, parameters.pparams + structsize * 9); // step number err |= ECLib.BL_DefineIntParameter("N_Cycles", 0, 0, parameters.pparams + structsize * 10); // cycle Nc time err |= ECLib.BL_DefineSglParameter("Record_every_dI", 0.1f, 0, parameters.pparams + structsize * 11); // record every dI (A) err |= ECLib.BL_DefineSglParameter("Record_every_dT", 0.01f, 0, parameters.pparams + structsize * 12); // or every dT (s) err |= ECLib.BL_DefineIntParameter("I_Range", (int)ECLib.IntensityRange.KBIO_IRANGE_AUTO, 0, parameters.pparams + structsize * 13); // I Range err |= ECLib.BL_DefineIntParameter("E_Range", (int)ECLib.VoltageRange.KBIO_ERANGE_AUTO, 0, parameters.pparams + structsize * 14); // E Range err |= ECLib.BL_DefineIntParameter("Bandwidth", (int)ECLib.Bandwidth.KBIO_BW_5, 0, parameters.pparams + structsize * 15); // bandwidth return(err); }
private ECLib.ErrorCode setCPParams(ref ECLib.EccParams parameters, ref string file) { ECLib.ErrorCode err = ECLib.ErrorCode.ERR_NOERROR; int structsize = Marshal.SizeOf(typeof(ECLib.EccParam)); // size of a parameter file = ECLib.is_vmp4(infos.DeviceCode) ? "cp4.ecc" : "cp.ecc"; // allocate N parameters in memory for the unmanaged call. parameters.len = 16; parameters.pparams = Marshal.AllocHGlobal(parameters.len * structsize); ECLib.BL_DefineSglParameter("Current_step", 0.002f, 0, parameters.pparams + structsize * 0); // {I0 (A)} ECLib.BL_DefineBoolParameter("vs_initial", false, 0, parameters.pparams + structsize * 1); // {vs. init} ECLib.BL_DefineSglParameter("Duration_step", 0.1f, 0, parameters.pparams + structsize * 2); //{Step duration (s)} //{Step #1} ECLib.BL_DefineSglParameter("Current_step", -0.001f, 1, parameters.pparams + structsize * 3); // {I1 (A)} ECLib.BL_DefineBoolParameter("vs_initial", false, 1, parameters.pparams + structsize * 4); // {scan to E1 s. init} ECLib.BL_DefineSglParameter("Duration_step", 0.2f, 1, parameters.pparams + structsize * 5); // {Step duration (s) //{Step #2} ECLib.BL_DefineSglParameter("Current_step", 0.004f, 2, parameters.pparams + structsize * 6); // {I2 (A)} ECLib.BL_DefineBoolParameter("vs_initial", false, 2, parameters.pparams + structsize * 7); // {vs. init} ECLib.BL_DefineSglParameter("Duration_step", 0.1f, 2, parameters.pparams + structsize * 8); // {Step duration (s)} //{others} ECLib.BL_DefineIntParameter("Step_number", 2, 0, parameters.pparams + structsize * 9); // {step number} ECLib.BL_DefineIntParameter("N_Cycles", 0, 0, parameters.pparams + structsize * 10); // {cycle Nc time} ECLib.BL_DefineSglParameter("Record_every_dE", 0.1f, 0, parameters.pparams + structsize * 11); // {record every dE (V)} ECLib.BL_DefineSglParameter("Record_every_dT", 0.01f, 0, parameters.pparams + structsize * 12); // {or every dT (s)} ECLib.BL_DefineIntParameter("I_Range", (int)ECLib.IntensityRange.KBIO_IRANGE_10mA, 0, parameters.pparams + structsize * 13); // {I Range} ECLib.BL_DefineIntParameter("E_Range", (int)ECLib.VoltageRange.KBIO_ERANGE_AUTO, 0, parameters.pparams + structsize * 14); //{E Range} ECLib.BL_DefineIntParameter("Bandwidth", (int)ECLib.Bandwidth.KBIO_BW_5, 0, parameters.pparams + structsize * 15); //{bandwidth} return(err); }
private ECLib.ErrorCode setOCVParams(ref ECLib.EccParams parameters, ref string file) { ECLib.ErrorCode err = ECLib.ErrorCode.ERR_NOERROR; int structsize = Marshal.SizeOf(typeof(ECLib.EccParam)); // size of a parameter file = ECLib.is_vmp4(infos.DeviceCode) ? "ocv4.ecc" : "ocv.ecc"; // allocate N (=4 for OCV) parameters in memory for the unmanaged call. parameters.len = 4; parameters.pparams = Marshal.AllocHGlobal(parameters.len * structsize); // BL_Define[sgl,bool,int]Parameter all take a pointer to a memory space equivalent to a ECLib.EccParam structure err = ECLib.BL_DefineSglParameter("Rest_time_T", 3.0f, 0, parameters.pparams + 0 * structsize); err = ECLib.BL_DefineSglParameter("Record_every_dE", 0.1f, 0, parameters.pparams + 1 * structsize); err = ECLib.BL_DefineSglParameter("Record_every_dT", 0.01f, 0, parameters.pparams + 2 * structsize); err = ECLib.BL_DefineIntParameter("E_Range", (int)ECLib.VoltageRange.KBIO_ERANGE_AUTO, 0, parameters.pparams + 3 * structsize); return(err); }