📄 serialcommlayer.h
字号:
// SerialCommLayer.h: interface for the CRCCComm class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SERIALCOMMLAYER_H__B348117D_DC9A_498A_8370_FB55A38384AF__INCLUDED_)
#define AFX_SERIALCOMMLAYER_H__B348117D_DC9A_498A_8370_FB55A38384AF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "CommConst.h"
#define INVALID_HANDLE (HANDLE)-1
#define PWM_GOTCOMMDATA WM_USER + 1
#define PWM_COMMWRITE WM_USER + 2
#define PWM_REQUESTHANGUP WM_USER + 3
#define PWM_SENDDATAEMPTY WM_USER + 4
#define INPUTBUFFERSIZE 2048
/////////////////////////////////////////////////////////////////////////////
// CCommReadThread thread
class CCommReadThread : public CWinThread
{
DECLARE_DYNCREATE(CCommReadThread)
protected:
// Attributes
public:
HANDLE hCommFile; //通讯文件
HANDLE hCloseEvent; //线程关闭事件
HWND hComm32Window; //消息通知窗口
// Operations
public:
CCommReadThread(); // protected constructor used by dynamic creation
virtual ~CCommReadThread();
BOOL SetupReadEvent(LPOVERLAPPED lpOverlappedRead,LPSTR lpszInputBuffer,
DWORD dwSizeOfBuffer,LPDWORD lpnNumberOfBytesRead);
BOOL HandleReadData(LPCSTR lpszInputBuffer,DWORD dwSizeOfBuffer);
BOOL ReceiveData(LPSTR lpNewString,DWORD dwSizeOfNewString);
BOOL HandleReadEvent(LPOVERLAPPED lpOverlappedRead,LPSTR lpszInputBuffer,
DWORD dwSizeOfBuffer,LPDWORD lpnNumberOfBytesRead);
void PostHangupCall();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCommReadThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCommReadThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CCommWriteThread thread
class CCommWriteThread : public CWinThread
{
DECLARE_DYNCREATE(CCommWriteThread)
protected:
// Attributes
public:
HANDLE hCommFile; //通讯文件
HANDLE hCloseEvent; //线程关闭事件
HWND hComm32Window; //消息通知窗口
// Operations
public:
CCommWriteThread(); // protected constructor used by dynamic creation
virtual ~CCommWriteThread();
void PostHangupCall();
BOOL HandleWriteData(LPOVERLAPPED lpOverlappedWrite,LPSTR pDataToWrite,
DWORD dwNumberOfBytesToWrite);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCommWriteThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCommWriteThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
class CRCCComm : public CWnd
{
private:
HANDLE hCommFile; //串口句柄
CCommReadThread *ReadThread; //读串口线程
CCommWriteThread * WriteThread; //写串口线程
HANDLE hCloseEvent; //串口读写线程关闭事件
HWND AppWindow; //应用程序窗口句柄,可以假设为自已
int LastError; //最后错误号
private:
void Init();
void CloseReadThread(); //关闭读线程
void CloseWriteThread(); //关闭写线程
public:
CRCCComm();
virtual ~CRCCComm();
int GetLastError() { return LastError; }
int Close(); //关闭链接
BOOL StartComm(char * lpCommNo, DWORD dwBaudRate, BYTE byByteSize, BYTE byParity, BYTE byStopBits);
BOOL StopComm();
int Send(char *Buffer,int BufLen); //发送数据,返回1表示发送失败,0表示成功.
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRCCComm)
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
protected:
virtual int OnRawReceive(LPSTR lpNewString,DWORD dwSizeOfNewString);
};
#endif // !defined(AFX_SERIALCOMMLAYER_H__B348117D_DC9A_498A_8370_FB55A38384AF__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -