日期:2014-05-17  浏览次数:20678 次

新手求救:关于委托与事件的问题
我在一个关于串口操作的项目里,利用一个窗体来对串口进行读写操作。
config.cs窗体用来设置参数及收发指令。
Comm.cs类用来执行收发工作。
我的想法是当串口接收到数据后,config.cs窗体上自动弹出一个MessageBox。我采用了委托与事件方式。
代码如下,现在的问题是:在config.cs中设置串口参数及发送指令都正常,但是接收就不行了,用断点监控Comm.cs文件,可以确定串口是有接收有内容,但就是无法反馈到config.cs窗体上并自动弹出MessageBox.

不好意思,初学c#,对事件和委托感到很糊涂。总找不出问题出在哪里。还望高手们指点下迷津啊。


config.cs窗体代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SerialPort_WR
{
    public partial class Config : Form
    {
        private Comm comm;
        public string spName;//serialPort.PortName
        public int spBaudRate;//serialPort.BaudRate
        public System.IO.Ports.StopBits spStopBits;//serialPort.StopBits;
        public int spDataBits;//serialPort.DataBits
        public System.IO.Ports.Handshake spHandShake;//serialPort.HandShake
        public System.IO.Ports.Parity spParity;//serialPort.Parity;

        public Config()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            PortSetupInit();
        }

        public void PortSetupInit()
        {   
            //扫描所有串口
            foreach (string P in System.IO.Ports.SerialPort.GetPortNames())
            {
                cB_PortName.Items.Add(P);
            }
            cB_PortName.SelectedIndex = 1;
            cB_BaudRate.SelectedIndex = 9;//波特率
            cB_DataBits.SelectedIndex = 3;//数据位
            cB_Handshake.SelectedIndex = 2;//流控制
            cB_Parity.SelectedIndex = 0;//校验位
            cB_StopBits.SelectedIndex = 0;//停止位
            cB_SchTak.SelectedIndex = 0;//查询时间
            //serialPort1.RtsE