lejos文件写入NXT

时间:2012-09-09 16:05:54

标签: java file-io lejos-nxj

我是java和lejos的新手,所以如果我提出相当愚蠢的问题,请不要怪我。

我试图让lego超声波传感器通过在电机上旋转来扫描我的nxt周围的360度区域。每隔5度,它会保存到.txt文件的距离。

我的问题是,稍后当我使用nxjbrowse.bat上传文件后从我的电脑上读取文件时,它只包含与应该保存在那里的数字相关联的ASCII字符(0 - 255)。

我的NXT代码:

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); } }

提前感谢Rob

1 个答案:

答案 0 :(得分:0)

我用以下方法解决了我的问题:

int distance = ultrasonicSensor.getDistance();
BufferedOutputStream buffStream = new BufferedOutputStream(new FileOutputStream(new File(distances.txt)));
buffStream.write(distance.getBytes());

通过使用这个我的文本文件看起来像这样:41 41 0 0 0 0 0 0 40 40 40 40 40 39 39 39 39 39 39 40 40 40 40而不是㔵㈀㔵㈀㈀㔵㈀㔵㐀5㐴㐀3㌴㐀4㐴㌀6㌳㌀3㈵㔀2㈵㔀2㈵㔀2㈵㔀2㌵㔀3㌵㈀㔵㈀㔵㈀㔵㈀

无论如何,谢谢你的回复@SimpleCoder