从鼠标中我得到一个如下命令:
movej([100, 200, 300, 1, 2, 1])= [X, Y, Z, RX, TX, RX].
X Y和Z是可变的并且不一样。他们每秒出现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
大家好,他们的方式即时缓冲确实有效,但对于我使用它的应用程序不起作用。我的意思是它对我试图用它做的事没有任何影响。执行这些命令的机器人会产生震动。这是因为很多命令被发送给它。
我觉得我的问题似乎比较困难。我已经提出了一种方法,它通过TCP / IP端口发送坐标,还有一个用于写入文件的前一个方法。正如我试图写入文件所做的那样是了解已经发送给它的内容。我一直在反击每个被写入文件和TCP端口的命令。
两者都在同时写入文件和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(我无法改变传感器的采样率!!) 输出命令:它应该像1hz,最大值为3hz 什么或可能使这个计数器增加如此之快?我没有想法。
我只是希望程序不会发送或写入这么多命令。
答案 0 :(得分:1)
我认为这里的问题是,每次要为文件写一个新行时,都会创建一个新的编写器。您应该只创建一次编写器,然后使用该实例进行编写。
比较这两个代码及其输出:
(也使用FileWriter.newLine()
代替“\ n”)
好的:
int i = 100;
try {
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);
while (i > 0) {
fw.write("" + i + "\n");
i--;
}
fw.flush();
//fw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
坏人:
int i = 100;
while (i > 0) {
try {
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("" + i + "\n");
fw.flush();
//fw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
i--;
}