Hallo Leute,
ich habe ein Bluetoothmodul (BlueMod+P25/G2 von Stollmann) und möchte
das über ein Java(ME) Midlet, seriell gekoppelt mit einem Funkgerät, mit
den dafür bereitgestellten AT-Befehlen ansprechen. Allerdings scheine
ich die Übergabe der AT-Befehle oder ein paar Vorbedingungen nicht
richtig machen.
Habt ihr Erfahrung, ob es möglich ist über ein Java Programm AT-Befehle
an das Bluetoothmodul zu übergeben?
1
private void sendeAT_i()
2
{
3
try
4
{
5
os = cc.openOutputStream();
6
7
os.write(65); // A
8
os.write(84); // T
9
os.write(32); // Leerzeichen
10
os.write(105); // i
11
os.write(13); // Enter
12
os.write(10); // Linefeed
13
14
os.flush();
15
}
16
catch(IOException io)
17
{
18
textBox.setString("Fehler beim Senden der Daten: " + io.getMessage());
Hey,
irgendwie wusste ich, dass du der Erste bist, der antwortet :)
Ja ich weiß, richtig gut ist das Programm noch nicht, aber es läuft
erstmal so wie ich es will (fast). Mir ist es erstmal wichtig, dass das
Bluetoothmodul angesprochen wird und reagiert. Nur leider reagiert es
nicht.
Naja das ist eben der unterschied zwischen "Funktioniert" und
"Funktioniert (fast)".
Hast du den schon mal versucht das Modul mit hterm oder ähnlichem
anzusprechen?
Außerdem verschluckst du möglicherweise immer noch
Fehlermeldungen/Exceptions
Su Si schrieb:> os.write(65); // A> os.write(84); // T> os.write(32); // Leerzeichen> os.write(105); // i> os.write(13); // Enter> os.write(10); // Linefeed
Wieso jetzt hier als "Zahlen"? Das verwirrt doch nur, du hattest das
doch schon mal als String gesendet oder? Wenn das noch was werden soll
musst du auf jedenfall strukturierter vorgehen, wie und wo wird z.B.
sende aufgerufen etc... du blockierst dir da nämlich den aktuellen
Thread, das kann ins Auge gehen...
Ja, hatte das Bluetoothmodul schon mehrfach über hterm oder tera term
angesprochen und das funktioniert tadellos.
Ich weiß ja, was ich auf bestimmte AT-Befehel vom Bluetoothmodul für
Antworten bekomme. Nur diese bekomme ich über das Javaprogramm nicht,
von daher weiß ich auch nicht, ob die Kommunikation zwischen den beiden
überhaupt funktioniert.
Baudrate und sowas sind bei beiden gleich.
Wie gesagt, das Javaprogramm funktioniert zwischen Funkgerät und
PC/Terminal so wie es soll. So das ich eigentlich nirgends eine
Exception erwarten würde.
Ja ich hatte erst die Befehle als Strings übergeben. Aber das
Bluetoothmodul erwartet ASCII Zeichen und antwortet auch in diesen (habe
nachgelesen). Deswegen übergebe ich jetzt Zahlen/ASCII.
Ich will den InputStream noch in eine Methode auslagern. Welchen Thread
blockier ich mir denn?
Su Si schrieb:> Deswegen übergebe ich jetzt Zahlen/ASCII
das ist im endeffekt aber alles dasselbe, so ist es nur maximal
unleserlich.
Versuch doch einfach mal die selbe Sequenz mit dem Programm zu senden
und nutze als Empfänger Teraterm dann sieht man doch was ankommt und was
sich unterscheidet.
Du meinst wenn ich "AT-Befehl\n\r".getBytes(); mache, werden die
letztendlich auch als ASCII Zeichen übergeben? Muss ich dann dem
Programm noch irgendwie sagen, dass er das umwandeln soll?
Läubi .. schrieb:> Versuch doch einfach mal die selbe Sequenz mit dem Programm zu senden> und nutze als Empfänger Teraterm dann sieht man doch was ankommt und was> sich unterscheidet
Versteh ich nicht. Bitte mal genauer erklären, wie und was?
Su Si schrieb:> Muss ich dann dem Programm noch irgendwie sagen,> dass er das umwandeln soll?
Mittels getBytes("US-ASCII"); gehst du auf Nummer sicher, ist aber nur
bei Sonderzeichen relevant.
Su Si schrieb:> Versteh ich nicht. Bitte mal genauer erklären, wie und was?
PC1 mit Java Programm-->Comport-->KABEL->Comport PC 2 mit hterm
Okay, dann werde ich in Zukunft die Methode nutzen. Da die Zahlen echt
umständlich sind.
Ganz ehrlich, ich verstehe deinen Aufbau immer noch nicht. Denn das
Javaprogramm läuft nur so richtig auf dem Funkgerät. In NetBeans der
Emulator kann das nicht richtig nachbilden, da es dort keine Funkgeräte
gibt.
Ich habe jetzt einen PC seriell mit einem anderen PC gekoppelt. Auf PC1
starte ich das Midlet (.jad).
Es kommt nur die Frage, ob eine serielle Verbindung eingegangen werden
soll, ich klicke auf ja und dann passiert nichts mehr.
Ich hab nur noch Fragezeichen im Kopf!
Hey Läubi,
mittlerweile funktioniert mein Input Stream. Allerdings verlässt er die
while-Schleife nicht mehr. Ich habe schon sämtliche Abbrechbedingungen
versucht. Vielleicht fällt dir/euch noch eine ein?
Su Si schrieb:> Allerdings verlässt er die> while-Schleife nicht mehr
Hab ich doch schon oben geschrieben, der Stream wird nie beendet, da ein
Serieller Port kein "EOF" oder dergleichen kennt.
Üblicherweise weiß man aber, dass z.B. nach einem Zeilenumbruch o.ä.
zumindest ein Datensatz vollständig da ist, kann diesen verarbeiten und
dann weiter vorgehen.
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.