006
28.11.2003, 18:26 Uhr
~Schnittstelle
Gast
|
So, um also einen Schalter auszuwerten, muss folgendes gemacht werden: die Verkabelung wie folgend:
RTS ----+ | o / Schalter o | CTS ----+ | 10K Widerstand | GND ----+
Pinbelegungen: RTS PIN 7 CTS PIN 8 Ground PIN 5 siehe auch: http://home.t-online.de/home/th-steinhauer/serielle.htm#Abschn1_2 In Quellcode muss folgendes gemacht werden: Ich habe eine MFC Anwendung gewählt. Folgende Variablen anlegen
HANDLE hCom; DWORD dwEvtMask; DCB sDcb;
//Comm initialisieren void CSerial1_2Dlg::OnInitialize() { memset(&sDcb,0,sizeof(sDcb)); sDcb.DCBlength = sizeof(sDcb); sDcb.BaudRate = 9600; // Baudrate sDcb.fDtrControl = DTR_CONTROL_ENABLE; // muss auf ENABLE stehen sDcb.ByteSize = 8; // 8 Datenbits sDcb.fRtsControl= RTS_CONTROL_ENABLE; // RTS flow control , muss auf ENABLE stehen das sind die minimalen Einstellungen der Structure DCB (siehe Hilfe). Wird weniger verwendet, funktioniert nichts !
"Device anlegen" mit: hCom = CreateFile( "COM1", GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Structure an Gerät weitergeben und laden SetCommState(hCom,&sDcb)
hier wird festgelegt, was beobachtet wird (EV_CTS) SetCommMask(hCom,EV_CTS)
jetzt wird Taster abgefragt. WaitComm wartet, bis Event eingetreten ist, erst dann wird der Quellcode weiter ausgeführt. also zum Beispiel eine Messagebox aufgerufen: WaitCommEvent(hCom,&dwEvtMask , NULL); { MessageBox("Schalter wurde betätigt !","Meldung",MB_OK); //dein Quellcode }
Device wieder schließen mit CloseHandle(hCom);
Alles Funktionen sind in der MicrosoftVisualC++ Hilfe zu finden. Außerdem ist sehr empfehlenswert: www.sbox.tugraz.at/home/x/xyz007/ unter Beschreibungen findet man etwas über serielle und parallele Schnittstellen.
Ich hoffe, das hat geholfen, bei Fragen könnt ihr mir auch eine email an isostar@directbox.com schicken. Gruß |