⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialcommlayer.h

📁 利用VC++实现PC通过串口收发手机短消息
💻 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 + -