📄 communication.h
字号:
//---------------------------------------------------------------------------
// Pixelworks Inc. Company Confidential Strictly Private
//
// $Archive: $
// $Revision: 1.1.1.1 $
// $Author: KevinM $
// $Date: 2003/09/29 18:19:04 $
//
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Copyright 1997-2003 (c) Pixelworks Inc.
//
// Pixelworks owns the sole copyright to this software. Under international
// copyright laws you (1) may not make a copy of this software except for
// the purposes of maintaining a single archive copy, (2) may not derive
// works herefrom, (3) may not distribute this work to others. These rights
// are provided for information clarification, other restrictions of rights
// may apply as well.
//
// This is an unpublished work.
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>>>>> WARRANTEE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Pixelworks Inc. MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THE USE OF
// THIS SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
// PURPOSE.
// --------------------------------------------------------------------------
//
#ifndef __COMMUNCATION_H__
#define __COMMUNCATION_H__
#include <afxtempl.h>
#include "MakeSafe.h"
#ifdef BUILD_USB_CONFIG
#include "PWUsbFlash.h"
#endif
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
#define COM_PORT_MESSAGE (WM_USER + 0x100)
// WParam of COM_PORT_MESSAGE
#define vbMSCommEvReceive (2) // received data from COM port
typedef enum {
ccNONE,
ccSERIAL,
ccUSB
} eComChannel;
//****************************************************************************
// Start of class declaration
//****************************************************************************
class CCommunication : public CCmdTarget
{
public:
CCommunication();
~CCommunication();
BOOL Initialize(HWND hWnd);
BOOL SetBaudRate(int nBaudRate);
BOOL SetCommPort(int nPort);
BOOL GetPortOpen();
BOOL SetPortOpen(BOOL bStatus);
BOOL SetOutput(LPCSTR lpszText);
BOOL SetOutput(BYTE *pData, int nSize);
BOOL WaitForWriteToComplete();
void GetInput(CByteArray& ref_byteArray);
virtual BOOL FlushBuffer(); // virtual function
eComChannel m_eComm;
#ifdef BUILD_USB_CONFIG
CPWUsb* m_pUsb;
#endif
private:
HWND m_hParentWnd;
DWORD m_dwMainThreadId;
int m_nPort;
HANDLE m_hPortHandle;
BOOL m_bOriginalTimeoutsValid;
COMMTIMEOUTS m_OriginalTimeouts;
int m_nBaudRate;
DWORD m_dwModemStatus;
DWORD m_dwEventFlags;
COMSTAT m_ComStatus;
DWORD m_dwComError;
HANDLE m_hWriteDataEvent;
HANDLE m_hKillEvent;
HANDLE m_hWriteBufferEmptyEvent;
BOOL m_bConnected;
HANDLE m_hReaderThread;
HANDLE m_hWriterThread;
CSafe m_MakeSafeWriterArray;
CByteArray m_WriterByteArray;
CSafe m_MakeSafeReaderArray;
CByteArray m_ReaderByteArray;
BOOL m_bPostedDataToReadMessage;
BOOL Connect();
BOOL Disconnect();
BOOL PostComMessage(UINT iMessage, WPARAM wParam = 0, LPARAM lParam = 0);
BOOL UpdateCommState(int nBaudRate);
void CheckModemStatus();
void CheckComStatus();
BOOL AttemptToRead(char *pBuffer, DWORD dwBuffSize, OVERLAPPED *posReader);
BOOL AttemptToGetCommEvent(OVERLAPPED *posStatus, DWORD& refdwEvent);
void ReportStatusEvent(DWORD dwEvent);
static DWORD WINAPI ReaderThreadProc(LPVOID pParam);
static DWORD WINAPI WriterThreadProc(LPVOID pParam);
void HandleWriteRequest(OVERLAPPED *posWrite);
BOOL PutDataReadInQue(char *pData, DWORD dwSize);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -