Gelen verileri okumak ve okunan baytlardan bir dize oluşturmak için aşağıdaki kodu (Bluetooth Sohbet örnek uygulamasından) kullanıyorum. Bu dize <!MSG>
ulaşana kadar okumak istiyorum. Read() işleviyle bu koşul nasıl eklenir?Sorun: Bir dize (<!MSG>) okunana kadar Java-Read yuvası (Bluetooth) giriş akışı
Bütün dize bu <MSG><N>xxx<!N><V>yyy<!V><!MSG>
gibi görünüyor. Ancak read() işlevi bir kerede tüm dizeyi okumaz. Karakterleri görüntülediğimde, tüm karakterleri aynı satırda göremiyorum. Görünüşe gibi:
Gönderen: <MS
Gönderen: G><N>xx
Gönderen: x<V
.
.
.
Telefonumdaki karakterleri (HTC Desire) görüntüledim ve verileri hyperterminal pencerelerini kullanarak gönderiyorum.
Tüm karakterlerin tek bir satırda görüntülendiğinden nasıl emin olunur? Yeni String() yerine StringBuilder ve StringBuffer kullanmayı denedim ama sorun read() işlevi gönderilen tüm karakterleri okumaz. Giriş akışının uzunluğu (bayt) gönderilen dizenin gerçek uzunluğuna eşit değildir. Okunan bayttan dizinin oluşturulması iyi oluyor.
Bu konuyla ilgili herhangi bir öneri ve zaman için teşekkür ederiz. Ayrıca, eğer varsa, başka hatalar veya şeylerin altında daha iyi bir yol önermek için çekinmeyin.
alkış
Madhu
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
//Writer writer = new StringWriter();
byte[] buffer = new byte[1024];
int bytes;
//String end = "<!MSG>";
//byte compare = new Byte(Byte.parseByte(end));
// Keep listening to the InputStream while connected
while (true) {
try {
//boolean result = buffer.equals(compare);
//while(true) {
// Read from the InputStream
bytes = mmInStream.read(buffer);
//Reader reader = new BufferedReader(new InputStreamReader(mmInStream, "UTF-8"));
//int n;
//while ((bytes = reader.read(buffer)) != -1) {
//writer.write(buffer, 0, bytes);
//StringBuffer sb = new StringBuffer();
//sb = sb.append(buffer);
//String readMsg = writer.toString();
String readMsg = new String(buffer, 0, bytes);
//if (readMsg.endsWith(end))
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, readMsg)
.sendToTarget();
//}
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
mesaj boyutuna bağlı' Sonu ' 'o pozisyondan başladı - ucunu .length() - 1 '(kontrol etme> 0). – khachik
Merhaba Flavio, Yardım için çok teşekkür ederim. Sorunu önerilerinizle çözebildim ve iletinin tamamını tek bir satırda okuyabiliyordum ve daha sonra projemde daha fazla ayrıştırma ve daha fazla eylem için iletiyi kullanabiliyordum. Tekrar teşekkürler. Şerefe –