2014-08-29 96 views
1

這是我的代碼。當我運行這個第一個字節保存在tempbuf的第0個位置。但是,當我第二個字節,第一個值在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 2014-08-29 04:30:30

+0

任何人都可以幫助我......? – user3952215 2014-08-29 05:13:32

+0

q的定義在哪裏,你用它來做什麼?你的變量名稱相當隱晦,所以很難說出你想要做什麼 – 2014-08-29 05:21:49

回答

1

我通過聲明tempbuf爲靜態的字節數組解決了這個問題:

static byte[] tempbuf = new byte[200]; 
相關問題