/************************************************************************************\ * CatLog - An SDSG Production * \************************************************************************************/ /*! \file SerialLog.cs * \author Andrew Shurney * \brief Logs from a serial port. Sends out data over events. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Threading; using System.IO.Ports; using System.Windows.Forms; namespace CatLog { class SerialLog { public String portName; SerialPort port = null; public delegate void NewDataHandler(String line); public delegate void ClearHandler(); public event NewDataHandler NewData = null; public event ClearHandler Clear = null; public SerialLog(String portName) { this.portName = portName; } public void Start() { if (IsRunning) return; port = new SerialPort(portName, 57600, Parity.None, 8, StopBits.One); port.Handshake = Handshake.None; port.Encoding = Encoding.UTF8; port.DataReceived +=new SerialDataReceivedEventHandler(port_DataReceived); Reset(); port.Open(); } void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; String data = sp.ReadExisting(); if (NewData != null) NewData(data); } public bool IsRunning { get { if (port == null) return false; return port.IsOpen; } } public void Stop() { if (!IsRunning) return; port.Close(); } public void Reset() { if (Clear != null) Clear(); } } }