readme.txt

来自「vc++6.0写的串口操作的类」· 文本 代码 · 共 63 行

TXT
63
字号
In your software you only need to create an instance of the CSerialPort class and call InitPort. 
// the owner (CWnd) of the port (receives message)

BOOL CSerialPort::InitPort(CWnd* pPortOwner,  
 UINT  portnr,   // portnumber (1..4)
 UINT  baud,    // baudrate
 char  parity,   // parity 
 UINT  databits,   // databits 
 UINT  stopbits,   // stopbits 
 DWORD dwCommEvents,  // EV_RXCHAR, EV_CTS etc
 UINT  writebuffersize) // size of the writebuffer

The dwCommEvents flag can be used for communication with the owner of this class. 

The flags can be one of the following (or combined with |): 

WM_COMM_BREAK_DETECTED A break was detected on input. 
WM_COMM_CTS_DETECTED The CTS (clear-to-send) signal changed state. 
WM_COMM_DSR_DETECTED The DSR (data-set-ready) signal changed state. 
WM_COMM_ERR_DETECTED A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY. 
WM_COMM_RING_DETECTED A ring indicator was detected. 
WM_COMM_RLSD_DETECTED The RLSD (receive-line-signal-detect) signal changed state. 
WM_COMM_RXCHAR A character was received and placed in the input buffer. 
WM_COMM_RXFLAG_DETECTED The event character was received and placed in the input buffer. 
Accept the first parameter all parameters are optional. The standard values are: 

portnr  = 1
baud  = 19200
parity  = 'N'
databits  = 8, 
stopsbits = 1, 
dwCommEvents = EV_RXCHAR | EV_CTS,
nBufferSize = 512);

So the follwing code is enough to make communication possible: 

in the header of the owner: 

 CSerialPort m_Serial;

in the code: 

 m_Serial.InitPort(this);
 m_Serial.StartMonitoring();

Then the tread that watches the port is started and all events on the port are send to the owner. The receive a character the owner needs a messageentry in the messagemap: 

BEGIN_MESSAGE_MAP(CCommtestDlg, CDialog)
 //{{AFX_MSG_MAP(CCommtestDlg)
 ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication)
 ON_MESSAGE(WM_COMM_CTS_DETECTED, OnCTSDetected)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

and they must be handled: 
LONG CCommtestDlg::OnCommunication(WPARAM ch, LPARAM port)
{
 // do something with the received character

 return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?