簡體   English   中英

java:接收UDP數據包以及如何保存它們

[英]java: receiving UDP packet and how to save them

我從simulink udp塊接收數組中的udp數據(字節[]數據)。 數據打包為int32,所以首先我需要將其解壓縮。

我不知道如何保存這些數據才能使用它。 這些數據是位置,我想使用OpenGL ES對其進行可視化。 我想將數據保存到數組中,並能夠在下一次迭代中將下一個數據包添加到該數組中,而不是重寫整個數組(由於循環)

數據的大小現在是1200 * 96。 數組是一個好選擇嗎?

       int j = 0 ;
  float[] bin1 = new float[(data.length/2)];
  while (j < data.length ) {
    if ( data[2*j+2] >= 0  ) {

      String unhx =(binary(data[2*j+3])+binary(data[2*j+2])+binary(data[2*j+1])+binary(data[2*j]));
      float unbin = ((float)unbinary(unhx)/100);
      bin1[j/2] = unbin;
      print(bin1[1]);
    }

    else if  ( data[2*j+2] < 0 && data[2*j+3] < 0 ) {
      data[2*j] = (byte)(-data[2*j]);
      data[2*j+1] = (byte)(-data[2*j+1]);
      String unhx =(binary(data[2*j+1])+binary(data[2*j]));
      float unbin = ((-1)*(float)unbinary(unhx)/100);
      bin1[j/2] = unbin;
      print(bin1[1]);
      }
      j = j + 2;
  }

現在的問題是,每次收到新數據包時,它都會重寫整個bin1數組,我怎么能將新數據包添加到bin1中而不重寫整個東西呢?

我在這里看到的一個問題是,在while循環中,您將counter用作變量int j=0但是沒有在增加計數器變量j情況下出現問題。

j = 0 ;
while (j < data.length){
float[] array = new float[] {myData};
j++;
}

同樣,Melisa,您必須在進入while循環之前聲明數組。 這樣,一旦您退出循環,它們便會保留在范圍內。 這意味着,退出循環后,您仍然可以訪問陣列。 :) 希望這可以幫助。

回復您已編輯的問題:

Melisa,您可能要考慮使用浮點數列表,而不是浮點數數組。 否則,您可能會發現自己需要調整大小並在陣列上進行復制以添加更多數據。 理論上,列表/鏈接列表的長度是無限的(您實際上不必擔心長度),您可以繼續添加浮點數。

清單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM