С помощью мыши у меня есть команда, которая выглядит следующим образом:записи колеблются координаты в файл
movej([100, 200, 300, 1, 2, 1])= [X, Y, Z, RX, TX, RX].
The X Y и Z являются varaibles и не являются одинаковыми. Они выходят с 100 командами movej каждую секунду. Если я использую bufferwrite для записи в файл, он только записывает последнюю известную команду. Я хочу записывать как каждую команду и записывать ее в файл (даже если это то же самое!). Это должно выглядеть так:
movej([100, 200, 300, 1, 2, 1])= [X, Y, Z, RX, TX, RX]
movej .....
movej......
movej......
movej([120, 220, 330, 1, 2, 1])= [X, Y, Z, RX, TX, RX]
Что мне нужно изменить о коде?
File file = new File("GcodeCoordinaten.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
//BufferedWriter bw = new BufferedWriter(fw);
fw.write(Gcode+"\n");
fw.flush();
//fw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
Команда приходят из MouseEvent и отформатированы, как это:
Gcode = string.format("movel(p[0.%d,-0.%d, 0.%d, -0.5121, -3.08, 0.0005])"+"\n", coX1, coY1, 150); .
2e EDIT
Привет ребята, они, как им буферизация делает работу, но для приложения я использую его оленья кожа Работа. Я имею в виду, что это не влияет на то, что я пытался с ним делать. Робот, выполняющий эти команды, делает ударное движение. Это связано с тем, что многие команды приписываются ему.
Моя проблема кажется более трудной, чем я думаю. Ive положил метод, который посылает координаты через порт TCP/IP, а также предикативный для записи в файл. Поскольку то, что я пытался сделать с записью в файл, - это понять, что было с ним связано. Ive противодействовал каждой команде, которая была отправлена в файл и в порт TCP.
Оба пишут simoustainly в файле и в TCP-порт. Счетчик увеличивается более чем на 3000 раз в секунду! Что вызывает этот высокий приращение?
код выглядит следующим образом: датчик
while(true){ // true when mouse is connected
if (listen1.newdata = true){ // listener from the mouse/sensor
coX1 += getX();
coY1 += getY();
bufferX = coX1;
bufferY = coY1;
count++;
}
if(count == 100){
averageX = bufferX/100;
averageY = bufferY/100;
newdata = true;
coY1 = 0;
coX1 = 0;
}
if (newdata = true){
send(Gcode); //This one sends to tcp/ip
write(Gcode; // this one writes to file
counter++; // This counter increments by more then 3000 p/s
}
ввода: 100Hz (я не могу изменить частоту дискретизации датчика !!) команда выхода: она должна быть как 1Гц максимум 3 Гц Что может или может сделать это счетчик так быстро? Я из идей.
Я просто хочу, чтобы программа не отправляла и не писала так много команд.
Да, Спасибо за ваш ответ. Это сработало. Но, к сожалению, это было неправильно, чего я ожидал от этого. Программа продолжает отправлять большие координаты, даже если она буферизована или значение было изменено, она по-прежнему отправляет команды. Теперь я должен поместить некоторый метод в том, что говорит, если старая координата равна new, тогда не отправляйте. –