📄 iec103dlg.h
字号:
// IEC103Dlg.h : header file
//
#if !defined(AFX_IEC103DLG_H__7CEAB6AB_BE36_4801_9CBF_96C2BC41B24A__INCLUDED_)
#define AFX_IEC103DLG_H__7CEAB6AB_BE36_4801_9CBF_96C2BC41B24A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CIEC103Dlg dialog
#define MAX_SIZE 512
#define RX_COLOR RGB( 0, 0, 255 )
#define TX_COLOR RGB( 255, 0, 0 )
#define RXTX_RIGHT "+"
#define RXTX_ERROR "x"
#define EnqInterval 1 /* s */
#define ValInterval 600 /* s */
#define ClkInterval 900 /* s */
#define FltInterval 5 /* s */
#define YxInterval 10 /* s */
#define MaxSendBuf 1024
#define MaxRcvBuf 1024
#define MaxRetry 3
#define MaxGRPNum 10
#define MaxIECNum 255
#define MaxBHNum 255
#define BUFSIZE 256
#define TIME_OUT 5
#define MaxWaitTimes 10
#define MSG_IEC_STATUS_ON 0
#define MSG_IEC_STATUS_OFF 1
#define NODE_ON 0
#define NODE_OFF 1
#define NO 0
#define YES 1
#define Master 1
#define Slave 0
#define ACK 0x06
#define NAK 0x15
#define SOH 0x01
#define STX 0x02
#define EOT 0x04
#define ENQ 0x05
#define CAN 0x0f
#define NUL 0x00
#define LINK_ADDR 1
#define ASDU_ADDR 1
#define MaxListDsp 20
/*==== IEC870-5-101 Link Protocol Control Information =====*/
#define LPCI_SYN 0x10
#define LPCI_STX 0x68
#define LPCI_ETX 0x16
#define LPCI_FCB 0x20
#define LPCI_FCV 0x10
#define LPCI_ACD 0x20
#define LPCI_SEQ 0x80
#define LPCI_NUL 0xe5
#define LSDU_CYCLE 1
#define LSDU_SPONT 3
#define LSDU_GENIC 5
#define C_RCU_NA 0
#define C_SND_AK 3
#define C_SYN_NK 4
#define C_RFB_NA 7
#define C_RLK_NA 9
#define C_PL1_NA 10
#define C_PL2_NA 11
#define M_CON_NA 0
#define M_BSY_NA 1
#define M_NV_NA 9
#define M_LKR_OK 11
#define M_LKR_FT 14
#define M_LKR_HT 15
#define COT_SPN 1
#define COT_CRC 2
#define COT_FCB 3
#define COT_FCV 4
#define COT_SYN 8
#define COT_IGI 9
#define COT_GWD 40
#define COT_GWD_NAK 41
#define COT_GRD 42
#define COT_GRD_NAK 43
#define COT_GWD_OK 44
#define FUN_GEN 254
#define FUN_GLB 255
#define INF_GROUP 241
#define M_TTM_TA 1
#define M_TMR_TA 2
#define M_MEI_NA 3
#define M_TME_TA 4
#define M_IDI_NA 5
#define M_SYN_TA 6
#define C_SYN_TA 6
#define C_IGI_NA 7
#define M_TGI_NA 8
#define M_ME2_NA 9
#define M_GD_NTA 10
#define C_GD_NA 10
#define M_GI_NTA 11
#define C_GRC_TA 20
#define C_GC_NA 21
#define M_LRD_TA 23
#define C_ODT_TA 24
#define C_ADT_NA 25
#define M_RTD_TA 26
#define M_RTC_TA 27
#define M_RTT_TA 28
#define M_TOT_TA 29
#define M_TOV_TA 30
#define M_EOT_TA 31
#define RCU_FRAME 0x00000001
#define PL1_FRAME 0x00000002
#define PL2_FRAME 0x00000004
#define IGI_FRAME 0x00000008
#define SYN_FRAME 0x00000010
#define ODT_FRAME 0x00000020
#define ADT_FRAME 0x00000040
#define YKS_FRAME 0x00000080
#define YKC_FRAME 0x00000100
#define YKE_FRAME 0x00000200
#define LED_FRAME 0x00000400
#define GEN1_FRAME 0x00000800
#define GEN2_FRAME 0x00001000
#define GEN3_FRAME 0x00002000
#define WGC0_FRAME 0x00004000
#define WGC1_FRAME 0x00008000
typedef struct {
BYTE buf[MAX_SIZE];
DWORD size;
} strucomData;
typedef struct {
BYTE fcb;
BYTE fcv;
BYTE acd;
BOOL pl1;
} struIEC103;
typedef struct {
BOOL opened;
BOOL inited;
BOOL cantx;
BOOL finished;
} struSYSTEM;
#include "Serial.h"
#include "RichEditEx.h"
class CIEC103Dlg : public CDialog
{
// Construction
public:
CIEC103Dlg(CWnd* pParent = NULL); // standard constructor
static DWORD WINAPI IEC103Thread( PVOID lpParam );
virtual void IEC103_Main();
virtual void StartIEC103Thread();
// Dialog Data
//{{AFX_DATA(CIEC103Dlg)
enum { IDD = IDD_IEC103_DIALOG };
CRichEditEx m_msg;
BOOL m_bShowMSG;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CIEC103Dlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
BYTE m_Gin;
BYTE m_Ngd;
virtual void Init();
virtual void IEC103Tx();
virtual void IEC103Rx();
virtual BYTE SumCheck( BYTE* buffer, int count );
virtual void RCU_NA( BYTE* buffer, int& count );
virtual void PL1_NA( BYTE* buffer, int& count );
virtual void PL2_NA( BYTE* buffer, int& count );
virtual void IGI_NA( BYTE* buffer, int& count );
virtual void SYN_TA( BYTE* buffer, int& count );
virtual void GEN1_NA( BYTE* buffer, int& count );
virtual void GEN2_NA( BYTE* buffer, int& count );
virtual void GEN3_NA( BYTE* buffer, int& count );
void WGC0_NA( BYTE* buffer, int& count );
void WGC1_NA( BYTE* buffer, int& count );
virtual BYTE GetSYNC( BYTE* buffer, int count = 0 );
virtual void ProcNF( BYTE* buffer, int count = 0 );
virtual void ProcCF( BYTE* buffer, int count = 0 );
virtual void ProcYX( BYTE* buffer, int count = 0 );
virtual void ProcYC( BYTE* buffer, int count = 0 );
virtual void ProcDD( BYTE* buffer, int count = 0 );
virtual void ProcGEN( BYTE* buffer, int count = 0 );
void AddString( LPCSTR lpszText )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.AddString( lpszText );
};
void AddLine( LPCSTR lpszText )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.AddLine( lpszText );
};
void AddColorString( LPCSTR lpszText, COLORREF color = 0x008000 )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.AddColorString( lpszText, color );
};
void AddColorLine( LPCSTR lpszText, COLORREF color = 0x008000 )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.AddColorLine( lpszText, color );
};
void DoSuccess( LPCSTR lpszText = "SUCCESS", COLORREF color = 0x008000 )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.DoSuccess( lpszText, color );
};
void DoFailure( LPCSTR lpszText = "FAILURE", COLORREF color = 0x0000ff )
{
if ( !m_bShowMSG )
{
return;
}
m_msg.DoFailure( lpszText, color );
};
void DisplayMessage( BYTE* buffer, int count, BOOL bRxData = TRUE )
{
int i;
CString temp, str;
if ( !m_bShowMSG )
{
return;
}
if ( bRxData )
{
for ( i = 0; i < count; i++ )
{
if ( i == 6 || i == 12 )
{
temp.Format( "[%02X] ", buffer[i] );
}
else
{
temp.Format( "%02X ", buffer[i] );
}
str += temp;
}
str += RXTX_RIGHT;
m_msg.AddColorString( "[接收]", RX_COLOR );
m_msg.AddColorLine( str, RX_COLOR );
}
else
{
for ( i = 0; i < count; i++ )
{
temp.Format( "%02X ", buffer[i] );
str += temp;
}
str += RXTX_RIGHT;
m_msg.AddColorString( "[发送]", TX_COLOR );
m_msg.AddColorLine( str, TX_COLOR );
}
};
protected:
HICON m_hIcon;
strucomData RxBuf;
struIEC103 IEC103data;
struSYSTEM system;
BOOL m_bSYNC;
BOOL m_bNF, m_bCF;
BOOL m_GEN_NA;
int IgiCount, FrameCount, SynCount;
HANDLE m_hCom;
CSerial SerialCom;
DWORD m_nPollFrame;
int m_ListCount;
int m_ListData;
// Generated message map functions
//{{AFX_MSG(CIEC103Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnBtnClose();
afx_msg void OnBtnOpen();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnBtnProtect();
afx_msg void OnCheckShow();
afx_msg void OnBtnSet();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_IEC103DLG_H__7CEAB6AB_BE36_4801_9CBF_96C2BC41B24A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -