Java lejos文件写入NXT
我不熟悉java和lejos,所以如果我问了一些愚蠢的问题,请不要责怪我 我试图让乐高超声波传感器通过在电机上旋转来扫描nxt周围的360度区域。每隔5度,它会将距离保存到.txt文件中 我的问题是,当我用nxjbrowse.bat上传文件后从电脑读取文件时,它只包含与应该保存在那里的数字(0-255)链接的ASCII字符 我的NXT代码:Java lejos文件写入NXT,java,file-io,lejos-nxj,Java,File Io,Lejos Nxj,我不熟悉java和lejos,所以如果我问了一些愚蠢的问题,请不要责怪我 我试图让乐高超声波传感器通过在电机上旋转来扫描nxt周围的360度区域。每隔5度,它会将距离保存到.txt文件中 我的问题是,当我用nxjbrowse.bat上传文件后从电脑读取文件时,它只包含与应该保存在那里的数字(0-255)链接的ASCII字符 我的NXT代码: package Dataloggers; import java.io.; import lejos.nxt.; public class USdist
package Dataloggers;
import java.io.;
import lejos.nxt.;
public class USdistance {
int totalRotation = 360;
int scanDensity = 5;
UltrasonicSensor ultrasonicSensor = new UltrasonicSensor(SensorPort.S3);
File distanceFile = new File("Distances.txt");
FileOutputStream fileStream = null;
public static void main(String[] args) {
@SuppressWarnings("unused")
USdistance usD = new USdistance();
}
public USdistance() {
Motor.A.setAcceleration(2000);
Motor.A.setSpeed(50);
try {
fileStream = new FileOutputStream(distanceFile);
} catch (Exception e) {
LCD.drawString("Can't make a file", 0, 0);
Button.ESCAPE.waitForPress();
System.exit(1);
}
DataOutputStream dataStream = new DataOutputStream(fileStream);
Motor.A.rotate(90);
Motor.A.resetTachoCount();
Motor.A.backward();
do {
if (-(Motor.A.getTachoCount()) % scanDensity == 0 ) {
int distance = ultrasonicSensor.getDistance();
try {
dataStream.writeInt(distance);
fileStream.flush();
} catch (IOException e) {
LCD.drawString("Can't write to the file", 0, 1);
Button.ESCAPE.waitForPress();
System.exit(1);
}
}
} while (-(Motor.A.getTachoCount()) < totalRotation);
Motor.A.stop();
try {
fileStream.close();
} catch (IOException e) {
LCD.drawString("Can't save the file", 0, 1);
Button.ESCAPE.waitForPress();
System.exit(1);
}
Motor.A.rotate(270);
}
}
包数据记录器
导入java.io。;
导入lejos.nxt
公共类距离{
int totalRotation=360;
int-scanDensity=5;
超声波传感器超声波传感器=新的超声波传感器(传感器端口S3);
文件距离File=新文件(“distance.txt”);
FileOutputStream fileStream=null;
公共静态void main(字符串[]args){
@抑制警告(“未使用”)
USdistance usD=新USdistance();
}
公共距离{
电机加速度(2000年);
电机A.设定转速(50);
试一试{
fileStream=新的FileOutputStream(distanceFile);
}捕获(例外e){
LCD.drawString(“无法生成文件”,0,0);
Button.ESCAPE.waitForPress();
系统出口(1);
}
DataOutputStream数据流=新的DataOutputStream(fileStream);
电机A.旋转(90);
电机A.重置转速计();
电机A.向后();
做{
如果(-(电机A.getTachoCount())%scanDensity==0){
int distance=超声波传感器。getDistance();
试一试{
dataStream.writeInt(距离);
flush();
}捕获(IOE异常){
LCD.drawString(“无法写入文件”,0,1);
Button.ESCAPE.waitForPress();
系统出口(1);
}
}
}而(-(电机A.getTachoCount())
提前感谢Rob我通过使用解决了我的问题:
int-distance=ultrasonicSensor.getDistance()代码>
BufferedOutputStream buffStream=new BufferedOutputStream(new FileOutputStream(new File(distance.txt))代码>
buffStream.write(distance.getBytes())代码>
通过使用此文本文件,我的文本文件如下所示:41 41 0 0 0 0 0 40 40 40 40 39 39 39 40 40 40 40 40 40 40 40㔵㈀㔵㈀㔵㈀㔵㈀㔵㐀5.㐴㐀3.㌴㐀4.㐴㌀6.㌳㌀3.㈵㔀2.㈵㔀2.㈵㔀2.㈵㔀2.㌵㔀3.㌵㈀㔵㈀㔵㈀㔵㈀
无论如何,感谢您的回复@SimpleCoder您能给出代码生成的.txt文件的一个片段吗?它生成以下内容:㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㐀5.㐴㐀3.㌴㐀4.㐴㌀6.㌳㌀3.㈳㌀2.㈳㌀2.㈳㌀2.㘳㌀6.㘳㌀6.ㄳ㌀1.ㄳ㌀1.ㄳ㌀2.㈳㌀4.㐳㌀4.㔶㘀7.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㈶㘀2.㔲5.㔲5.㔲5.㔲5.㈲㈀3.㔲5.㔲5.㔲5.㌲㈀6.㠲㈀㔵㈀㔵㈀2.㈲㈀3.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㔲5.㐵㔀3.㈵㔀2.㈵㔀2.㈵㔀2.㈵㔀2.㌵㔀3.㌵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵㈀㔵顺便问一下,在创建文件
或文件输出流
时,有没有办法指定编码。如果不插入传感器,则ultrasonicSensor.getDistance()将获得值255。然后文本文件只包含大量的“ÿ”,这个字符的十进制代码是255。听起来肯定是编码问题