我有一個串口設備,連接串口后,只要打開串口,設備會持續發送實時資料過來。如果按照下面的代碼,那么在我收到資料時i的值是0還是1。程式執行的順序是怎么樣的。小白最近搞不清事件的這些順序,還請大佬解惑
private void Button3_Click_1(object sender, EventArgs e)
{
int i=0;
port.DataReceived += port_DataReceived;
port.open();
i++;
}
private void Aaport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
....................其他代碼.....................
}
uj5u.com熱心網友回復:
private void Button3_Click_1(object sender, EventArgs e){
int i=0;
port.DataReceived += port_DataReceived;
port.open();
i++;
}
這段代碼,你是開啟串口并系結串口接收事件,每次串口資料過來都會執行port_DataReceived這里面的代碼
按你寫的代碼,你點一次button3之后,開啟串口,這時候i=1,而且你i是定義再按鈕里面的,就是你不管點了多少次i,i還是=1
再就是串口事件會被系結多次,串口一次資料過來,你會執行多次port_DataReceived,看你按鈕點了幾次,就會執行幾次port_DataReceived
uj5u.com熱心網友回復:
可以改成這樣
int i=0;
private void Button3_Click_1(object sender, EventArgs e)
{
port.DataReceived += port_DataReceived;
port.open();
}
private void Aaport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
i++;
....................其他代碼.....................
}
uj5u.com熱心網友回復:
。。。事件名稱都不一樣,改成下面這樣吧
int i=0;
private void Button3_Click_1(object sender, EventArgs e)
{
port.DataReceived += port_DataReceived;
port.open();
}
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
i++;
....................其他代碼.....................
}
uj5u.com熱心網友回復:
老哥,假設這個是我寫的一個方法,而不是按鈕的點擊事件,那么在我執行這個方法的時候,執行到串口打開這一步,這時候我應該收到了設備發的資料,這個時候程式是繼續執行我方法里的內容,還是執行接收資料里面的其他代碼呢
uj5u.com熱心網友回復:
會執行這里系結的事件里的代碼,你這里系結的是port_DataReceived,那就會去執行port_DataReceived這個方法里的代碼
port.DataReceived += port_DataReceived
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/82462.html
標籤:C#
