Steuern einer C++ Anwendung über Knopf an seriellem Port (z.B. RxD). Wie?
-
Hallo.
Ich möchte bei einer C++ Anwendung einen Button durch einen Knopf an einem Seriellport ersetzten. Dieser soll meinetwegen über einen Thread andauernd abgefragt werden und bei Knopfdruck sollen die Funktionen, die vorher dur den Button ausgelöst wurden, gestartet werden. Wie sollte ich diesen Knopf Hardwaremäßig an den Seriellport anschließen und wie lese ich den zustand der Pins bei C++ aus?
Danke für alle antworten!
MfG, Alex.
-
Unter welchem Betriebssystem arbeitest du? Und falls eingesetzt: mit welcher Klassenbibliothek?
-
da kannste z.b. eine funktion des betriebssystems aufrufen, die den status der flusskontrolleitungen ausgibt. an eine solche schliesst du deinen taster an...
unter windoofs wären das 'GetCommModemStatus' und eventuell noch 'WaitCommEvent'
-
Arbeite unter WinXP
Wenn ich den z.B. den RxD Pin auslese. Wo kriege ich die Spannung her, die durch druck auf den Taster an RxD anliegen soll? Kann ich da z.B an einem anderen AusgangsPin eine Spannung setzten und die dann per Taster an RxD leiten oder muß ich diese Spannung extern erzeugen.
Welche Spannungen brauche ich für LOW/HIGH Pegel?MfG, der Alex
-
Und wenn ich nun meinetwegen ein LOW/HIGH Signal an RxD anlegen kann. Wie genau lese ich es in C++ aus?
Welche include Datei brauch ich, was muss ich initialisieren?
Kann ich mein COM Port als File initialiesiern, wie wenn ich nen String über RS 232 einlese und dann einfach über GETRxD oder so den Status abfragen oder muß ich da anders vorgehen?
Kann mir vielleicht einer ein beispielprogramm anbieten?
Wär sehr hilfreich.
-
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Für serielle Kommunikation siehe:
http://www.codeproject.com/system/serial.asp
-
@Jochen, verdienst Du was, wenn Du einen User auf diese HP schickst?
Es geht auch so:
/******************************************* ** Nur Demo der Funktionen ** ** Button an RTS und CTS anschließen: ** An RTS wird Spannung gelegt ("ON"), CTS liest ** noch "LOW", solange der Button nicht gedrückt ** wird. ** ** RTS (Ausgang): Pin7 ist +10V (== AUS) ** Pin7 ist -10V (== EIN) ** CTS (Eingang): Pin8 wird abgefragt *******************************************/ #include <windows.h> int main (void) { HANDLE hPort; DWORD CtsStatus; // COM1 öffnen: hPort = CreateFile (TEXT("COM1"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); EscapeCommFunction (hPort, SETRTS); // RTS setzen (= -10V = ON) //EscapeCommFunction (hPort, CLRRTS); // rücksetzen geht so // Button abfragen: GetCommModemStatus (hPort, &CtsStatus); if ((CtsStatus & MS_CTS_ON)) { // irgendwas machen wenn Button gedrückt wurde ... } // ... CloseHandle (hPort); return 0; }Die paar Zeilen in die eigene Funktion einbauen dürfte wohl nicht so schwierig sein wie ein ganzes Klassengebirge reinziehen.
Blackbird
-
Blackbird schrieb:
@Jochen, verdienst Du was, wenn Du einen User auf diese HP schickst?
Schön wäre es...
-
-
OT: Es gibt nur ein Unterschied: Die LIB stammt nicht von mir.
Auch würde das neulingen nichts helfen, da sie nicht zuerst meine Signatur lesen, bevor sie was zur seriellen Kommunikation fragen...
