📄 testlfpprotocolview.h
字号:
// TestLFPProtocolView.h : interface of the CTestLFPProtocolView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_TESTLFPPROTOCOLVIEW_H__CA9554F0_3CD6_4143_A70C_24879EC05400__INCLUDED_)
#define AFX_TESTLFPPROTOCOLVIEW_H__CA9554F0_3CD6_4143_A70C_24879EC05400__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TestLFPProtocolDoc.h"
#define PROTOCOL_RUN 0
#define PROTOCOL_POLL 1
#define WAIT_TIME 2
UINT masterlfpproto( LPVOID pParam );
class CTestLFPProtocolView : public CFormView
{
protected: // create from serialization only
CTestLFPProtocolView();
DECLARE_DYNCREATE(CTestLFPProtocolView)
public:
//{{AFX_DATA(CTestLFPProtocolView)
enum { IDD = IDD_TESTLFPPROTOCOL_FORM };
CRichEditCtrl m_MSG;
//}}AFX_DATA
// Attributes
public:
CTestLFPProtocolDoc* GetDocument();
// Operations
public:
public:
CWinThread* m_pThread; // 代表辅助线程
volatile BOOL m_bConnected;//表示连接否,用来标识菜单串口连接和断开连接是否可用
volatile HANDLE m_hPostMsgEvent; // 用于WM_COMMNOTIFY消息的事件对象
OVERLAPPED m_osRead;
OVERLAPPED m_osWrite; // 用于重叠读/写
volatile HANDLE m_hCom; // 串行口句柄
BOOL m_bInit;
public: //串口读写
DWORD WriteCommData( BYTE* buffer, DWORD dwLength );
DWORD ReadCommData( BYTE* buffer, DWORD dwLength );
BOOL InitComm();
void CloseComm();
private:
BOOL m_bshowmsg;
BOOL m_bEnable;
void MainInit( void );
void ReadConfig( void );
void MainSend( void );
void MainRun( void );
void MainSystemWait( void );
void ShowMSG( BYTE* buffer, int len, BOOL bIsSend = FALSE );
public:
BOOL m_bPoll;
BYTE dev_addr;
BYTE nYkState;
struDevCtrl dev_ctrl;
char filepath[MAX_PATH];
BYTE dev_settingvalue_type[256];
void MSGShow( BOOL bshow );
private: //串口配置信息
char strComNo[8];
DWORD dwBaudRate;
BYTE DataSize;
BYTE Parity;
BYTE StopBit;
BYTE startaddr;
BYTE endaddr;
int dev_num;
BOOL m_bYkValue;
BYTE m_bYkNum;
BYTE aivalue_num;
BYTE divalue_num;
CHARFORMAT RichEditFormat;
struRecBuf m_recebuffer;
struDevType m_devtype[MAX_DEV_NUM];
private:
BOOL m_bPolling;
BOOL m_bIsC35Frame;
BOOL GetACKFrame( BYTE* buffer, int& count );
BOOL GetNAKFrame( BYTE* buffer, int& count );
BOOL GetC1Frame( BYTE* buffer, int& count );
BOOL GetC4Frame( BYTE* buffer, int& count );
BOOL GetC15Frame( BYTE* buffer, int& count );
BOOL GetC16Frame( BYTE* buffer, int& count );
BOOL GetC19Frame( BYTE* buffer, int& count );
BOOL GetC20Frame( BYTE* buffer, int& count );
BOOL GetC2Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC7Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC8Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC9Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC10Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC11Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC12Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC13Frame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetYKFrame( BYTE* buffer, int& count, DWORD& frame );
BOOL GetC35Frame( BYTE* buffer, int& count );
private:
int m_BufferSize;
BOOL m_bSYN;
BOOL IsSYN( BYTE* buffer );
BOOL MainProc( BYTE* buffer, int count );
BOOL OnReceiveACK( int addr );
BOOL OnReceiveNACK( int addr );
BOOL OnReceiveR1Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR2Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR4Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR7Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR8Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR9Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR10Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR15Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR16Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR17Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR18Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR19Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR20Frame( int addr, BYTE* buffer, int len );
BOOL OnReceiveR32Frame( int addr, BYTE* buffer, int len );
WORD GetCheckSum16( BYTE* pData, int count );
private:
int m_nState;
BYTE m_nFrameType;
DWORD m_nCount; //loops passed
DWORD m_nFrameCount;
DWORD m_nFramePoll;
DWORD m_nCurFrame;
DWORD m_nSendPoint; //send out loop
DWORD m_nSendTime;
int m_nPollCount;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTestLFPProtocolView)
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnInitialUpdate(); // called first time after construct
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CTestLFPProtocolView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CTestLFPProtocolView)
afx_msg void OnAppComSetting();
afx_msg void OnAppComConnect();
afx_msg void OnUpdateAppComConnect(CCmdUI* pCmdUI);
afx_msg void OnAppComDisconnect();
afx_msg void OnUpdateAppComDisconnect(CCmdUI* pCmdUI);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnSystemSetting();
afx_msg void OnFileOpen();
afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI);
afx_msg void OnFileSave();
//}}AFX_MSG
afx_msg LRESULT MasterReceive( WPARAM wParam, LPARAM lParam );
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in TestLFPProtocolView.cpp
inline CTestLFPProtocolDoc* CTestLFPProtocolView::GetDocument()
{ return (CTestLFPProtocolDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TESTLFPPROTOCOLVIEW_H__CA9554F0_3CD6_4143_A70C_24879EC05400__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -