省得麻烦 ,你直接把整个event回调算了
public delegate void DataReceivedDelegate(object sender,eventargs e);
public DataReceivedDelegate myDelegate;
public void DataReceived(object sender,eventargs e) 这是你那个事件
{
Invoke(myDelegate,new object[]{sender,e});
}
public void CallDataReceived(object sender,eventargs e)
{
把执行代码放这里
}
刚上面那个问题解决了,不是eventargs,而是EventArgs
但改个以后程序还是不行,这里我提出两个疑问:
1.串口的标准事件程序是这样的
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
......
}
2.4楼说的:
public void CallDataReceived(object sender,eventargs e)
{
把执行代码放这里
}
那CallDataReceived是什么意思啊,是不是调用串口接收事件那程序啊?
请指教哟,多谢谢了!
没工具 原来写错了
应该这样
public delegate void DataReceivedDelegate(object sender,eventargs e);
public void serialPort1_DataReceived(object sender,eventargs e) 这是你那个事件
{
Invoke(new DataReceivedDelegate(CallDataReceived),new object[]{sender,e});
}
public void CallDataReceived(object sender,eventargs e)
{
把执行代码放这里
}
哈哈,"chenjin145"是正解,多些你的热心!
但又出现了下面的问题:
我在下面程序里加上了我自己的代码:
public void CallDataReceived(object sender,eventargs e)
{
// 把执行代码放这里
//从串口取出数据:
this.textCardnum.text=串口取出数据;
}
然后发现该窗体上的textCardnum控件只接收到串口的后几位数据388~,而正常情况下应该接收~0200500388~,我仔细观察才发现,textCardnum是在该事件中赋了两次值:第一次是~0200500,第二次是388~,所以textCardnum控件显示的是388~,如此便不能读出正常的数据;不知道是我串口设置错了,还是从串口去数据时候的代码有错,请知道的朋友告诉我了!先谢谢了