1
我使用Visual C#2010 Windows窗體應用程序串口 對象接收十六進制數據串口字節。
但是,我意識到我的DataReceived
事件被觸發兩次,即使我已經讀取了緩衝區中的所有數據字節,並且緩衝區顯示0
字節要讀取。
爲什麼會發生這種情況?串行端口對象的DataReceived事件檢索射擊兩次
private void PortData(Object Sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(delegate { DisplayText(); }));
}
Private void DisplayText()
{
int dataLength = serialPort1.BytesToRead;
byte[] data = new byte[dataLength];
serialPort1.Read(data, 0, dataLentgh)
}
我的串行端口上發送8個字節的十六進制I-E FF FF FB FB FB FF其在通過讀取功能數據陣列接收FB。但此後 PortData函數被第二次調用以讀取0個字節。我不想讓它第二次調用。
歡迎來到StackExchange!對於第一個問題,這非常好 - 如果你提到了你正在使用的實際命名空間和類名,你的問題將更容易回答(因此更有可能吸引答案),並且在未來也更容易找到。更好的是,如果你鏈接到參考手冊,並引用你有問題的部分。 – RJHunter
可能有幾個原因(可能是在你讀取字節之前被解僱) - 你能顯示你的代碼嗎?也許我們可以幫助你解決這個問題(因爲它確實應該是沒有問題的) – Carsten
private void PortData(Object Sender,System.IO.Ports.SerialDataReceivedEventArgs e) \t this.Invoke(new EventHandler(delegate {DisplayText ();})); } Private void DisplayText() { \t int dataLength = serialPort1.BytesToRead; \t byte [] data = new byte [dataLength]; \t serialPort1.Read(data,0,dataLentgh) } 我在串行端口i-e FF FF FB FB FB FF FB上發送8個十六進制字節,它們是通過讀功能在數據數組中接收到的。但此後 PortData函數被第二次調用以讀取0個字節。我不想讓它第二次調用。 –