2011-12-19 5 views
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: ");    
    } 
} 
+0

내 대답을 (내가 처음에 질문을 오해) 명확히하려고했으나'에만 BytesToRead' 로컬받을 BU를 말한다 ffer; 그것은 당신에게 무엇이 들어오는지를 알려주지 않습니다. 일반적으로'BytesToRead'와 같은 것들의 주요 용도는 : 이미 * 존재하는 데이터를 처리하거나 블로킹 (동기화) 할 때, BeginRead (async)를 수행 할 때를 결정할 때 –

답변

관련 문제