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

📄 communication.h

📁 PW芯片方案Flash ROM烧写程序
💻 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 + -