昨天我發佈了一個關於輸入流閱讀問題的問題,並且我得到了幫助。需要再次幫助從輸入流中讀取數據
我發現自己處於類似的情況,但這次我知道我做的是正確的事情,但它不適合我。
我正在閱讀輸入流,但我得到不同的價值。不管我如何改變我發送的數據,我都會得到與該值相同的字符串(「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