我对 SerialPort.DataReceived 事件有疑问。让我解释一下我的问题。我有 1 个表单让我们调用这个 mainform.cs,我有一个类 pumpfuntions.cs,在 pumpfunctions.cs 中我创建了我的串口并使用串口创建了我需要的功能。
我想要的是我收到的数据进入一个文本框。但问题是我的 Datareceived 类在我的 pumpfunctions.cs 中。
我该如何解决这个问题。
代码 Pumpfunctions.cs:
Class PumpFunctions
{
private SerialPort _comport = new SerialPort();
public string RxString;
public void SerialPortDataReceived()
{
if (_comport.DataReceived != false)
{
string ReadData = _comport.ReadExisting();
RxString = ReadData;
}
}
public void OpenSerialPort()
{
_comport.PortName = "COM6";
_comport.BaudRate = 9600;
_comport.Open();
}
public void CloseSerialPort()
{
_comport.Close();
}
}
代码 Mainform.cs
public partial class MainForm : Form
{
private PumpFunctions _pump = new PumpFunctions();
private String rxString;
public MainForm()
{
InitializeComponent();
_pump.OpenSerialPort();
}
private void SerialPortDataReceived()
{
string rxString = _pump.RxString;
//this.Invoke(new EventHandler(_commandTextbox_TextChanged));
}
private void _commandTextbox_TextChanged(object sender, EventArgs e)
{
switch (rxString)
{
case "\r\n:": _commandTextbox.AppendText("Status: Stopped\r\n"); break;
case "\r\n>": _commandTextbox.AppendText("Status: Running forward\r\n"); break;
case "\r\n<": _commandTextbox.AppendText("Status: Running reverse\r\n"); break;
case "\r\n*": _commandTextbox.AppendText("Status: Stalled\r\n"); break;
case "\r\n*|": _commandTextbox.AppendText("Status: Infuse limit switch activated\r\n"); break;
case "\r\n*W": _commandTextbox.AppendText("Status: Withdraw limit switch activated\r\n"); break;
case "\r\n*D": _commandTextbox.AppendText("Status: Disable by emergency stop\r\n"); break;
case "\r\n*T": _commandTextbox.AppendText("Status: Target volume reached\r\n"); break;
default: _commandTextbox.AppendText(rxString); break;
}
}
}
有人可以向我解释问题所在。
这也是我得到的错误
错误 1
The event 'System.IO.Ports.SerialPort.DataReceived' can only appear on the left hand side of += or -=
提前致谢