java:接收UDP数据包以及如何保存它们

时间:2012-06-14 12:48:29

标签: java udp

我从simulink udp块接收我的数组(byte []数据)中的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而不是重写整个数据包?

3 个答案:

答案 0 :(得分:0)

我在这里看到的一个问题是在while循环中你使用计数器作为变量int j=0但是你没有增加可能是问题的计数器变量j

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

答案 1 :(得分:0)

再次Melisa,你必须在进入while循环之前声明你的数组。因此,一旦离开循环,它们将保持在范围内。这意味着,在离开循环后,您仍然可以访问该阵列。 :)希望这有帮助。

答案 2 :(得分:0)

回复您编辑过的问题:

Melisa,您可能需要考虑使用浮动列表而不是浮点数组。 否则,您可能会发现自己正在调整数组并复制数组以添加更多数据。 列表/链表在理论上具有无限长度(你真的不必关心自己的长度),你可以继续添加浮点数。

List