串口每次接收 5 字節,需循環賦值:第 1 次→A, 第 2 次→B … 第 5 次→E,第 6 次→A …
byte[] buffer = new byte[5]; // A~E
int index = 0;
void OnDataReceived(byte[] data)
{
// 假設每次恰好收到 1 字節,若收多字節需循環處理
buffer[index] = data[0];
index = (index + 1) % 5; // 0→1→2→3→4→0...
}
private byte[] _latestBytes = new byte[5];
private int _pos = 0;
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int len = serialPort1.BytesToRead;
byte[] recv = new byte[len];
serialPort1.Read(recv, 0, len);
foreach (byte b in recv)
{
_latestBytes[_pos] = b;
_pos = (_pos + 1) % 5;
}
// 此處可觸發 UI 更新事件
}
若後續邏輯只是判斷值,無需存入 A~E 變量,直接用索引訪問:
// 判斷第 3 個字節是否為 0xAA
if (_latestBytes[2] == 0xAA) { ... }
foreach 循環處理每個字節。ConcurrentQueue。