2015-06-16 33 views
0

我正在做一個應用程序,包括髮送一個從android接收數據到微控制器的接收端,這是從微控制器到android我正在使用一個字節緩衝區存儲數據。但是在這裏我遇到了一個問題,我希望在不同階段接收多個字節的數據,因爲我想清除字節緩衝區並重新使用相同的字節緩衝區,任何人都可以告訴我如何清除字節緩衝區如何清除Android中的字節緩衝區

這是我的接收代碼:

ByteBuffer buffer = ByteBuffer.allocate(64); 
     byte[] length = buffer.array(); 
     byte[] Recevied_Data = new byte[64]; 
     UsbRequest request = new UsbRequest(); 

     while (true) 
     { 
      request.initialize(UsbDriver.USB_Device_Connection, UsbDriver.Data_In_End_Point); 
      request.queue(buffer, 64); 
      if (UsbDriver.USB_Device_Connection.requestWait() == request) 
      { 
       for(int i=0;i<length.length;i++) 
       { 
        Recevied_Data[i]=buffer.get(i); 
        if(Recevied_Data[0]==0x02 && Recevied_Data[1]==0x3B && Recevied_Data[2]==0x3B && Recevied_Data[3]==0x00 && Recevied_Data[4]==0x03){ 
        Communication_Ok=true; 
       // **I want to clear the Buffer Here**   


       } 
      } 

      } 
     } 
+0

,請嘗試讀取http://stackoverflow.com/questions/8462200/examples-of-forcing-freeing-of-native-memory-direct-bytebuffer-has-allocated-us阿邁對您有所幫助。 –

+0

你試過了嗎:buffer.clear()? – TheTanic

+0

但是在這裏,我將字節緩衝區分配給Received_data [i]我沒有使用那個傢伙@TheTanic – dEePU

回答

0

爲什麼要擦除數據?它是局部變量嗎?如果它是局部變量,則它將被GC清除,否則(在成員變量的情況下)只將null分配給緩衝區。您可以通過將0(使用arraycopy)複製到bytebuffer來執行memset,但它將是無意義的代碼。