Hi
try this:
using System;
using System.IO.Ports;
namespace PortHandler
{
public class PortHandler
{
private const string Delimiter = "\r";
private const string Rx = "Rx << ";
private const string Tx = "Tx >> ";
private string m_data;
private SerialPort m_serialPort;
public event EventHandler<EventArgs<string>> DataReceived;
public event EventHandler<EventArgs<string>> DataSend;
public event EventHandler<EventArgs<string>> ErrorMessage;
public void OnDataReceived(string dataReceived)
{
var handler = DataReceived;
if (handler != null)
{
handler(this, new EventArgs<string>(dataReceived));
}
}
public void OnDataSend(string dataSend)
{
var handler = DataSend;
if (handler != null)
{
handler(this, new EventArgs<string>(dataSend));
}
}
public void OnErrorMessage(string errorMessage)
{
var handler = ErrorMessage;
if (handler != null)
{
handler(this, new EventArgs<string>(errorMessage));
}
}
public string[] Ports
{
get
{
return SerialPort.GetPortNames();
}
}
public bool IsPortOpen
{
get
{
return (m_serialPort != null && m_serialPort.IsOpen);
}
}
public PortHandler()
{
}
public void DisconnectPort()
{
if (m_serialPort != null)
{
CloseSerialPort();
}
}
public bool ConnectPort(string portName, int baudRate)
{
if (m_serialPort == null)
{
m_serialPort = new SerialPort
{
PortName = portName,
BaudRate = baudRate,
Parity = Parity.None,
StopBits = StopBits.One,
DataBits = 8,
Handshake = Handshake.None,
ReadTimeout = 500
};
}
else
{
CloseSerialPort();
m_serialPort.PortName = portName;
m_serialPort.BaudRate = baudRate;
}
OpenSerialPort();
return IsPortOpen;
}
public void SendData(string data)
{
if ((m_serialPort != null) && m_serialPort.IsOpen)
{
m_serialPort.DiscardOutBuffer();
m_serialPort.Write(data + Delimiter);
OnDataSend(Tx + data + Delimiter);
}
}
private void OpenSerialPort()
{
try
{
m_serialPort.DataReceived += SerialPortDataReceived;
m_serialPort.Open();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message + ex.StackTrace);
}
}
private void CloseSerialPort()
{
if (m_serialPort.IsOpen)
{
m_serialPort.DataReceived -= SerialPortDataReceived;
m_serialPort.Close();
}
}
private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
var serialPort = (SerialPort)sender;
var data = serialPort.ReadExisting();
ProcessData(data);
}
private void ProcessData(string data)
{
Console.Out.WriteLine(data + "\r");
}
}
}
Regards
jegan