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
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.
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.
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.
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.
Kenny
Yum Yum yum
Yum Yum yum
DanBeale
Kortuk