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 に答える