-
        

Ergebnis 1 bis 8 von 8

Thema: Ein einfacher Taster an serieller Schnittstelle / JAVA

  1. #1

    Ein einfacher Taster an serieller Schnittstelle / JAVA

    Anzeige

    Hallo,

    uns beschäftigt momentan eine kleine Hardware / Programmierfrage in unserem Projekt.
    Es geht darum, einen einfachen Tastschalter an der seriellen Schnittstelle zum Auslösen einer Aktion in Java zu benutzen. Nun ist die Frage wie man
    a: Hardwaremäßig ein Signal eines Schalters (d.h. schalter gedrückt) an die Schnittstelle sendet und
    b: dieses Signal mit Java empfängt und darauf reagiert

    Könnt ihr uns einen Tipp geben?
    Martin

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Von Java aus ist nicht vorgesehen, auf COM zu greifen.

    Für Windows gibt es eine API dafür: javax.comm
    Am einfachsten geht das über Steuerleitung CTS (oder ist's RTS?)
    Von Linux aus kann man lesen und schreiben wie auf ne normale Datei /dev/ttySx irgendwo. Wie man die Steuerleitungen bedient? Keine Ahnung.
    Oder man muss ein richtiges Zeichen senden. Aber das ist mit Kanonen auf Spatzen geschossen, wenns nur ein Tastendruch sein soll.
    Die CTS kannst du direkt verwenden, evtl entprellen. Pullup nach RTS und RTS am Host setzen, und Taster zieht über Pulldown nach GND. Müsste gehen.
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Und nochmal für Leute, die nicht wissen, was CTS und RTS ist?

    Also so in der Art: "Kontakt A des Tasters an Pin X der seriellen Schnittstelle" *gg*
    Unwissenheit ist ein Segen

  4. #4
    Der Idealfall wäre für mich einen Pegel der am einen Pin liegt mit dem Taster bei Druck auf einen anderen Pin durchzuleiten.
    Ich habe zwar in der letzten Zeit wirklich viel darüber gelesen, aber ich blick leider immer noch nicht durch. Wäre deswegen klasse wenn ihr in einfachen Worten erklärt.
    Die javax.comm API hat Events, die auf Ring Indicator und anderes reagieren, nur wie werden diese ausgelöst.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Es gibt zB

    SerialPort.addEventListener(SerialPortEventListene r)

    Du implemplementierst einen SerialPortEventListener und dann add EventListener(). Wie mit MouseEvents und so auch. (De)Aktivieren mit den .notifyOnXXX (boolean).

    Ne API-Doc zu dem Zeug gibt's auch irgendwo. Musst eben mal suchen.
    Disclaimer: none. Sue me.

  6. #6
    Was erwartet die serielle Schnittstelle bzw. Java für ein Signal am Pin? Genügt ein Pegel (z.B. 5V) oder muss es evtl. ein Wort (z.B. 10ms 5V, 10ms 0V, 10ms 5V usw.) sein?

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Für die Handshake-Leitungen sollte es genügen, den Pegel zu ändern. Für die Spez der RS232 musst du mal im Netz schauen. 5V /-5V sollten aber ok sein. Falls du -5V brauchst, kannst du einen Ausgang entsprechend setzen und das Potential dann verwenden, falls das von der Schaltung her geht und der Port noch frei ist.

    Wenn ichs recht sehe, dann ist RS232:

    I=In, O=Out
    1: I DCD
    2: I RxD
    3: O TxD
    4: O DTR
    5: GND
    6: I DSR
    7: O RTS
    8: I CTS
    9: I RI

    Dann kannst du folgendes machen: Den CTS-Event implementieren und aktivieren (notify-Gedöhns). Dann klemmst du RTS und CTS zusammen. Evtl. musst du Flusssteuerung ausstellen, damt du selbst die Kontrolle darüber hast. Wenn du dann RTS softwaremässig runterziehst, solltest du nen CTS-Event bekommen. Das wär schon mal der Anfang und bist damit praktisch fertig.
    Disclaimer: none. Sue me.

  8. #8
    Danke für eure bisherigen Antworten. Ich werde jetzt mal den Lötkolben zur Hand nehmen und testen und melde mich mit dem (Miss-)Erfolg.
    Für Interessierte: Antworten aus anderen Quellen.

    Antwort 1
    vielleicht ist die parallele Schnittstelle besser geeignet,
    dort gibt es evtl. Systemcalls, die den Wert eines Portbits
    zurückliefern (polling).
    "Alte" Systeme beobachten evtl. die "ring-indicator"-Leitung
    eines Modems, welches an der seriellen Schnittstelle angeschlossen werden kann; diese Leitung ist aber bei neueren Systemen oft
    nicht mehr vorhanden. ("Wenn das Telefon klingelt")

    Antwort 2
    wie wäre es beispielsweise mit dem Button eines Joysticks? Man könnte an den Gameport einen Taster anschließen. Der Gameport kann, soweit ich weiß, ganz einfach abgefragt werden. Wenn Sie den Gameport benutzen wollen muß eine Art "Dummy-Joystick" gebaut werden damit Windows das angeschlossene "Gerät" am Gameport als Joystick wahrnimmt.
    Eine andere Möglichkeit wäre der Parallelport. Dort stehen mehrere Datenleitungen zur Verfügung die in einem Byte parallel ausgelesen werden können.

    Antwort 3
    das ist kein Problem. Sie verwenden die Javacomm Bibliothek, darin
    dann das Serial Port API, siehe

    http://java.sun.com/products/javacom...erialPort.html

    Sie muessen den Schalter (am besten ein Umschalter) an eine der
    Handshake Leitungen anschliessen (RTS, CTS) und beachten, dass der Pegel
    bei Betaetigung des Tasters von -12V auf +12V (oder umgekehrt) wechselt.
    Wenn man es geschickt macht, dann verwendet man die Ausgangssignale der
    seriellen Schnittstelle, um die beiden Spannungswerte zu erzeugen.

    Antwort 4
    Ihr Problem lässt sich von der Softwareseite aus mit der Java commAPI lösen.
    Kurze Beschreibung Siehe Attachment. Im Netz finden Sie Beispielprogramme,
    etwa der Porttest testEnumeration.

    Hardwaremässig verwenden Sie die serielle COM-Schnittstelle des Rechners.
    Sie brauchen einen RS-232 Stecker, an den Sie einen Schalter löten.
    Pinbelegung der RS-232 Schnittstelle finden Sie im Netz. Bevor Sie das Teil an
    einen (FH-) Rechner anschliessen, lassen Sie bitte Herrn K. einen Blick darauf werfen -
    falscher Anschluß zerstört die Schnittstelle.

Berechtigungen

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