C#串口不能触发datareceived事件

privateSerialPortSpCom=newSerialPort("COM4",9600,Parity.None,8,StopBits.One);//声明串口pu... private SerialPort SpCom = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);//声明串口
public void listen()
{
SpCom.DataReceived += SpCom_DataReceived;//
//SpCom.DataReceived += new SerialDataReceivedEventHandler(received);
}
public void SpCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] rebuffer = new byte[8];

SpCom.Read(rebuffer, 0, rebuffer.Length);
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.Invoke((EventHandler)(delegate
{
MessageBox.Show(rebuffer[0].ToString() + "\n" + rebuffer[1].ToString() + "\n" + rebuffer[2].ToString() + "\n" + rebuffer[3].ToString() + "\n" + rebuffer[4].ToString() + "\n" + rebuffer[5].ToString() + "\n" + rebuffer[6].ToString() + "\n" + rebuffer[7].ToString());
}));

}

以上程序目的是想在进入.Invoke((EventHandler)以后,通过messagebox。show();看到rebuffer里的数值,但是始终没有能弹出messagebox。
展开
 我来答
shangfei8
2013-05-08 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:33.3万
展开全部
使用SpCom发送的数据是不能再使用SpCom接收的。发的数据是通过串口给别的设备的,接收是需要别的设备发的数据。
追问
用串口调试助手,用COM4这个端口,可以实现自发自收啊,而且我编的程序用查询方式也收到数据了,所不同的是,查询方式太浪费系统资源了,所以想搞个datareceive事件触发接收。
追答
使用一个串口的方式我没有做过,我是自己做一条数据线,一头的发送连另一头的接收,然后用这条线连一台电脑的com1和com2上.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xzhw8608
2013-05-08 · TA获得超过1779个赞
知道小有建树答主
回答量:1074
采纳率:100%
帮助的人:570万
展开全部
是不是没调用Open()
更多追问追答
追问

调用了SpCom.Open();如下是我的界面;点开始测试进去之后有串口打开的指令;

 private void button2_Click(object sender, EventArgs e)
        {

    byte[]  buffer =new byte[8];

            if (SpCom.IsOpen)
            {
            }
            else
            {
                SpCom.Open();
            }
                       SpCom.Write(buffer, 0, 8);

        
        }

追答
我对.net也不是特别熟悉
SpCom.DataReceived += SpCom_DataReceived;
改成
SpCom.DataReceived += new SerialDataReceivedEventHandler(this.SpCom_DataReceived);
试试
事件是不是只能绑定到委托上,而不是直接绑定函数的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式