Files
OMControlCs/OMControl/Serial/SerialManager.cs
2025-12-24 16:41:31 +01:00

54 lines
1.1 KiB
C#

using System;
using System.IO.Ports;
using System.Text;
public class SerialManager : IDisposable
{
private SerialPort _serialPort;
public event Action<string>? DataReceived;
public bool IsOpen => _serialPort?.IsOpen ?? false;
public SerialManager(string portName, int baudRate)
{
_serialPort = new SerialPort(portName, baudRate)
{
Encoding = Encoding.ASCII,
NewLine = "\n"
};
_serialPort.DataReceived += OnDataReceived;
}
public void Open()
{
if (!_serialPort.IsOpen)
_serialPort.Open();
}
public void Close()
{
if (_serialPort.IsOpen)
_serialPort.Close();
}
public void Send(string data)
{
if (_serialPort.IsOpen)
_serialPort.WriteLine(data);
}
private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
{
string data = _serialPort.ReadLine();
DataReceived?.Invoke(data);
}
public void Dispose()
{
Close();
_serialPort.Dispose();
}
}