zugriff auf die serial port, handshake
-
hi,
wie greif ich auf den serial port zu um die (handshake)eingänge abzufragen?
bitte nciht auf die faq verweisen, da war ich schon.
bis jetzt hab ichs mit vreatefile versucht aber das funktioniert nicht richtig.
könnte mir mal jemand ein stückchen code liefern? ich mach
scheinbar alles falsch.://------------------------ int com_port::port_open(PORT_TYPE port) { if (port != COM1 && port != COM2) return ER_UNKNOWN_PORT; if (mOpen || mHandle != NULL) return ER_IS_OPEN; mHandle = NULL; mHandle = CreateFile(port==COM1?"COM1":"COM2", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (mHandle == NULL) { mHandle = NULL; mOpen = false; return ER_OPEN_FAILED; } COMMTIMEOUTS ctm; ctm.ReadIntervalTimeout=20; ctm.ReadTotalTimeoutMultiplier=0; ctm.ReadTotalTimeoutConstant=1000; ctm.WriteTotalTimeoutMultiplier=0; ctm.WriteTotalTimeoutConstant=10; SetCommTimeouts(mHandle, &ctm); DCB temp; ZeroMemory(&temp, sizeof(temp)); GetCommState(mHandle, &temp); temp.BaudRate = CBR_9600; SetCommState(mHandle, &temp); SetCommMask (mHandle, EV_RXCHAR); PurgeComm(mHandle, PURGE_TXCLEAR | PURGE_RXCLEAR); DCB dcb; dcb.BaudRate = CBR_9600; dcb.ByteSize = 4; dcb.Parity = 0; dcb.StopBits = ONESTOPBIT; dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; dcb.fInX = FALSE; SetCommState(mHandle, &dcb); mOpen = true; mPort = port; return ER_OK; }es wär echt wichtig.
danke-
-
Setzen: EscapeCommFunction
Abfragen: GetCommModemStatus
-
feisten dank.
du hast mir das leben gerettet.!