using System; using Microsoft.SPOT; using Microsoft.VisualStudio.TestTools.UnitTesting; using CPF; using System.Text; using System.Threading; using HWModules; namespace CPFUnitTests { [TestClass] public class PumpMotorUnitTests { [TestMethod] public void IncreaseBuoyancy() { Init(); double innerBellowsPosition = double.NaN; EnergyMonitorPump emPump = EnergyMonitorPump.Instance; EnergyMonitorLTC2946.EM_VandI emData; StringBuilder sbTemp = new StringBuilder(128); StringBuilder tab = new StringBuilder("\t"); sbTemp.Clear(); sbTemp.Append("Time of Day\t\tInner Bellows\tBattery\t\tBattery"); sbTemp.Append("\r\n\t\t\t\tPosition (mm)\tVoltage\t\tCurrent(mA)"); EngrLogger.writeToColumns(sbTemp.ToString()); int jogVelocity = 200000; int numLoops = 500; EngrLogger.writeToColumns("Increasing Buoyancy at " + jogVelocity.ToString() + " CPS for " + numLoops.ToString() + " loops"); buoyancyEngine.openMV(); Thread.Sleep(1000); buoyancyEngine.increaseBuoyancy(jogVelocity); for (int i = 0; i < numLoops; i++) { innerBellowsPosition = buoyancyEngine.getBellowsPositionStringPot(); emData = emPump.getVoltsAndMilliAmps(); //buoyancyEngine.getMotorStatus(); sbTemp.Clear(); sbTemp.Append(i.ToString()); sbTemp.Append(tab); sbTemp.Append(DateTime.Now.ToString("HH:mm:ss.fff")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(innerBellowsPosition.ToString("F2")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(emData.voltage.ToString("F3")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(emData.current.ToString("F3")); EngrLogger.writeToColumns(sbTemp); Thread.Sleep(1000); } buoyancyEngine.stopMotorAndCloseValve(); } [TestMethod] public void DecreaseBuoyancy() { Init(); double innerBellowsPosition = double.NaN; EnergyMonitorPump emPump = EnergyMonitorPump.Instance; EnergyMonitorLTC2946.EM_VandI emData; StringBuilder sbTemp = new StringBuilder(128); StringBuilder tab = new StringBuilder("\t"); sbTemp.Clear(); sbTemp.Append("Time of Day\t\tInner Bellows\tBattery\t\tBattery"); sbTemp.Append("\r\n\t\t\t\tPosition (mm)\tVoltage\t\tCurrent(mA)"); EngrLogger.writeToColumns(sbTemp.ToString()); int jogVelocity = 200000; int numLoops = 500; EngrLogger.writeToColumns("Decreasing Buoyancy at " + jogVelocity.ToString() + " CPS for " + numLoops.ToString() + " loops"); buoyancyEngine.openMV(); Thread.Sleep(1000); buoyancyEngine.decreaseBuoyancy(jogVelocity); for (int i = 0; i < numLoops; i++) { innerBellowsPosition = buoyancyEngine.getBellowsPositionStringPot(); emData = emPump.getVoltsAndMilliAmps(); //buoyancyEngine.getMotorStatus(); sbTemp.Clear(); sbTemp.Append(i.ToString()); sbTemp.Append(tab); sbTemp.Append(DateTime.Now.ToString("HH:mm:ss.fff")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(innerBellowsPosition.ToString("F2")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(emData.voltage.ToString("F3")); sbTemp.Append(tab); sbTemp.Append(tab); sbTemp.Append(emData.current.ToString("F3")); EngrLogger.writeToColumns(sbTemp); Thread.Sleep(1000); } buoyancyEngine.stopMotorAndCloseValve(); } [TestMethod] public void TestGetStatus() { } [TestMethod] public void TestRunMotor() { Init(); buoyancyEngine.init(); EnergyMonitorPump emPump = EnergyMonitorPump.Instance; EnergyMonitorLTC2946.EM_VandI emData; Debug.Print("Opening MV"); buoyancyEngine.openMV(); Thread.Sleep(3000); Debug.Print("Closing MV"); buoyancyEngine.closeMV(); Thread.Sleep(3000); Debug.Print("Opening MV"); buoyancyEngine.openMV(); Thread.Sleep(3000); int jogVelocity = 5000; Debug.Print("Running motor for 2 seconds"); buoyancyEngine.increaseBuoyancy(jogVelocity); Thread.Sleep(2000); buoyancyEngine.stopMotor(); buoyancyEngine.closeMV(); } private static bool runonce; private MotherBoard motherboard; private EnergyMonitorPump emPump; private BuoyancyEngine buoyancyEngine; private void Init() { Thread.Sleep(1000); motherboard = HWModules.MotherBoard.Instance; Thread.Sleep(1000); emPump = EnergyMonitorPump.Instance; Thread.Sleep(1000); motherboard.EnableChannelPower((int)HWModules.MotherBoard.ChannelNames.PositionSensorChannel); Thread.Sleep(1000); motherboard.EnableChannelPower((int)HWModules.MotherBoard.ChannelNames.PumpMotorControllerElexChannel); Thread.Sleep(1000); motherboard.EnablePump(); Thread.Sleep(1000); buoyancyEngine = BuoyancyEngine.Instance; Thread.Sleep(1000); if (!runonce) { runonce = true; buoyancyEngine.init(); Thread.Sleep(1000); } } } }