昨天我发布了一个关于输入流读取问题的问题,我得到了帮助。
我发现自己处于类似的情况,但这次我知道我在做正确的事情,但它对我不起作用。
我正在从输入流中读取,但我得到了不同的值。无论我如何更改发送的数据,我都会得到与值相同的字符串(“toForklift-42”)。起初我用“toForklift-”作为我发送的值的前缀,但我已经将该字符串更改为不同的字符串,但我在括号中得到相同的字符串。我什至将数字 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
所以我改用字符串来找出原因,你瞧,不管我发送什么,我都会得到那个字符串。就像那个字符串在输入流中是固定的,什么都没有发送。我不知道发生了什么。
需要帮忙