2012-06-14 3 views
0

Я получаю данные udp в моем массиве (данные байта []) из блока simulink udp. данные упакованы как int32, поэтому сначала мне нужно его распаковать.java: получение пакета UDP и как их сохранить

Я не знаю, как я могу сохранить эти данные, чтобы иметь возможность использовать это. эти данные являются позициями, и я хочу визуализировать их с помощью 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 не переписывать все это?

+2

Примечание "Вызванный: java.lang.ArrayIndexOutOfBoundsException". Вам нужно это исправить. – bmargulies

+0

Используйте DataInputStream, а не все это бит. – EJP

ответ

0

Одна проблемы, что я вижу здесь в while цикле вы используете счетчик в качестве переменной int j=0, но не где вы приращение встречного переменной j, что может быть проблемой.

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

Я не копировал весь код, я его увеличиваю где-то в конце –

+1

@melisazand: ohh. Я думал, что вы делаете эту ошибку. Можете ли вы поместить свой полный код. – amicngh

+0

мой вопрос: как я могу сохранить данные ... –

0

Снова Melisa, вы должны объявить свои массивы перед тем, как вводить цикл while. Чтобы они оставались в области действия, вы покинули цикл. Это означает, что вы все равно сможете получить доступ к массиву после выхода из цикла. :) Надеюсь, это поможет.

+0

Я обновил свой вопрос –

0

Ответить на отредактированном вопрос:

Melisa, вы можете рассмотреть возможность использования списка поплавков, а не массив поплавки. В противном случае вы можете изменить размер и копирование по массиву, чтобы добавить дополнительные данные. Список/связанный список теоретически имеет неограниченную длину (вам действительно не нужно беспокоиться о длине), и вы можете просто добавлять к ним поплавки.

List

+0

спасибо, что может быть хорошим вариантом, но как я могу добавить массив в список массивов? (массив [0] = arraylist [0]) –

Смежные вопросы