Anzeige:
Ergebnis 1 bis 11 von 11

Thema: serielle RS232 Schnittstelle

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.09.2005
    Beiträge
    8

    serielle RS232 Schnittstelle

    Hallo,

    ich muss mit JAVA zum Datenaustausch auf die serielle Schnittstelle vom PC zugreifen. Dies sollte sowohl unter Windows als auch unter Linux funktionieren.
    Leider habe ich keine Ahnung, wie ich da anfangen soll, gibt es jemanden, der ein Tutorial oder ähnliches kennt, darf auch englisch sein. Ich habe bisher nur was für andere Programmiersprachen gefunden.

    Gruß
    WiWil

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Nach was hast du denn gesucht?
    Hilft das vielleicht weiter?

    mfg
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  3. #3
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Das wird möglicherweise etwas umständlich, denn für windows und Linux sind zwei verschiedene Möglichkeiten vorhanden. Aus den FAQ von http://java.sun.com/products/javacom...aqs/index.html
    Q: Is there a linux version of the Java communications API?

    A: We do not provide a linux implementation. But Kevin Hester has written Java communications API drivers for linux and uses our CommPort driver loading scheme to load his own gnu.io.RXTXCommDriver class. He gave us permission to disclose his web page:

    http://www.geeksville.com/~kevinh/linuxcomm.html
    http://wass.homelinux.net/howtos/Comm_How-To.shtml
    Für Windows ist ein Beispielprogramm unter
    http://www.fh-niederrhein.de/~gkorsc...rs/wn8/wn8.htm
    zu finden
    Das Ziel ist das Ziel.

  4. #4
    Registrierter Benutzer
    Registriert seit
    01.09.2005
    Beiträge
    8

    Danke

    Vielen Dank für die Quellen, so langsam klappt es

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von mwanaheri
    Ich gebe zu das grenz ziemlich an Flamebait, aber ich finde diese Aussage in der FAQ zeigt sehr schön, daß Sun nicht das geringste Interesse daran hat, Java unter Linux äquivalent zu unterstützen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Zitat Zitat von anda_skoa
    Ich gebe zu das grenz ziemlich an Flamebait, aber ich finde diese Aussage in der FAQ zeigt sehr schön, daß Sun nicht das geringste Interesse daran hat, Java unter Linux äquivalent zu unterstützen.

    Ciao,
    _
    Stimmt schon, es wäre erheblich schöner, wenn das einheitlich ginge. So lohnt es sich, alle Zugriffe über eine Broker-Klasse zu handhaben, die man je nach OS unterschiedlich gestalten muss. Also eineinhalbfache Arbeit.
    Das Ziel ist das Ziel.

  7. #7
    Cyrus
    Gast
    Ich habe auch so meine Probleme mit der Kommunikation über diese serielle Schnittstelle, vielleicht kann mir jemand helfen ...

    Folgende Ausgangssituation: An den Rechner ist am Com-Port eine Art Roboter angeschlossen. Dieser kann durch Eingabe von Befehlen aus einem Stapel CDs die oberste nehmen und sie irgendwo anders wieder ablegen (z.B. im CD-Laufwerk).

    Die Eingabe der Befehle habe ich über das Hyperterminal gestestet, dort läuft es ohne Probleme.
    Nun wollte ich ein Java-Programm schreiben, welches mir ermöglicht automatisch mehrere Befehle hintereinander abzuarbeiten.

    Das Programm sieht derzeit so aus, dass ein String (also der Befehl) zu dem Gerät geschickt wird und anschließend eine Rückmeldung des Geräts - auch über die Schnittstelle - erfolgt. Das funktioniert auch alles soweit, jedoch nur beim erstmaligen Programmaufruf. Wenn das Programm ein zweites Mal aufgerufen wird, gibt es eine unverständliche Fehlermeldung vom Gerät - ich muss es erst per Hand reseten.

    Hat jemand von euch Ideen? Benötigt ihr den Quellcode?

    Habe gerade eben folgendes ausgetestet: Erstmaliger Programmaufruf -> funktioniert, wie bekannt. Dann habe ich aber mal Hyperterminal aufgemacht und dort einen Befehl eingegeben -> funktionierte auch nicht. D.h. irgendwie muss da noch was "falsches im roboter" sein, was ich bei meinem Aufruf nicht mit entferne. Der Fehlercode den mir der Roboter schickt, steht für "Bad or unrecognized command".

    Eventuell hat es ja mit folgendem zu tun - nur ne Vermutung: Nach jedem Befehl den ich schicke braucht das Gerät einen Carriage Return (1 Zeichen). Ich habe das immer wie folgt geregelt: "Befehl\n" ...
    Geändert von Cyrus (30-09-2005 um 20:51 Uhr) Grund: Nachtrag

  8. #8
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Das \n macht zwar bestimmt eine Textausgabe für den Leser einfacher, für den Robo dürfte das aber wohl nichts bekanntes sein oder schlimmer, etwas anderes. Du solltest wirklich nur benötigte Sachen schicken.
    Das Ziel ist das Ziel.

  9. #9
    Cyrus
    Gast
    Ja schon klar. Der Roboter verlangt nach dem Befehl aber immer ein Carriage Return, sonst wird der Befehl nicht verarbeitet.

    Laut Manual is es ein 0x0D oder sowas, hab es gerade nicht hier. Wie mache ich das in Java?

  10. #10
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    wie oben schon angemerkt, habe ich vom Arbeiten mit rs232 keine Ahnung, allerdings weiß ich ja, dass es da spezielle Klassen gibt. Wie schickst du denn die Sachen an die Schnittstelle? wenn du es mit println tust, sollte der carriage-return schon dabei sein.
    Das Ziel ist das Ziel.

  11. #11
    Cyrus
    Gast
    Ja, da steckte auch schon der Fehler: print("Command\r") <- so gehts ... - danke für eure Hilfe.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •