class CSerialPort { public: // contruction and destruction CSerialPort(); virtual ~CSerialPort(); // port initialisation BOOL InitPort(CWnd* pPortOwner,
UINT portnr = 1,
UINT baud = 19200,
char parity = ‘N‘,
UINT databits = 8,
UINT stopsbits = 1,
DWORD dwCommEvents = EV_RXCHAR | EV_CTS,
UINT nBufferSize = 512); // start/stop comm watching BOOL StartMonitoring(); BOOL RestartMonitoring(); BOOL StopMonitoring(); DWORD GetWriteBufferSize(); DWORD GetCommEvents(); DCB GetDCB(); void WriteToPort(char* string); protected: // protected memberfunctions void ProcessErrorMessage(char* ErrorText); static UINT CommThread(LPVOID pParam); static void ReceiveChar(CSerialPort* port, COMSTAT comstat); static void WriteChar(CSerialPort* port); // thread CWinThread* m_Thread; // synchronisation objects CRITICAL_SECTION m_csCommunicationSync; BOOL m_bThreadAlive; // handles HANDLE m_hShutdownEvent; HANDLE m_hComm; HANDLE m_hWriteEvent; // Event array. // One element is used for each event. There are two event handles for each port. // A Write event and a receive character event which is located in the overlapped structure (m_ov.hEvent). // There is a general shutdown when the port is closed. HANDLE m_hEventArray[3]; // structures OVERLAPPED m_ov; COMMTIMEOUTS m_CommTimeouts; DCB m_dcb; // owner window CWnd* m_pOwner; // misc UINT m_nPortNr; char* m_szWriteBuffer; DWORD m_dwCommEvents; DWORD m_nWriteBufferSize; };
1.串口的初始化
【笔记】SerialPort类的实现,布布扣,bubuko.com
原文:http://www.cnblogs.com/Spritutu/p/3703383.html