//Below runs the necessary scan on the APM public async Task <Method> RunScan() { List <ScanDatabase> allDb = await App.Database.GetScanDatabasesAsync(); ScanDatabase _database = await App.Database.GetScanAsync(allDb.Count); ScanParams instance = new ScanParams(); switch (_database.VoltamType) { case "Linear Voltammetry": LinearSweep linSweep = instance.LinSweep(_database); linSweep.Ranging.StartCurrentRange = new CurrentRange(5); linSweep.Ranging.MaximumCurrentRange = new CurrentRange(6); linSweep.Ranging.MaximumCurrentRange = new CurrentRange(3); return(linSweep); case "Cyclic Voltammetry": CyclicVoltammetry cVoltammetry = instance.CV(_database); cVoltammetry.Ranging.StartCurrentRange = new CurrentRange(5); cVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(6); cVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(3); return(cVoltammetry); case "Square Wave Voltammetry": SquareWave squareWave = instance.SWV(_database); squareWave.Ranging.StartCurrentRange = new CurrentRange(5); squareWave.Ranging.MaximumCurrentRange = new CurrentRange(6); squareWave.Ranging.MaximumCurrentRange = new CurrentRange(3); return(squareWave); case "Alternating Current Voltammetry": ACVoltammetry acVoltammetry = instance.ACV(_database); acVoltammetry.Ranging.StartCurrentRange = new CurrentRange(5); acVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(6); acVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(3); return(acVoltammetry); default: //Add code to notify user that something has gone wrong and needs to be fixed return(null); } }
public CyclicVoltammetry CV(ScanDatabase _database) //Set the parameters for a cyclic scan { CyclicVoltammetry cyclicVoltammetry = new CyclicVoltammetry { BeginPotential = (float)_database.StartingPotential, Vtx1Potential = (float)_database.NegativeVertex, Vtx2Potential = (float)_database.PositiveVertex, StepPotential = (float)_database.PotentialStep, Scanrate = (float)_database.ScanRate }; return(cyclicVoltammetry); }
//Sets the scan parameters public async Task <Method> RunScan() { //Grabs the most recent database to get the required parameters List <ScanDatabase> allDb = await App.Database.GetScanDatabasesAsync(); ScanDatabase _database = await App.Database.GetScanAsync(allDb.Count); //Gets an instance of ScanParams ScanParams instance = new ScanParams(); switch (_database.VoltamType) //Switch which invokes the correct type of scan { case "Alternating Current Voltammetry": //Sets an alternating current voltammetric scan using (ACVoltammetry acVoltammetry = instance.ACV(_database)) { acVoltammetry.SmoothLevel = 0; acVoltammetry.Ranging.StartCurrentRange = new CurrentRange(CurrentRanges.cr10uA); //Sets the range that the potentiostat will use to detect the current acVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100uA); acVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100nA); return(acVoltammetry); } case "Cyclic Voltammetry": //Sets a cyclic voltammetric scan using (CyclicVoltammetry cVoltammetry = instance.CV(_database)) { cVoltammetry.SmoothLevel = 0; cVoltammetry.Ranging.StartCurrentRange = new CurrentRange(CurrentRanges.cr10uA); //Sets the range that the potentiostat will use to detect the current cVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100uA); cVoltammetry.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100nA); return(cVoltammetry); } case "Differential Pulse Voltammetry": //Sets a differential pulse voltammetric scan using (DifferentialPulse differentialPulse = instance.DPV(_database)) { differentialPulse.SmoothLevel = 0; differentialPulse.Ranging.StartCurrentRange = new CurrentRange(CurrentRanges.cr1uA); //Sets the range that the potentiostat will use to detect the current differentialPulse.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr1uA); differentialPulse.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr10nA); return(differentialPulse); } case "Linear Voltammetry": //Sets a linear voltammetric scan using (LinearSweep linSweep = instance.LinSweep(_database)) { linSweep.SmoothLevel = 0; linSweep.Ranging.StartCurrentRange = new CurrentRange(CurrentRanges.cr10uA); //Sets the range that the potentiostat will use to detect the current linSweep.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100uA); linSweep.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100nA); return(linSweep); } case "Square Wave Voltammetry": //Sets a square wave voltammetric scan using (SquareWave squareWave = instance.SWV(_database)) { squareWave.SmoothLevel = 0; squareWave.Ranging.StartCurrentRange = new CurrentRange(CurrentRanges.cr10uA); //Sets the range that the potentiostat will use to detect the current squareWave.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100uA); squareWave.Ranging.MaximumCurrentRange = new CurrentRange(CurrentRanges.cr100nA); return(squareWave); } default: //Add code to notify user that something has gone wrong and needs to be fixed return(null); } }