public void TearDown() { if (mLogger != null) { mLogger.ShutDown(); } }
public static void Main(string[] args) { mTelemetryBroadcastTimer = new Timer(kTelemetryBroadcastPeriod); mTelemetryBroadcastTimer.AutoReset = true; mTelemetryBroadcastTimer.Elapsed += OnTelemetryPublishAlarm; string fileName = string.Format("Server-{0}.txt", System.DateTime.Now.ToString("dd MM yyyy HH-mm-ss")); mLogger = new ProsthesisCore.Utility.Logger(fileName, true); mLogger.LogMessage(ProsthesisCore.Utility.Logger.LoggerChannels.General, "ProsthesisOS startup", true); mContext = new States.ProsthesisMainContext(ProsthesisCore.ProsthesisConstants.ConnectionPort, mLogger); mTelemetryBroadcastTimer.Start(); //Safely shut down app AppDomain.CurrentDomain.ProcessExit += delegate(object sender, EventArgs e) { if (mContext.IsRunning) { mContext.Terminate("Aborted"); } mLogger.ShutDown(); }; Console.WriteLine("Press 'x' to exit"); while (Console.ReadKey().Key != ConsoleKey.X) { } if (mContext.IsRunning) { mContext.Terminate("User terminated"); } mTelemetryBroadcastTimer.Stop(); mLogger.ShutDown(); }
static void Main(string[] args) { mTelemetryBroadcastTimer = new Timer(kTelemetryBroadcastPeriod); mTelemetryBroadcastTimer.AutoReset = true; mTelemetryBroadcastTimer.Elapsed += OnTelemetryPublishAlarm; mTelemetryBroadcastTimer.Start(); string fileName = string.Format("Arduino-comms-{0}.txt", System.DateTime.Now.ToString("dd MM yyyy HH-mm-ss")); ProsthesisCore.Utility.Logger logger = new ProsthesisCore.Utility.Logger(fileName, true); System.DateTime start = System.DateTime.Now; string telemFileName = string.Format("Arduino-telem-{0}.csv", System.DateTime.Now.ToString("dd MM yyyy HH-mm-ss")); System.IO.TextWriter writer = new System.IO.StreamWriter(telemFileName); ArduinoCommsBase.InitializeSerialConnections(logger); MotorControllerArduino test = new MotorControllerArduino(logger); writer.WriteLine("Timestamp(ms), Duty Cycle 1, Duty Cycle 2, Pressure 1, pressure 2, P, I, D"); test.TelemetryUpdate += new Action<ProsthesisCore.Telemetry.ProsthesisTelemetry.ProsthesisMotorTelemetry>(delegate(ProsthesisCore.Telemetry.ProsthesisTelemetry.ProsthesisMotorTelemetry obj) { double ts = (System.DateTime.Now - start).Duration().TotalMilliseconds; mTelem.MotorTelem = obj; string telemRow = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", ts, obj.MotorDutyCycles[1],obj.MotorDutyCycles[0], obj.OutputPressure[1], obj.OutputPressure[0], obj.ProportionalTunings[1], obj.IntegralTunings[1], obj.DifferentialTunings[1], obj.PressureSetPoints[0], obj.PressureSetPoints[1]); Console.WriteLine(telemRow); writer.WriteLine(telemRow); }); bool telemEnable = false; bool arduinoState = false; if (test.StartArduinoComms()) { Console.WriteLine("Press 'x' to exit. 'T' to enable telemetry, 'E' to toggle device state"); ConsoleKey key = ConsoleKey.A; test.ToggleHeartbeat(true, 1000, 3); do { System.Threading.Thread.Sleep(16); if (Console.KeyAvailable) { key = Console.ReadKey().Key; if (key == ConsoleKey.T) { telemEnable = !telemEnable; test.TelemetryToggle(telemEnable ? 25 : 0); } else if (key == ConsoleKey.E) { arduinoState = !arduinoState; test.ToggleArduinoState(arduinoState); } } } while (key != ConsoleKey.X && test.IsConnected); test.StopArduinoComms(true); } else { Console.WriteLine("Failed to connect to the correct Arduino. Press any key to exit"); do { System.Threading.Thread.Sleep(16); } while (!Console.KeyAvailable); } mTelemetryBroadcastTimer.Start(); writer.Close(); logger.ShutDown(); }
static void Main(string[] args) { mTelemetryBroadcastTimer = new Timer(kTelemetryBroadcastPeriod); mTelemetryBroadcastTimer.AutoReset = true; mTelemetryBroadcastTimer.Elapsed += OnTelemetryPublishAlarm; mTelemetryBroadcastTimer.Start(); string fileName = string.Format("Arduino-comms-{0}.txt", System.DateTime.Now.ToString("dd MM yyyy HH-mm-ss")); ProsthesisCore.Utility.Logger logger = new ProsthesisCore.Utility.Logger(fileName, true); System.DateTime start = System.DateTime.Now; string telemFileName = string.Format("Arduino-telem-{0}.csv", System.DateTime.Now.ToString("dd MM yyyy HH-mm-ss")); System.IO.TextWriter writer = new System.IO.StreamWriter(telemFileName); ArduinoCommsBase.InitializeSerialConnections(logger); MotorControllerArduino test = new MotorControllerArduino(logger); writer.WriteLine("Timestamp(ms), Duty Cycle 1, Duty Cycle 2, Pressure 1, pressure 2, P, I, D"); test.TelemetryUpdate += new Action <ProsthesisCore.Telemetry.ProsthesisTelemetry.ProsthesisMotorTelemetry>(delegate(ProsthesisCore.Telemetry.ProsthesisTelemetry.ProsthesisMotorTelemetry obj) { double ts = (System.DateTime.Now - start).Duration().TotalMilliseconds; mTelem.MotorTelem = obj; string telemRow = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", ts, obj.MotorDutyCycles[1], obj.MotorDutyCycles[0], obj.OutputPressure[1], obj.OutputPressure[0], obj.ProportionalTunings[1], obj.IntegralTunings[1], obj.DifferentialTunings[1], obj.PressureSetPoints[0], obj.PressureSetPoints[1]); Console.WriteLine(telemRow); writer.WriteLine(telemRow); }); bool telemEnable = false; bool arduinoState = false; if (test.StartArduinoComms()) { Console.WriteLine("Press 'x' to exit. 'T' to enable telemetry, 'E' to toggle device state"); ConsoleKey key = ConsoleKey.A; test.ToggleHeartbeat(true, 1000, 3); do { System.Threading.Thread.Sleep(16); if (Console.KeyAvailable) { key = Console.ReadKey().Key; if (key == ConsoleKey.T) { telemEnable = !telemEnable; test.TelemetryToggle(telemEnable ? 25 : 0); } else if (key == ConsoleKey.E) { arduinoState = !arduinoState; test.ToggleArduinoState(arduinoState); } } }while (key != ConsoleKey.X && test.IsConnected); test.StopArduinoComms(true); } else { Console.WriteLine("Failed to connect to the correct Arduino. Press any key to exit"); do { System.Threading.Thread.Sleep(16); }while (!Console.KeyAvailable); } mTelemetryBroadcastTimer.Start(); writer.Close(); logger.ShutDown(); }