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 :)
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
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
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.
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.