3

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

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

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

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

提前谢谢罗

4

1 回答 1

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

于 2012-09-11T15:27:07.533 回答