W
wildbret
Gast
Hallo,
ich war mitr nicht sicher, ob ich meine Frage ins Anfängerforum,Netzwerk oder sonstiges schreiben soll, aber mit Vernetzung hat es schon was zu tun.
Ich habe ein Problem mit der Art und Wiese, wie Java Daten über die serielle Schnittstelle überträgt und hoffe dass mir jemand helfen kann.
Zur Info: ich verwende JDK1.6 und verwende zur Herstellung der seriellen Verbindung das Package javax.comm.
Ich habe ein kleines Java-Programm geschrieben, dass eine serielle Verbindung aufbaut und in der Lage ist Daten zu senden und zu empfangen. Am anderen Ende des Kabels befindet sich ein Microcontroller, auf dem eine C++-Task läuft, die auf die gesendeten Daten reagieren soll.
Nun zum Problem: Ich möchte ein hexadezimales Kommando der Form 020122a303 senden (02=Start, dann Länge, Command,Data,03=Stop), da der Microcontroler nur Hexadezimal versteht.
Nun habe ich herausgefunden, dass Java jedes einzelne Zeichen in Unicode überträgt.
Sende ich 02 kommt am Controller hex30 für die 0 und hex32 für die 2 an und es wird logischerweise nicht als Startbit erkannt.
Ich möchte, dass Java meine Befehle direkt hexadezimal überträgt und nicht jedes einzelne Zeichen als seinen hexadezimal ASCII-Wert.
Ich habe viel versucht mit Umwandlungen aller Art, aber letztendlich läuft alles darauf hinaus, dass Java egal welchen Datentyp ich benutze die Zeichen in Unicode (ASCII)-Kodierung überträgt und der Mikrocontroller damit nichts anfangen kann.
Das einzige, was mir noch einfällt ist eine schmutzige Lösung, Beispiel:
Will ich z.B. hexadezimal "4E" senden, lasse ich Java ein großes "N" schicken. Denn das "N" ist laut ASCII-Tabelle hex 4E. Das habe ich auch schon getestet, indem ich dem Controller gesagt habe, er soll beim Empfang von hex 4E eine LED auf dem Board anschalten.
Davon abgesehn, dass es umständlich ist, sehe ich Probleme mit den Sondezeichen. Will ich z.B. Hex "02" übertragen wüsste ich nicht wie man das zugehörige ASCII Sonderzeichen eingibt.
Ich hoffe sehr, dass mir jemand helfen kann und fragt bitte nach wenn ich mich unklar ausgedrückt habe.
Danke im Vorraus
MfG
ein verzweifelter Java-Anfänger
ich war mitr nicht sicher, ob ich meine Frage ins Anfängerforum,Netzwerk oder sonstiges schreiben soll, aber mit Vernetzung hat es schon was zu tun.
Ich habe ein Problem mit der Art und Wiese, wie Java Daten über die serielle Schnittstelle überträgt und hoffe dass mir jemand helfen kann.
Zur Info: ich verwende JDK1.6 und verwende zur Herstellung der seriellen Verbindung das Package javax.comm.
Ich habe ein kleines Java-Programm geschrieben, dass eine serielle Verbindung aufbaut und in der Lage ist Daten zu senden und zu empfangen. Am anderen Ende des Kabels befindet sich ein Microcontroller, auf dem eine C++-Task läuft, die auf die gesendeten Daten reagieren soll.
Nun zum Problem: Ich möchte ein hexadezimales Kommando der Form 020122a303 senden (02=Start, dann Länge, Command,Data,03=Stop), da der Microcontroler nur Hexadezimal versteht.
Nun habe ich herausgefunden, dass Java jedes einzelne Zeichen in Unicode überträgt.
Sende ich 02 kommt am Controller hex30 für die 0 und hex32 für die 2 an und es wird logischerweise nicht als Startbit erkannt.
Ich möchte, dass Java meine Befehle direkt hexadezimal überträgt und nicht jedes einzelne Zeichen als seinen hexadezimal ASCII-Wert.
Ich habe viel versucht mit Umwandlungen aller Art, aber letztendlich läuft alles darauf hinaus, dass Java egal welchen Datentyp ich benutze die Zeichen in Unicode (ASCII)-Kodierung überträgt und der Mikrocontroller damit nichts anfangen kann.
Das einzige, was mir noch einfällt ist eine schmutzige Lösung, Beispiel:
Will ich z.B. hexadezimal "4E" senden, lasse ich Java ein großes "N" schicken. Denn das "N" ist laut ASCII-Tabelle hex 4E. Das habe ich auch schon getestet, indem ich dem Controller gesagt habe, er soll beim Empfang von hex 4E eine LED auf dem Board anschalten.
Davon abgesehn, dass es umständlich ist, sehe ich Probleme mit den Sondezeichen. Will ich z.B. Hex "02" übertragen wüsste ich nicht wie man das zugehörige ASCII Sonderzeichen eingibt.
Ich hoffe sehr, dass mir jemand helfen kann und fragt bitte nach wenn ich mich unklar ausgedrückt habe.
Danke im Vorraus
MfG
ein verzweifelter Java-Anfänger