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。 展开
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。 展开
2个回答
展开全部
使用SpCom发送的数据是不能再使用SpCom接收的。发的数据是通过串口给别的设备的,接收是需要别的设备发的数据。
追问
用串口调试助手,用COM4这个端口,可以实现自发自收啊,而且我编的程序用查询方式也收到数据了,所不同的是,查询方式太浪费系统资源了,所以想搞个datareceive事件触发接收。
追答
使用一个串口的方式我没有做过,我是自己做一条数据线,一头的发送连另一头的接收,然后用这条线连一台电脑的com1和com2上.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是没调用Open()
更多追问追答
追问
追答
我对.net也不是特别熟悉
SpCom.DataReceived += SpCom_DataReceived;
改成
SpCom.DataReceived += new SerialDataReceivedEventHandler(this.SpCom_DataReceived);
试试
事件是不是只能绑定到委托上,而不是直接绑定函数的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询