RS232, welchen Pin kann ich miteinander verbinden, um ein Eingangssignal in meiner Java-Anwendung zu empfangen, die auf ttyUSB0 oder ttyS0 hört?

Ich versuche, einen sehr einfachen Knopf zu machen (einfacher Draht nur ROT / GELB). Wenn nun die Taste gedrückt wird (ROTE Berührung GELB), möchte ich ein Eingangssignal in meiner Java-Anwendung empfangen (diese Taste wurde gedrückt).

In welchen Ports von RS233 (DB9) sollte ich das ROTE/GELBE Kabel patchen? Damit jede Taste gedrückt wird, bekomme ich in meiner Anwendung Eingangssignale?

Danke

Ich verstehe nicht, vielleicht hast du ein paar falsch geschriebene Wörter, aber ich bin mir auch nicht sicher.
@kenny: s/LESEN/ROT
@Dean: Java-Quelle, ich habe kein Problem. Aber mein Problem liegt in der RS323, die mit DB9 verbunden ist, was 9 Pins ist. Welcher der 9 Pins soll mit ROT/GELB verbunden werden? Wenn R und Y es berühren, wird also ein Signal gesendet?
@Dean - "Haben Sie versucht zu googeln" ist ein schrecklicher Kommentar. Besonders für RS-232, wo die Anschlüsse nicht Teil einer Spezifikation sind.
@Dean, RTFM und Google It Please Antworten sind nicht akzeptabel. Das Ziel von Stack Exchange ist es, das Ergebnis zu sein, wenn jemand es googelt.

Antworten (3)

Im besten Fall wird das ein Kludge sein. RS-232 ist für die serielle Kommunikation, nicht für digitale Eingangsleitungen. Wenn Sie jedoch eine einzelne Eingangsleitung wünschen, die von der Software gelesen werden kann, könnte die Modemleitung, die dem Computer mitteilen soll, dass ein Anruf eingeht, funktionieren. Je nachdem, welchen Zugriff Ihre Software auf die serielle Schnittstelle hat, sollte sie diese Zeile lesen können. Es gibt auch Leitungen für die Ringerkennung und eine allgemeine Bereitschaftsleitung. Ich erinnere mich vage an die Namen einiger dieser Linien: DSR, DCD. Eine detaillierte RS-232-Referenz sollte dort leicht zu finden sein.

Nicht alle Low-Level-Treiber stellen der Software alle Leitungen zur Verfügung. Wenn Sie dies in Java wünschen, kann eine weitere Kompilierung hinzugefügt werden, da das Betriebssystem nicht nur den App-Zugriff auf diese Zeilen zulassen muss, sondern die JVM sie dann zur Java-App durchlassen muss.

Wenn Sie einen Tastendruck erkennen möchten, verwenden Sie eine Maus oder ein anderes Eingabegerät, das für diesen Zweck vorgesehen ist.

Hinzugefügt:

Wie gesagt, der Versuch, eine einzelne Spannungsänderung mit RS-232 zu erkennen, ist ein Klacks. Was ich versäumt habe zu erwähnen, ist eine einfache Möglichkeit, dies innerhalb der RS-232-Spezifikation zu tun, damit die normale Softwareschnittstelle das tut, was Sie wollen.

Der einfachste Weg ist, dass ein kleiner Mikrocontroller das Schließen der Taste erkennt und dann ein Zeichen an die serielle Schnittstelle ausgibt. Dies hat den zusätzlichen Vorteil, dass das Mikro eine Entprellung durchführen kann, worüber Sie nachdenken sollten. Wenn dies einmalig ist, besorgen Sie sich ein kleines Mikro mit einem UART. Andernfalls können Sie das kleinstmögliche Mikro verwenden, um das Zeichen in Firmare auszutakten. Das ist wirklich nicht schwer, besonders wenn Sie die Baudrate niedrig genug machen. Ich habe einmal 9600 Baud von einem PIC 16 gesendet, der von einem 160-kHz-Quarz läuft. Sie können dies leicht mit einem PIC 10F200 tun, der von seinem internen 4-MHz-Oszillator betrieben wird.

