Serielle Schnittstelle umleiten(Com1 -> Com2)
-
Hallo Freunde,
ich möchte eine serielle Schnittstelle COM1 auslesen und deren Inhalt direkt weiterleiten in die COM2.
Ich habe schon sehr viel versucht, aber leider bekomme ich die Daten nicht weitergeleitet.Der Basiscode sieht folgendermaßen aus:
void CSerialCommunication::open() { SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = true; // Note: The port number is hardwired here. m_hCommunication = ::CreateFile(_T("COM1:"), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); if (m_hCommunication == INVALID_HANDLE_VALUE){ return; } else{ //->Readfile(COM1) } DCB dcb; if (!::GetCommState(m_hCommunication, &dcb)) { close(); return; } dcb.BaudRate = CBR_115200; dcb.Parity = NOPARITY; dcb.ByteSize = 8; dcb.StopBits = ONESTOPBIT; dcb.fDsrSensitivity = 0; dcb.fOutxCtsFlow = 0; dcb.fOutxDsrFlow = 0; dcb.fInX = 0; dcb.fOutX = 0; dcb.fDtrControl = DTR_CONTROL_DISABLE; dcb.fRtsControl = RTS_CONTROL_DISABLE; // Program the device to signal an event whenever a character is in the input buffer. ::SetCommMask(m_hCommunication, EV_RXCHAR); if (!::SetCommState(m_hCommunication, &dcb)) { close(); return; } COMMTIMEOUTS ct; ct.ReadIntervalTimeout = 0; ct.ReadTotalTimeoutMultiplier = TIMEOUT; ct.ReadTotalTimeoutConstant = 0; ct.WriteTotalTimeoutMultiplier = TIMEOUT; ct.WriteTotalTimeoutConstant = 0; if (!::SetCommTimeouts(m_hCommunication, &ct)) { close(); return; } ::PurgeComm(m_hCommunication, PURGE_RXCLEAR); }
Die COM2 öffne ich übrigens an einer anderen Stelle.
Kann mir bitte jemand weiterhelfen, wie ich von hier aus weiterkomme.Gruss Ray
-
Ohne deinen Code genau angesehen zu haben:
Hier eine Library, die die Möglichkeiten an Fehlern drastisch reduziert -
http://www.codeproject.com/KB/system/serial.aspx