在编写串口助手时,接收返回值通过回调函数封装在类里面,主窗体的控件想要显示接收的返回值怎么办?
通过委托方式将主窗体中的静态事件做绑定
public class ListenerValue
{
// 构造方法
public ListenerValue()
{
//和外部类的方法做绑定
Handler = Form1.Recstring;
}
// 定义委托
public delegate void ValueChanged(string s);
//事件
public ValueChanged Handler;
// 定义属性
private string m_value = string.Empty;
public string Value
{
get { return m_value; }
set
{
this.m_value = value;
Handler(m_value);
}
}
}
SerialPort.cs
//在串口类里面将变量传递给监听值
public void serialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
int num = _serialPort.BytesToRead;
byte[] received_buf = new byte[num];
cntReceivedBytes += num;
_serialPort.Read(received_buf, 0, num);
sb.Clear();
foreach (byte b in received_buf)
{
sb.Append(b.ToString("X2")); //字节显示为2位16进制
sb.Append(" "); //用空格隔开
}
vc.Value = sb.ToString();
}
主窗体
//如果用的是winform,则需要将form静态化
public static Form1 mainFrm;
public static void Recstring(string s)
{
Console.WriteLine("我的值被改变了: " + s);
Form1.mainFrm.textbox1.text=s;
}