어제 저는 inputstream reading과 관련된 문제에 대한 질문을 올렸고 도움을 받았습니다.다시 Inputstream에서 데이터를 읽는 데 도움이 필요합니다
나는 비슷한 상황에 처해 있지만 이번에는 내가 옳은 일을하고 있지만 아직 나를 위해 일하지 않는다는 것을 안다.
입력 스트림에서 읽는 중이지만 다른 값을 얻습니다. 아무리 내가 데이터를 변경하더라도 동일한 문자열 ("toForklift-42")을 값으로 보냅니다. 처음에는 "toForklift-"와 함께 보내는 값 앞에 접두사를 붙였습니다. 그러나 문자열을 다른 문자열로 변경했지만 대괄호에 같은 문자열이 나타납니다. i 숫자 42를 다른 숫자로 바 꾸었지만 프로그램을 실행할 때 콘솔에서 같은 문자열을 얻습니다. 다음은 무엇을 보내는가입니다 : as
송수신 클래스는 두 가지입니다.
leJOS NXJ NXTConnector를 사용하여 연결을 만들고 스트림을 엽니 다.
// sender class
class PanButton implements Runnable {
DataInputStream dis;
DataOutputStream dos;
TouchSensor touch = new TouchSensor(SensorPort.S4);
PanicButtonCrossing(DataInputStream is, DataOutputStream os) {
dos = os;
dis = is;
}
public void run() {
while (!touch.isPressed()) {}
// If you get a message: KILL EVERYTHING
Motor.A.stop();
Motor.B.stop();
Motor.C.stop();
try { // send 42
int value = 42;
dos.writeChars("ggggggggg" + 455 + "\n");
dos.flush();
Sound.systemSound(true, 3);
} catch (IOException ioe) {
LCD.drawString("Write Exception", 0, 0);
}
System.exit(1);
}
// Reader classs
public class InputReaderCrossing implements Runnable{
private DataInputStream dataIn;
private DataOutputStream dataOut;
public InputReaderCrossing(DataInputStream dataIn, DataOutputStream dataOut) {
this.dataIn = dataIn;
this.dataOut = dataOut;
this.sensor = sensor;
this.readLock = new Object();
}
public void run(){
while(true){
String dataFromCrossing1 = readLineFromCrossing();
System.out.println("CROSSING VALUE: " + dataFromCrossing1 + " :VALUEEEEE");
}
}
private String readLineFromCrossing() throws IOException{
StringBuffer sb = new StringBuffer();
synchronized(readLock){
while(true) {
char c = this.dataIn.readChar();
if (c == '\n') break;
sb.append(c);
}
return sb.toString();
}
}
}
귀하의 도움이 필요합니다. 나는 6 시간을 보냈지만 그 이유를 알 수 없다. 나는 내가 무엇을 보내든 상관없이 "toForklift-42"를 이해하지 못한다. 우선
는 난 내의 writeInt와 42() 메소드를 보내려고하지만, 그 리더 클래스 측 전 readInt을 (사용)하지만 같은 일도 얻을 :
745687894
459877455
456987456
그래서 난에 문자열로 변경 이유를 알아 내고 lo는 내가 무엇을 보내더라도 그 문자열을 얻습니다. 문자열이 입력 스트림에 고정되어있어 아무것도 보내지 않는 것과 같습니다. 나는 무슨 일이 일어나고 있는지 모른다.
도움이 필요
현재 응용 프로그램에서 String "toForklift-"을 얻을 수있는 단서가 없습니다. 그리고 정의한 int 변수 (int value = 42;)는 전혀 사용되지 않습니다. 보내시는 유일한 문자열은 * "ggggggggg"+ 455 + "\ n"*입니다. 그 문자열이 수신되기를 기대합니다. – f1sh
나도 그래도 나는 그 문자열을받지 못했다. 지금은 매우 이상합니다. 나는 의도적으로 42에서 455로 바꿨지 만 효과가 있는지는 알지 못했다. 답장을 보내 주셔서 감사합니다. –
그 문자열, 특히 "지게차"라는 단어는 아무데도 나타나지 않습니다 ... 전체 프로젝트를 검색하십시오.NXT Framework (결코 사용하지 않음)가 스트림에 씁니다. 그렇지 않으면 코드의 어느 시점에서 앱이 실행됩니다. – f1sh