[uquote="olegue",url="/forum/viewtopic.php?p=4470706#p4470706"]добавил
ta1.setCaretPosition(ta1.getDocument().getLength());
Код: Выделить всё
//////////////////////////////////////////////////// RX: > ta1
ta1.append(UDP_RX); // > TextArea
ta1.setCaretPosition(ta1.getDocument().getLength());
//////////////////////////////////////////////////// RX: > Console
//System.out.println(UDP_RX);
[/uquote]
ta1.append(UDP_RX); // добавить >
ta1.setCaretPosition(ta1.getDocument().getLength()); // автопрокрутка
работает))
сам додумался ?
Добавлено after 30 minutes 29 seconds:
File uniqueFile = File.createTempFile("udp", ".raw", new File("E:/JAVA/"));
по моему это тут лишнее))
по моему достаточно этого ))
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM.txt", "rw");
где "D:/EEPROM.txt" - имя файла, тип файла и путь к файлу.
при вызове этой функции
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM.txt", "rw");
будет автоматически создан файл "D:/EEPROM.txt"
всё))
чтоб дописать новые данные в файл:
0- создаём массив например длиной 1500 байт (в моём случае это максимальный размер одного Ethernet пакета)
static int [] E_int = new int[1500]; //1500 Ethernet
1- потом открываем нужный файл. (если файла нет, он будет автоматически создан)
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM.txt", "rw");
2- потом смотрим длину файла
EEPROM_len = E_raf.length(); //Возвращает длину файла EEPROM long
3- затем устанавливаем курсор в конец файла (или в то место куда мы хотим писать новые данные)
E_raf.seek(EEPROM_len);
4- далее производим запись (дописываем в конец файла новые данные)
for (xE=0; xE<1500; xE++) {
E_raf.writeByte(E_int[xE]); // запись массива E_int[xE] в файл "D:/EEPROM.txt"
};
5- затем производим верификацию файла (это по желанию)
E_raf.seek(EEPROM_len); // устанавливаем курсор в то место откуда мы последний раз писали
//E_raf.seek(0); // или устанавливаем курсор в начало файла "D:/EEPROM.txt" для сверки всего файла
for (xE=0; xE<1500; xE++) { // сверяем данные из файла с данными из массива
b_E = E_raf.read(); // читаем файл read() в буфер b_E int по одному байту //возвращает байт HEX или -1 (если байта нет)
if (b_E != E_int[xE]){ //r != w - сверяем данные файла с данными из массива по одному байту
EEPROM_error = 1; //EEPROM_error - данные не совпадают - устанавливаем флаг "ошибка"
};
};
6- и в конце закрываем файл
E_raf.close();
всё))
Добавлено after 5 minutes 19 seconds:
если надо каждый раз писать в новый файл... то тогда каждый раз создаём новый файл... например с новым номером... 1,2,3...
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM_1.txt", "rw"); // создаём новый файл "D:/EEPROM_1.txt"
...
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM_2.txt", "rw"); // создаём новый файл "D:/EEPROM_2.txt"
...
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM_3.txt", "rw"); // создаём новый файл "D:/EEPROM_3.txt"
...
и т.д.
на диски D:/ получаем кучу файлов... ))
EEPROM_1...
EEPROM_2...
EEPROM_3...
и т.д.
[uquote="olegue",url="/forum/viewtopic.php?p=4470706#p4470706"]походу TX_EEPROM() пишет лишь 1кб[/uquote]
максимальный размер файла... я не проверял))
в теории максимальный размер файла ограничен переменной long...
а это очень много байт ))
// диапазон значений long
// long 0...9.223.372.036.854.775.807|-9.223.372.036.854.775.808...-1
// long 0...7f ff ff ff ff ff ff ff | 80 00 00 00 00 00 00 00...ff ff ff ff ff ff ff ff
ДА !!!
чтоб использовать переменные типа long в Java на полную катушку надо в конце писать буковку "L"
чтоб Java понимала... что это очень много байт ))
static long EEPROM_len = 0; //объявили переменную (типа long)
например чтоб присвоить переменной EEPROM_len много байт 0xFFFFFFFF пишем так:
EEPROM_len = 0xFFFFFFFFL; // L(!)
...
EEPROM_len & 0x80000000L; // L(!)
EEPROM_len ^ 0x04C11DB7L; // L(!)
...
и т.д.
и везде в коде для переменных типа long надо писать с буковкой L в конце...
как-то так))
roman.com писал(а):максимальный размер файла... я не проверял))
щас проверим)) делов то))
создадим новый файл "D:/EEPROM.txt" размером более 4 гигабайт))
для этого пишем:
// создать новый файл "D:/EEPROM.txt"
RandomAccessFile E_raf = new RandomAccessFile("D:/EEPROM.txt", "rw");
затем устанавливаем курсор на позицию 0xFFFFFFFF
E_raf.seek(0xFFFFFFFFL); // с буковкой L в конце (!)
запускаем Java...
Java подумала немного...
и потом ещё немного...
для Java это большой файл...
в итоге Java создала новый файл на диске D:/ с именем "EEPROM.txt"...
в конец файла мы дописали ещё 16 байт... для проверки))
итого: на диске D:/ получился файл размером 4.294.967.295 + 16 байт в конце = 4.294.967.311 байт
вывод: Java умеет создавать/читать/писать файлы размером 4.294.967.311 байт и более...
только при этом Java долго думает)) оно и понятно... это же надо прочитать все 4.294.967.311 байт... причём байт за байтом... а это процесс не быстрый))
в остальном проблем нет.
с помощь курсора E_raf.seek(x); можно писать звук в один файл (4 гигабайт и более) по кругу...
получится простой кольцевой буфер...
будет как в видеорегистраторе))
с помощь курсора E_raf.seek(x); вообще можно много чего делать...
Добавлено after 1 hour 3 minutes 1 second:
PS ))
а я тут решил немного поиграться с телефончиком... ))
сделал радио управление...
на своём стареньком телефончике ))
сделал связь с компом...
теперь вот думаю... а как мне в мой телефончик добавить звук ? чтоб было как на компе...
Android и комп написаны на Java... у них даже программа одинаковая))
но проблема в том что андроид не поддерживает те библиотеки что в компе...
на компе звук играет нормально... в андроид - нет...
для андроид нужно искать другую библиотеку...
или я чёто не понимаю)) видать ещё не до конца разобрался...
для андроид не писал ещё ?
Добавлено after 33 minutes 54 seconds:
можно сделать всё циклично... чтоб при каждом вызове функции создавался новый файл на диске D:/ с новым названием...
например вот так:
static String s = "D:/EEPROM_0.txt";
static int x = 0;
// создаём новый файл "D:/EEPROM_x.txt" с номером "x"
x ++;
s = "D:/EEPROM_" + x + ".txt";
RandomAccessFile E_raf = new RandomAccessFile(s, "rw");
...
теперь наша Java при каждом вызове функции TX_EEPROM() создаёт новый файл... с новым названием... и записывает туда новые данные))
