昨天我发布了一个关于输入流阅读问题的问题,并且我得到了帮助。需要再次帮助从输入流中读取数据
我发现自己处于类似的情况,但这次我知道我做的是正确的事情,但它不适合我。
我正在阅读输入流,但我得到不同的价值。不管我如何改变我发送的数据,我都会得到与该值相同的字符串(“to叉车-42”)。起初,我用“toForklift-”发送的值加上前缀,但我已将该字符串更改为不同的字符串,但是我在括号中得到相同的字符串。我甚至将数字42更改为不同的数字,但是当我运行程序时,我在控制台中得到相同的字符串。以下是发送的内容:如
发送和接收的两个类。
正在使用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个小时,但找不到原因。我不明白,无论我发送什么,我都会收到“叉车-42”。
起初,我试图发送42与writeInt()方法,但随后在读取器类身边,我使用的readInt(),但我得到出头,如:
745687894
459877455
456987456
所以我改变的字符串找出原因,然后看,无论我发送什么,我都会得到那个字符串。就好像该字符串在输入流中是固定的,并且不发送任何内容。我不知道发生了什么。
需要帮助
目前,我不知道你的应用程序将从哪里得到字符串“toForklift-”。并且你定义的int变量(int value = 42;)根本不被使用。您发送的唯一字符串是*“ggggggggg”+ 455 +“\ n”*,我强烈希望能够收到。 – f1sh 2010-07-29 14:32:20
我也是,但我没有收到该字符串。现在很奇怪。我故意将42改为455,看它是否会起作用,但事实并非如此。感谢您的回复。 – 2010-07-29 14:38:08
该字符串,特别是“叉车”这个词,不能出现在任何地方......搜索您的整个项目。NXT框架(我从未使用过)将其写入流中,或者您的应用在代码中的某处执行。 – f1sh 2010-07-29 14:48:16