2014-08-29 3 views
1

Это мой код. Когда я запускаю этот первый байт, он сохраняется в 0-й позиции tempbuf. Но когда я получил второй байт, первое значение сбрасывается в tempbuf :-(Массив массива байтов в другой массив байтов в C#

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    int bytes = serialPort1.BytesToRead; 
    byte[] byte_buffer = new byte[200]; 
    byte[] tempbuf = new byte[200]; 
    byte[]tempbuf2=new byte[200]; 
    byte[] ar = new byte[20]; 
    byte[] ssd = new byte[4]; 
    byte[] ctrl = new byte[20]; 

    string pp = ""; 
    string ll = ""; 

    serialPort1.Read(byte_buffer, 0, bytes); 



    if (i == 0) 
    { 
     index = byte_buffer[0]; 
    } 
     tempbuf[q++] = byte_buffer[0]; 
    i++; 
    if (i == 200) 
    { 

     array[index] = TestSerializer.MarshalToStructureArray(tempbuf, tempbuf.Length); 
     if (textBox30.InvokeRequired) 
     { 

    this.Invoke(((MethodInvoker)delegate 
     { 
     textBox30.Text = index.ToString(); 
    })); 
    } 
    i = 0; 
    } 
    if (q == 200) 
    { 


    q = 0; 
} 
+1

Научиться форматировать Ваш код пожалуйста – leppie

+0

Может кто-нибудь мне помочь? – user3952215

+0

Где находится 'q' и для чего вы его используете? Ваши имена переменных довольно загадочны, поэтому трудно сказать, что вы пытаетесь сделать. –

ответ

1

Я решил эту проблему, объявив tempbuf, как статический массив байтов:.

static byte[] tempbuf = new byte[200]; 
Смежные вопросы