?? mcom.h
字號:
/*******************************************************
文件名:mcom.h,串口通訊類頭文件
作者: 張勇,2000/12/6
********************************************************/
/*
#define WM_COMM_BREAK_DETECTED WM_USER+1 // A break was detected on input.
#define WM_COMM_CTS_DETECTED WM_USER+2 // The CTS (clear-to-send) signal changed state.
//#define WM_COMM_DSR_DETECTED WM_USER+3 // The DSR (data-set-ready) signal changed state.
#define WM_COMM_ERR_DETECTED WM_USER+4 // A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.
#define WM_COMM_RING_DETECTED WM_USER+5 // A ring indicator was detected.
#define WM_COMM_RLSD_DETECTED WM_USER+6 // The RLSD (receive-line-signal-detect) signal changed state.
#define WM_COMM_RXCHAR WM_USER+7 // A character was received and placed in the input buffer.
#define WM_COMM_RXFLAG_DETECTED WM_USER+8 // The event character was received and placed in the input buffer.
//#define WM_COMM_TXEMPTY_DETECTED WM_USER+9 // The last character in the output buffer was sent.
*/
#define COMM_BREAK_DETECTED 1 // A break was detected on input.
#define COMM_CTS_DETECTED 2 // The CTS (clear-to-send) signal changed state.
#define COMM_ERR_DETECTED 4 // A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.
#define COMM_RING_DETECTED 5 // A ring indicator was detected.
#define COMM_RLSD_DETECTED 6 // The RLSD (receive-line-signal-detect) signal changed state.
#define COMM_RXCHAR 7 // A character was received and placed in the input buffer.
#define COMM_RXFLAG_DETECTED 8 // The event character was received and placed in the input buffer.
#ifndef __SERIALPORT_H__
#define __SERIALPORT_H__
#include <afxwin.h>
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//串口事件
typedef void (CALLBACK* COM_EVENT)(HWND hWnd,UINT nEvent,UINT uPort,BYTE Data);
class CSerialPort
{
public:
// contruction and destruction
CSerialPort();
virtual ~CSerialPort();
// port initialisation
BOOL InitPort(HWND hWnd,COM_EVENT EventFunction, UINT portnr = 1, UINT baud = 19200, UINT nBufferSize = 512, char parity = 'N', UINT databits = 8, LPCTSTR stopsbits = "1", DWORD dwCommEvents = EV_RXCHAR | EV_CTS);
COM_EVENT Com_Event;
void WriteToPort(PVOID string,int len);
// start/stop comm watching
BOOL StartMonitoring();
BOOL RestartMonitoring();
BOOL StopMonitoring(); //暫停止
DWORD GetWriteBufferSize();
DWORD GetCommEvents();
DCB GetDCB();
UINT m_nPortNr;
protected:
int iWriteLen;
// 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;
HWND m_hWnd;
// misc
PBYTE m_szWriteBuffer;
DWORD m_dwCommEvents;
DWORD m_nWriteBufferSize;
};
#endif __SERIALPORT_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -