Wie lese ich einen text aus einem seriellen port?
Ich versuche, das Lesen von Daten aus einer Windows-serial-port über Java. Ich habe die javax.comm-libraries und bin in der Lage zu bekommen, einige Daten, aber nicht die korrekten Daten. Wenn ich lese den port in ein byte-array und wandelt es in text, den ich erhalten eine Reihe von Zeichen, aber ohne richtigen text-string. Ich habe versucht, geben Sie die byte-array als "UTF-8" und "US-ASCII". Weiß jemand, wie man den eigentlichen text, der aus diesem?
Hier ist mein code:
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
System.out.println("Reading from " + portId.getName() + ": ");
System.out.println("Read " + numBytes + " bytes");
}
System.out.println(new String(readBuffer));
System.out.println(new String(readBuffer, "UTF-8"));
System.out.println(new String(readBuffer, "US-ASCII"));
die Ausgabe der ersten drei Zeilen wird nicht lassen Sie mich kopieren und einfügen (ich nehme an, weil Sie keine normalen Zeichen). Hier ist die Ausgabe der Hex:
78786000e67e9e60061e8606781e66e0869e98e086f89898861878809e1e9880
Lese ich von einem Hollux GPS-Gerät, das keine Ausgabe in string-format. Ich weiß dies sicher, weil ich habe es mit C#.
Den Einstellungen, die ich benutze für die Kommunikation, die ich kenne, sind direkt von der Arbeit in der C# - app sind:
Baud-Rate: 9600
Databits: 8
Stop-bit: 1
Parität: keine
- Seigel - ich bemerkte Sie retagging zu bereinigen, die
serial
undport
- tags. Ich denke, dass die favorisierte tag ist eigentlichserial-port
. Vielen Dank für die Aufräumarbeiten!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht sagen, von deinem code, aber es sieht aus wie Sie verwenden
java.io.InputStream
um das Objekt Lesen. Sie sollten entwederjava.io.BufferedReader
oderjava.io.InputSreamReader
.Gibt es viele Möglichkeiten, dies zu tun, aber das ist, was wir verwenden:
Ist es wahrscheinlich, dass das angeschlossene Gerät nicht verwenden, ein text-Protokoll. Viele Geräte verwenden eine binäre message-format kann der text eingebettet ist, sondern stellt andere Informationen mit kompakter codes.
Bitte Bearbeiten Sie die Frage und mehr Informationen liefern, wie das Gerät, mit dem Sie kommunizieren über die serielle Schnittstelle und die Ausgabe, die erhalten Sie aus dem code, die Sie laufen haben. Ein weiteres hilfreiches Ausgabe hinzuzufügen wäre etwas, druckt eine hexadezimale Darstellung der Daten, die Sie gelesen haben. Eine quick-and-dirty-Methode ist das folgende:
Habe ich noch nicht gearbeitet, mit Holux GPS, aber ich habe geschrieben eine Garmin-Schnittstelle mit javax.comm. In diesem Fall wird die Einheit verwendet einen proprietären (Binär) Garmin-Protokoll standardmäßig, aber die (text-basierend) NMEA-0183-Protokoll auf dem Gerät aktiviert sein. Ist es möglich, dass Sie erhalten eine proprietäre Holux-message-format und benötigen den Befehl auf das GPS-Gerät zu wechseln Protokolle?
bitte mich zu der Zeichenkette aus binären