4
수신 버퍼를 처리하고 각 전송시 데이터의 125 바이트를 모두 확보하려고합니다. 바이트 배열을 만들었습니다. 125 바이트의 데이터가 수신되고 있음을 어떻게 알 수 있습니까? 나는 바이트 수를 표시하려고 시도했지만 다른 수를 표시하고 수신 된 바이트 수를 얻기 위해 올바른 코딩인지 확신 할 수 없습니다. 로컬 버퍼 (BytesToRead
)를받는 때까지 읽고있는 순간C에서 바이트를 읽는 방법 #
void datareceived(object sender, SerialDataReceivedEventArgs e)
{
myDelegate d = new myDelegate(update);
listBox1.Invoke(d, new object[] { });
}
public void update()
{
Console.WriteLine("Number of bytes:" + serialPort.BytesToRead); // it shows 155
while (serialPort.BytesToRead > 0)
bBuffer.Add((byte)serialPort.ReadByte());
ProcessBuffer(bBuffer);
}
private void ProcessBuffer(List<byte> bBuffer)
{
// Create a byte array buffer to hold the incoming data
byte[] buffer = bBuffer.ToArray();
// Show the user the incoming data // Display mode
for (int i = 0; i < buffer.Length; i++)
{
listBox1.Items.Add("SP: " + (bBuffer[43].ToString()) + " " + " HR: " + (bBuffer[103].ToString()) + " Time: ");
}
}
내 대답을 (내가 처음에 질문을 오해) 명확히하려고했으나'에만 BytesToRead' 로컬받을 BU를 말한다 ffer; 그것은 당신에게 무엇이 들어오는지를 알려주지 않습니다. 일반적으로'BytesToRead'와 같은 것들의 주요 용도는 : 이미 * 존재하는 데이터를 처리하거나 블로킹 (동기화) 할 때, BeginRead (async)를 수행 할 때를 결정할 때 –