Hallo zusammen, ich möchte an einem PC ein Tastersignal auswerten. Wenn also der externe Taster gedrückt wird, möchte ich am PC ein Programm starten lassen. soweit ich weiß müsste das ganze einfach über den RS232 Port funktionieren, oder? Ich brauche nur etwas Hilfe die ganze google Sucherei einzugrenzen. ich könnte doch über RS232 TX durchgängig ein high Signal senden und wenn der Taster die Leitung zum RX schließt erkennen das am RX nun ein High Signal anliegt und das darüber weiter verwenden, oder? Auf dem PC Soll später Linux laufen, wenn das ganze aber im Windows einfacher ist kann ich auch damit starten. Gibt es dafür einfache fertige Software, oder kann man etwas beispielsweise in c++ schreiben? Bin dankbar für jeden Ansatz. Also zusammengefasst: Ich muss einen Taster irgendwie mit dem PC verbinden um das Programm zu starten wenn der Taster gedrückt wird. Das ganze sollte möglichst günstig Funktionieren. Bin für alles offen :)
:
Verschoben durch User
Hallo, Google "unter linux rs232 mit c++ ansprechen". Da kommt jede Menge, das dürfte Dir genügen. Die RS232 kommt aus der Mode. USB wäre da besser. FTDI ist einer der namhaften USB-Baustein-Hersteller. mfg klaus
:
Bearbeitet durch User
Ne Maus? Die hat Tasten = Taster. Gibt doch Programme mit denen man die Funktion der Maustasten ändern kann. Habe auch Hinweise gefunden, dass man 2 unabhängige Mäuse anschließen kann, falls eine Maus noch für den Mauszeiger benötigt wird. Wenn sich nichts fertiges findet und du eh programmieren willst, dann halt nen Maustreiber selber schreiben.
Klaus R. schrieb: > FTDI ist einer der > namhaften USB-Baustein-Hersteller. Oder microchips mcp2200... Geht aber auch klassisch mit max232 und serial2USB Wandler Alex schrieb: > Gibt es dafür einfache fertige Software, oder kann man etwas > beispielsweise in c++ schreiben? Python ist schon ziemlich fertig, so kannst du mehr als nur ein high oder low übertragen :)
1 | ports = list(serial.tools.list_ports.comports()) |
2 | for p in ports: |
3 | print p #listet dir die gefundenen devices auf... |
4 | |
5 | #CONFIGURE SERIAL COMMUNICATION |
6 | ser = serial.Serial() |
7 | ser.port = "/dev/ttyUSB0" # |
8 | ser.baudrate = 38400 |
9 | ser.bytesize = serial.EIGHTBITS #number of bits per bytes |
10 | ser.parity = serial.PARITY_NONE #set parity check: no parity |
11 | ser.stopbits = serial.STOPBITS_ONE #number of stop bits |
12 | ser.timeout = 1 #non-block read |
13 | ser.xonxoff = False #disable software flow control |
14 | ser.rtscts = False #disable hardware (RTS/CTS) flow control |
15 | ser.dsrdtr = False #disable hardware (DSR/DTR) flow control |
16 | ser.writeTimeout = 2 #timeout for write |
17 | |
18 | try: |
19 | ser.open() |
20 | except Exception, e: |
21 | print "error open serial port: " + str(e) |
22 | while True: |
23 | if ser.in_waiting: |
24 | UARTrec = ser.readline() |
25 | time.sleep(0.5) #0.5 sec pause |
Gruss Chrys
Ganz so einfach ist es mit dem Taster nicht, denn der serielle Port empfängt nur Daten, wenn er ein Startbut erkennt. Am RS232 Port (der mit den +/-12V Pegeln) heisst das. Der RxD Eingang des PC muss von -12V nach +12V wechseln. 12V bekommst du am einfachsten von einer Steuerleitung, dann musst du nicht ständig irgendwas senden.
Das Auswerten der Pins DTR, DCD, RI, RTS, CTS (je nachdem welcher da ein Eingang ist) reicht aus und ist unter Linux denkbar einfach. Beispiele findet man da zuhauf. Eines im Anhang. Ich weiß leider nicht mehr, woher ich das Beispiel habe. Es stammt aber aus dem Internet. Vermerke zum Autor/zur Quelle wurden NICHT entfernt! Es gab keine im Sourcecode. Wäre aber dankbar für eine Quellenangabe, falls die einer noch hat.
Die Statusleitungen von der RS232 sind besser geeignet. Z.B. Ring Indikator Es gibt aber auch USB-ICs dafür z.B von http://www.codemercs.com/de/
Alex schrieb: > ich möchte an einem PC ein Tastersignal auswerten. Wenn also der externe > Taster gedrückt wird, möchte ich am PC ein Programm starten lassen. Warum emulierst Du nicht einfach eine Tastertur? Als USB HID wäre das vielleicht die eleganteste Lösung. Billiger als eine alte Tastatur, oder eine neue von Ebay, auszuschlachten, wirst Du keine Tasterhardware bekommen.
Felix Adam schrieb: > Das Auswerten der Pins DTR, DCD, RI, RTS, CTS (je nachdem welcher da ein > Eingang ist) reicht aus Es gibt fünf Eingänge: RxD, CTS, DSR, RI und DCD. Alle fünf lassen sich problemlos als Tastereingänge (RxD allerdings zwingend mit "negativer Logik", sprich Pullup und Taster nach GND) benutzen. Nimmt man die drei verfügbaren Ausgänge TxD, RTS und DTR hinzu, kann man sogar bis zu 15 Tasten in einer Matrix abfragen. > und ist unter Linux denkbar einfach. Unter Windows ist es genauso einfach, wenn nicht sogar noch einfacher. Hängt von der verwendeten Sprache ab. In C ist der Aufwand etwa genauso groß wie bei Linux. In einer echten Hochsprache wie etwa C# schrumpft die Implementierung für die gezeigte Funktionalität ca. auf zehn Zeilen Code...
Da ich Windows aufgrund persönlicher Neigung immer öfters links liegen lasse, habe ich zur Einfachheit des Programmierens unter diesem OS nix geschrieben. Ist auch nur nebensächhlich, da der Fragestelle Linux in erster Linie erwähnt hat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.