Ein Problem ist, dass das Mikro mit Logikpegeln läuft, während RS-232 erfordert, dass das Eingangssignal mindestens von -5 V bis +5 V schwingt, vorzugsweise etwas mehr. Der völlig richtige Weg ist, einen RS-232-Schnittstellenchip wie einen MAX232 oder ähnliches hinzuzufügen. Viele PC-COM-Ports arbeiten jedoch nur mit einem Eingangsspannungshub von 0 bis +5. In diesem Fall kann das Mikro direkt die Empfangsleitung des PCs ansteuern. Denken Sie daran, dass in dieser Konfiguration das Signal von dem, was normale Mikro-UARTs ausgeben, invertiert werden muss. Leitungsleerlauf muss niedrig sein, während der eingebaute UART Leitungsleerlauf hoch erzeugt.

"Wenn Sie einen Tastendruck spüren möchten" - Ja, genau das versuche ich zu tun. Kann ich diese RS-485 dann verwenden? zB: usconverters.com/…
@ 89899.3K, RS-485 ist ein fortschrittlicheres Kommunikationsprotokoll als 232, es wird nicht besser darin sein, den Kurzschluss von zwei Leitern zu lesen. Haben Sie darüber nachgedacht, so etwas wie einen Mikrocontroller zu verwenden, um den Switch zu überwachen und dann Informationen über USB/RS232/RS485/Ethernet/WLAN/SATA zu senden?
@Kortuk: Ja, ich habe dafür Crestron/Extron verwendet. Aber auf die verzichten wollen, die sie teuer sind + wieder andere erfordert beteiligt. Also erwarte ich, es mit RAW rs232 oder rs485 zu machen

Sie könnten die TX- und RX-Pins über die Schaltfläche verbinden und dann Ihre Software den Schaltflächenstatus "abfragen" lassen, indem Sie ein Zeichen aus der seriellen Schnittstelle senden und prüfen, ob dieses Zeichen über die serielle Schnittstelle an sie zurückgegeben wird.

In diesem Fall muss ich RS-485 nicht verwenden? zB: usconverters.com
@ 89899.3K, das meiste, was Sie fragen, ist Software. Um zu überprüfen, ob das Kabel angeschlossen ist, kann es in einem geplanten Intervall abgefragt werden. Die RS-485, ich habe keine Ahnung, warum Sie das ansprechen würden, wenn die Frage sie nicht erwähnt und die Antwort auch nicht. Der Fall, dass RS-232 ein Kommunikationsprotokoll und kein Eingangsüberwachungsprotokoll ist, ist ein anderer. hast du mal nach GPIO geschaut? Das steht für General Purpose Input/Output. Ich habe gesehen, wie Programmierer GPIO für einfache digitale Ein- und Ausgänge verwenden, was ein Schalter wäre.

Wenn Sie eine Seite über einen großen Widerstand (z. B. 47k oder 100k) mit RTS (Pin 4) und mit RX (Pin 3) und die andere Seite mit +9V verbinden, erhalten Sie wahrscheinlich ein "Break" -Signal, wenn Sie die Taste drücken gedrückt wird, was in der Software erkannt werden kann.

Leider gibt es keinen Pin am RS-232-Anschluss, der normalerweise eine gültige positive RS-232-Spannung hat. Sie könnten Software verwenden, um eine Unterbrechungsbedingung zu senden, und TX (Pin 2) für den zweiten Anschluss der Taste verwenden.

Sie meinen, ich sollte RS-485 verwenden und diese Kabel dort anschließen? zB: kaufen? usconverters.com
@89899.3K: Nein, ich sehe nicht, wie RS-485 helfen würde. Dann müssten Sie zwei Leitungen gleichzeitig schalten, was schwieriger wäre.