014
21.03.2006, 08:58 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
was genau machst du denn.
Write schreibt in die eine Richtung, Read liest in die andere.
Also:
Seite A - Seite B Read <---- Write Write ----> Read
du kannst nicht auf Seite A wieder auslesen was du auf Seite A geschrieben hast.
Ansonsten, mein Open-Befehl:
IsOpen liefert einfach nur "m_bOpen"
C++: |
int CSerial::ReOpen(unsigned int uiPort, int Baud) { if(uiPort == 0 || uiPort > 255) return -1;
CString strPort; strPort.Format("COM%d", uiPort);
Close();
m_hCom = CreateFile(strPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, /*FILE_FLAG_NO_BUFFERING|*/FILE_FLAG_WRITE_THROUGH , NULL);
if(m_hCom == INVALID_HANDLE_VALUE) { AfxGetMainWnd()->MessageBox(GetLastError(), "ERROR", MB_OK|MB_ICONSTOP); return -1; }
SetupComm(m_hCom, 4096, 4096); PurgeComm(m_hCom, PURGE_TXABORT | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_RXCLEAR);
if(!GetCommState(m_hCom, &m_hDCB)) { AfxGetMainWnd()->MessageBox(GetLastError(), "ERROR", MB_OK|MB_ICONSTOP); return -1; }
m_hDCB.BaudRate = Baud; m_hDCB.ByteSize = 8; m_hDCB.Parity = NOPARITY; m_hDCB.StopBits = ONESTOPBIT; m_hDCB.fDtrControl = DTR_CONTROL_ENABLE; m_hDCB.fRtsControl = RTS_CONTROL_ENABLE; m_hDCB.fInX = false; m_hDCB.fOutX = false; m_hDCB.fDsrSensitivity = false; m_hDCB.fAbortOnError = false; m_hDCB.XonLim = 100; m_hDCB.XoffLim = 100;
if(!SetCommState(m_hCom, &m_hDCB)) { AfxGetMainWnd()->MessageBox(GetLastError(), "ERROR", MB_OK|MB_ICONSTOP); return -1; }
m_bOpen = true;
m_uiPort = uiPort;
return 0; }
|
-- class God : public ChuckNorris { }; |