You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1255 lines
28 KiB
C

2 years ago
/****************************************************************************
* FileName : Common.h *
* Programmer : Li Liangchu *
* Writen at : 2002.09.20 *
* Version : *
* Description: header of the nport.c *
* Last modify: 2002.11.6 *
****************************************************************************/
#ifndef __COMMON_H_ICL__
#define __COMMON_H_ICL__
#ifdef _WIN32
#else
#define OS_UNIX
#endif
#ifdef _WIN32
#ifdef _DEBUG
// #define _OS_WINDOWS_DEBUG_
#else // _DEBUG
#define _OS_WINDOWS_
#endif // _DEBUG
2 years ago
#include <windows.h>
#include <winsock.h>
#include <dos.h>
#include <direct.h>
#include <sys/timeb.h>
#include <process.h>
#else
#include <sys/time.h>
#include <netinet/in.h>
#endif
#include "platform_def.h"
2 years ago
#include <stdio.h>
#include <string.h>
#include <time.h>
//#include "menu.h"
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include "basefunc.h"
#include "DSFileSystem.h"
#include "chainlist.h"
#include "os_heap.h"
#include "basetype.h"
#include "confrw.h"
#define OPEN 0
#define CLOSE 1
// wen 2005.04.12 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʽ
/* !<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʾ<EFBFBD><CABE>Ϣ
*/
#define MSG_CLASS_TIP 1
/* !<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
*/
#define MSG_CLASS_WARN 2
/* !<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
*/
#define MSG_CLASS_ERROR 3
/*!
* <EFBFBD>˿ڶ<EFBFBD><EFBFBD><EFBFBD>ʶ
*/
#define FLAG_READ 0x0001
/*!
* <EFBFBD>˿<EFBFBD>д<EFBFBD><EFBFBD>ʶ
*/
#define FLAG_WRITE 0x0002
/*!
* <EFBFBD>˿ڶ<EFBFBD><EFBFBD><EFBFBD>ʶ
*/
#define FLAG_OPEN (FLAG_READ | FLAG_WRITE)
#define OPEN_PORT 3 // <20>˿ڴ<CBBF><DAB4><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>״̬
#define CLOSE_PORT 0 // <20>˿ڴ<CBBF><DAB4>ڹر<DAB9>״̬
// <20><><EFBFBD><EFBFBD><EFBFBD>˿ڴ<CBBF><DAB4><EFBFBD><EFBFBD><EFBFBD>ʶFAIL_GREATE<54><45>SUCCEED_GREATE<54><45>SOCKET_BEING
#define FAIL_GREATE 0 // <20><><EFBFBD><EFBFBD>socketʧ<74><CAA7>
#define SUCCEED_GREATE 1 // <20><><EFBFBD><EFBFBD>socket<65>ɹ<EFBFBD>
#define SOCKET_BEING 2 // socket<65>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>
#define AI_DATA_DISP 4
#define DI_DATA_DISP 5
#define PI_DATA_DISP 6
#define WATCH_DATA_DISP 8
typedef u_char BYTE;
typedef u_short WORD;
typedef u_long DWORD;
#ifndef _WIN32
#define OS_UNIX
typedef unsigned long long ULONG_PTR, *PULONG_PTR;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
2 years ago
#define _getpid getpid
#define _stricmp strcasecmp
#define Sleep(x) usleep(1000*x)
// #define GetPrivateProfileString QGetPrivateProfileString
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
2 years ago
#define BYTE3(a) (((a)&0xff)<<24)
#define BYTE2(a) (((a)&0xff)<<16)
#define BYTE1(a) (((a)&0xff)<<8)
#define BYTE0(a) ((a)&0xff)
#define ExchWord(a) (HIBYTE(a) | (LOBYTE(a)<<8))
#define ExchDWord(a) (ExchWord(HIWORD(a)) | (ExchWord(LOWORD(a))<<16))
#define BcdByteToInt( c ) (((c&0xf0) >> 4)*10 + (c&0x0f))
#define IntToBcdByte( c ) ((c/10)*16 + (c%10))
#define HexDigitToChar( c ) (((c) >= 10) ? ((c)-10+'A') : ((c)+'0'))
#define HexCharToInt( c ) \
( ((c) >= '0') && ((c) <= '9') ? (c) - '0' : \
((c) >= 'a') && ((c) <= 'f') ? (c) - 'a' + 10 : \
((c) >= 'A') && ((c) <= 'F') ? (c) - 'A' + 10 : 0 )
#define INC_TOTAL_MSG( port ) (SioParam[port].MsgNum++)
#define INC_Lost_SYNC_CNT( port ) (SioParam[port].LostSyncCnt++)
#define INC_ERROR_MSG( port ) \
do { \
SioParam[port].ErrMsgNum++; \
SioParam[port].MsgNum++; \
} while ( 0 )
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>
#define DEFAULT_UDP_COMM_PORT 0xff00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>дEEPROM<4F><4D>PB6<42><36>PB7<42><37>ַ
#define SUCC 1
#define FAIL 0
#define MAX_NET_BUF_SIZE (80*1024)
#define MAX_MSG_BUF_SIZE 81920
#define NET_MAC_LEN 6
#define DEFAULT_MAX_SERIAL_PORT_NUM 16
#define DEFAULT_MAX_NET_PORT_NUM 8
#define DEFAULT_MAX_PORT_NUM (DEFAULT_MAX_SERIAL_PORT_NUM+DEFAULT_MAX_NET_PORT_NUM)
#define MAX_DEV_NUM 16
#define MAX_PROV_PORT_NUM 16
#define MAX_NET_NUM 3
#define DEFAULT_BAUD 9600
//1<><31><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define SDS_GET_IP_ADDR 0x101
#define SDS_N_GET_IP_ADDR 0x102
#define SDS_SET_IP_ADDR 0x103
#define SDS_GET_NET_MAC_CODE 0x109
#define SDS_SET_NET_MAC_CODE 0x110
#define SDS_SIO_RECV_DATA 0x141
#define SDS_SIO_SEND_DATA 0x142
#define SDS_SIO_SET_WATCH_PORT 0x161
#define SDS_SIO_CLR_WATCH_PORT 0x162
//7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
#define SDS_SIO_GET_PROTOCOL_NAME 0x201 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SDS_SIO_GET_PORT_CONFIG_INFO 0x203 // <20><><EFBFBD>˿ڹ<CBBF><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define SDS_SIO_GET_PROTOCOL_CONFIG_INFO 0x204 // <20><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD>Ŷ<EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>Ŀ
#define SDS_SIO_GET_STAT_INFO 0x211 // <20><><EFBFBD><EFBFBD><EFBFBD>ж˿<D0B6>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ
#define SDS_SIO_CLR_STAT_INFO 0x212 // <20>˿<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
#define SDS_SIO_GET_AI_DATA_INFO 0x213 // <20><><EFBFBD>˿<EFBFBD>ң<EFBFBD><D2A3>
#define SDS_SIO_GET_DI_DATA_INFO 0x214 // <20><><EFBFBD>˿<EFBFBD>ң<EFBFBD><D2A3>
#define SDS_SIO_GET_PI_DATA_INFO 0x215 // <20><><EFBFBD>˿ڵ<CBBF><DAB5><EFBFBD>
#define SDS_SIO_GET_CONFIG_FILE 0x221 // <20><>portconfig.ini <20>ļ<EFBFBD>
#define SDS_SIO_SET_CONFIG_FILE 0x222 // дportconfig.ini <20>ļ<EFBFBD>
#define SDS_SIO_SET_SYSTEM_TIME 0x231 // ϵͳ<CFB5><CDB3>ʱ
#define SDS_SIO_RESET 0x255 // <20><><EFBFBD>˿ڵ<CBBF><DAB5><EFBFBD>
#define MAX_MAP_REG_NUM 8
#define NO_HANDSHAKE_MODE 0x00
#define HARDWARE_MODE 0x01
#define SOFTWARE_MODE 0x02
#define RS232_COMM_MODE 0x00
#define RS422_COMM_MODE 0x01
#define RS485_COMM_MODE 0x02
#define RS485_INPUT 0
#define RS485_OUTPUT 1
#define NO_COMM 0
#define UDP_COMM 1
#define TCP_S_COMM 2
#define TCP_C_COMM 3
#define RECV_PROTOCOL 0
#define PROV_PROTOCOL 1
#define PROTOCOL_SLAVE PROV_PROTOCOL
#define PROTOCOL_MASTER RECV_PROTOCOL
#define POLL_CMD_TYPE_NUM 3
#define NORMAL_CMD_TYPE 0
#define INSERAT_CMD_TYPE 1
#define FAST_CMD_TYPE 2
//<2F>趨maskbit<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(&~maskbit)|bitȷ<74><C8B7>λֵ
// <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
#define BITMASK 0x03
#define BIT5 0x00
#define BIT6 0x01
#define BIT7 0x02
#define BIT8 0x03
// ֹͣλ
#define STOPMASK 0x0c
#define STOP1 0x04
#define STOP2 0x08
#define STOP15 0x0c
// У<><D0A3>λ
#define PARITYMASK 0xf0
#define PARITYNONE 0x00
#define PARITYODD 0x10
#define PARITYEVE 0x20
#define PARITYMRK 0x30
#define PARITYSPC 0x40
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RTSMASK 0x01
#define DTRMASK 0x02
#define CTSMASK 0x04
#define PNT_ENABLE 0 // <20><>ʹ<EFBFBD><CAB9>
#define PNT_STATE 1 // <20><>״̬
#define PNT_RAWVALUE 3 // <20><>ԭֵ(ң<><D2A3>,<2C><><EFBFBD><EFBFBD>)
#define PNT_POLAR 5 // ң<><D2A3><EFBFBD><EFBFBD><E3BCAB>
#define PNT_STATUS 6 // ң<>ŵ<EFBFBD>״̬
#define PNT_CTRL_NO 7 // ң<>ſص<C5BF><D8B5><EFBFBD>
#define PNT_PROV_MSG 10 // ת<><D7AA><EFBFBD><EFBFBD>Ϣ
#define PNT_SOE_TIME 20 // ң<><D2A3> SOE ʱ<><CAB1>
#define PNT_ALL_MSG 21 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define PNT_SOE_TIME_EX 22 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>Ϣ<EFBFBD><CFA2>ң<EFBFBD><D2A3>SOEʱ<45><CAB1>
#define AI_PNT_TYPE 0
#define DI_PNT_TYPE 1
#define CN_PNT_TYPE 2
//#define PI_PNT_TYPE 2
#define PI_PNT_TYPE 3
#define OD_PNT_TYPE 4
#define AO_PNT_TYPE 20
#define DO_PNT_TYPE 21
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define PROTECT_AI_PNT_TYPE 128
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define PROTECT_DI_PNT_TYPE 129
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define PROTECT_FIX_PNT_TYPE 130
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define PROTECT_EVENT_PNT_TYPE 131
#define POLL_CMD_TYPE_CMD 3
#define NORMAL_POLL_CMD 0 // <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INSERT_POLL_CMD 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FAST_POLL_CMD 2 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// TIMER_CNT, CREATE_CNT, LED_CNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1000
//#define TIMER_CNT 20 // Poll<6C><6C><EFBFBD>ʱ<EEB6A8><CAB1>ʱ<EFBFBD><CAB1> 20 ms
#define TIMER_CNT 200 // Poll<6C><6C><EFBFBD>ʱ<EEB6A8><CAB1>ʱ<EFBFBD><CAB1> 200 ms
#define DATA_PRO_CNT 10 // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 10 ms
#define CREATE_CNT 100 // 100 ms
#define LED_CNT 250 // 250 ms
#define BLK_SIZE 256
#define SYSTEM_TIME 300 // RTU <20><>ʱ, 300<30><30>һ<EFBFBD><D2BB>
#define MAX_DISP_LINE 2048
#define MAX_PROV_SOE 128
#define STEP_YKYT_NOEXEC 0 // <20><> <20><> <20><>
#define STEP_YKYT_SELECT 1 // ң<><D2A3>ѡ<EFBFBD><D1A1>
#define STEP_YKYT_EXEC 2 // ң<><D2A3>ִ<EFBFBD><D6B4>
#define STEP_YKYT_CANCEL 3 // ң<>س<EFBFBD><D8B3><EFBFBD>
#define STEP_YT_SELECT 4 // ң<><D2A3>ѡ<EFBFBD><D1A1>
#define STEP_YT_EXEC 5 // ң<><D2A3>ִ<EFBFBD><D6B4>
#define STEP_YT_CANCEL 6 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define STEP_YKYT_DIRECT 7 // ֱ <20><>
#define STEP_YKYT_STOP 8 // ң<><D2A3><EFBFBD><EFBFBD>ͣ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_NO 0
/*!
<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_UINT 1
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_INT 2
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_FLOAT 3
/*!
<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_STRING 4
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_BINARY 5
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define DT_CONTROL 6
// <20><>Ϣ<EFBFBD><CFA2>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ2<D5B9><32><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD>ֽ<EFBFBD>ָʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// <20>ڶ<EFBFBD><DAB6>ֽڸ<D6BD><DAB8>ݲ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
#define CHECK_NO 1 // <20><>У<EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>չ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>0
#define CHECK_WHOLE 2 // <20><>У<EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>չ<EFBFBD>ֽ<EFBFBD>ΪУ<CEAA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CHECK_GROUP 3 // <20><><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>չУ<D5B9><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DATATYPE_NO -1
#define DATATYPE_AI 0
#define DATATYPE_DI 1
#define DATATYPE_OD 2
#define DATATYPE_STRING 3
#define DATATYPE_PI 4
// wen 2005.10.08 <20><><EFBFBD><EFBFBD>malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ治<DAB4><E6B2BB><EFBFBD>ͷŵ<CDB7><C5B5><EFBFBD><EFBFBD><EFBFBD>
#define MIN_MALLOC_SIZE 200 // malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ߴ<EFBFBD>
#define MAX_NO_WRITE_NUM 6000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󲻿<EFBFBD>д<EFBFBD>ߴ<EFBFBD>
#define MAX_BUFUNIT_NUM 100 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// <20><><EFBFBD><EFBFBD>fend<6E><64><EFBFBD>ܵĺ궨<C4BA><EAB6A8>
#define MAX_HOST 2
#define MAX_FEND 2
#define MAX_ADDR 2
#define MAX_NET_BUF 16384
#define MMI_TYPE 0
#define FEND_TYPE 1
#define HOST_TYPE 2
#define TCPIP_ADDR_LEN 32 // TCP/IP ͨѶ<CDA8><D1B6>ַ<EFBFBD><D6B7><EFBFBD>󳤶<EFBFBD>
#define MAX_MACHINE_NAME_LEN 48 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
#define MAX_RTU_MSG_SIZE 8192 // RTU <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
#ifdef OS_LINUX
// <20><>linux<75><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5>ֽڶ<D6BD><DAB6><EFBFBD>
typedef int SOCKET;
#define INVALID_SOCKET (SOCKET)(~0)
#endif
#define __attribute__(x)
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define MAX_POLL_CMD_BUF_LEN 256 // <20><>ѯָ<D1AF><EFBFBD><EEBBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
enum Param_Type
{
PARAM_NO=0,
PARAM_LINK,
PARAM_DEV,
PARAM_YC,
PARAM_YX,
PARAM_YM,
PARAM_YK,
PARAM_SYNCTIME,
PARAM_ASDU10
};
#ifdef OS_WINDOWS
#pragma pack (push,1)
#else// OS_UNIX
#pragma pack(1)
#endif //OS_UNIX
//SDS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
typedef struct
{
BYTE PortIdx; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
WORD MsgType; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
WORD MsgLen; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
} RTUMSGHEAD;
//SDS<44><53><EFBFBD><EFBFBD><EFBFBD>ͽṹ
typedef struct
{
BYTE PortIdx; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
WORD MsgType; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
WORD MsgLen; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
u_char MsgData[MAX_MSG_BUF_SIZE];
} RTUMSG;
//<2F><><EFBFBD><EFBFBD><E7B7A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><E7B7B3>
typedef struct
{
int BufSize;
int MsgCnt;
int Front;
int Rear;
u_char MsgData[MAX_MSG_BUF_SIZE];
} DATA_BUF;
struct WR_DATA
{
// u_short MsgType ;
u_short MsgLen;
u_char *MsgData;
int PLen;
struct WR_DATA *Next;
};
typedef struct
{
WORD PortNo;
WORD PntNo;
u_char Enable;
u_char ChangeFlag;
float fFactor;
// ģ<><C4A3><EFBFBD><EFBFBD>ר<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
WORD wType; // ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} PROV_AI_PNT;
typedef struct
{
WORD PortNo;
WORD PntNo;
u_char Enable;
u_char ChangeFlag;
u_char CtrlEnable;
short ControlNo;
// ģ<><C4A3><EFBFBD><EFBFBD>ר<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
WORD wType; // ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} PROV_DI_PNT;
typedef PROV_AI_PNT PROV_PI_PNT;
typedef struct
{
WORD PortNo;
WORD PntNo;
u_char Enable;
} PROV_PNT;
typedef struct
{
BYTE Enable;
BYTE State; // ң<><D2A3>״̬
//WORD RawValue; // ң<><D2A3>ԭֵ
DWORD RawValue; // ң<><D2A3>ԭֵ
BYTE Polar; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PROV_PNT Prov[MAX_PROV_PORT_NUM]; // ת<><D7AA><EFBFBD><EFBFBD>־
} AI_DEF;
typedef struct
{
BYTE Enable;
BYTE State; // ң<><D2A3>״̬
BYTE Status; // ң<><D2A3>״̬
u_char CtrlEnable;
WORD ControlNo;
DAY_TIME SoeTime;
PROV_PNT Prov[MAX_PROV_PORT_NUM]; // ת<><D7AA><EFBFBD><EFBFBD>־
} DI_DEF;
typedef struct
{
BYTE Enable;
BYTE State; // <20><><EFBFBD><EFBFBD>״̬
u_long RawValue; // <20><><EFBFBD><EFBFBD>ԭֵ
PROV_PNT Prov[MAX_PROV_PORT_NUM]; // ת<><D7AA><EFBFBD><EFBFBD>־
} PI_DEF;
typedef struct
{
int iPntNo; // SOE<4F><45><EFBFBD><EFBFBD>
BYTE bStatus; // ״ֵ̬
// wen 2005.05.18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>103<30><33>Ч)
BYTE u8Type; // 103<30>б<EFBFBD><D0B1><EFBFBD>Ϊasdu<64><75>
BYTE u8ProvFun; // 103ת<33><D7AA><EFBFBD>е<EFBFBD>FUN
BYTE u8ProvInf; // 103ת<33><D7AA><EFBFBD>е<EFBFBD>INF
WORD wRelativeTime; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
WORD wFaultNo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DAY_TIME SoeTime; // SOEʱ<45><CAB1>
// wen 2005.10.25 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>еĹ<D0B5><C4B9>ϲ<EFBFBD><CFB2><EFBFBD>
char szMsgEx[64]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>64<36>ֽ<EFBFBD>
} SOE_DEF;
typedef struct
{
int iSoeNum; // soe<6F><65><EFBFBD><EFBFBD>
int iFront; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
int iRear; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8>
SOE_DEF *ptrProvSoe; // <20>˿<EFBFBD>soe<6F><65><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MAX_PROV_SOE)<29><><EFBFBD><EFBFBD>
} PROV_SOE_DEF;
#define YKYT_CMD_FROM_NO 0 // û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
#define YKYT_CMD_FROM_SCADA 1 // <20><>Դ<EFBFBD><D4B4>scadaϵͳ
#define YKYT_CMD_FROM_PROVPORT 2 // <20><>Դ<EFBFBD><D4B4>ת<EFBFBD><D7AA><EFBFBD>˿<EFBFBD>
// wen 2003.08.22 <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3>ң<EFBFBD><D2A3>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
int m_iProvPortIdx; // ת<><D7AA><EFBFBD><EFBFBD>վ<EFBFBD>˿ں<CBBF>
int m_iProvPntIdx; // ת<><D7AA><EFBFBD><EFBFBD>վң<D5BE>ŵ<EFBFBD><C5B5><EFBFBD>
int m_iProvYkYtPointIdx;// ת<><D7AA><EFBFBD><EFBFBD>վң<D5BE><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_iYkYtPointIdx; // ʵ<>ʳ<EFBFBD>վң<D5BE><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_iYkYtStep; // ң<><D2A3>ң<EFBFBD><D2A3>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>޲<EFBFBD><DEB2><EFBFBD>(=0)/ѡ<><D1A1>(=1)/ִ<><D6B4>(=2))
// <20>ýṹ<C3BD><E1B9B9>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ң<EFBFBD><D2A3>)
int m_iYkYtOperate; // ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط֡<D8B7><D6A1>غϡ<D8BA>ʧ<EFBFBD>ܣ<EFBFBD>
int m_iYkYtMode; // ң<><D2A3>ң<EFBFBD><D2A3>ģʽ(<28><><EFBFBD><EFBFBD>104<30><34>Ч)
DAY_TIME m_sDayTime; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʱ<EFBFBD><CAB1>
int m_iTimeOut; // ת<><D7AA>ң<EFBFBD>س<EFBFBD>ʱʱ<CAB1><CAB1>
int m_iCmdFrom; // ָ<><D6B8><EFBFBD><EFBFBD>Դ(=0 <20><><EFBFBD><EFBFBD>Դ; =1 <20><>Դscada; =2 <20><>Դת<D4B4><D7AA><EFBFBD>˿<EFBFBD>)
} PROV_YKYT_DEF;
#define YKYT_SEND_UP 1 //
#define YKYT_SEND_DOWN 2 //
typedef struct
{
int m_iYkYtStep; // ң<><D2A3>ң<EFBFBD><D2A3>ִ<EFBFBD>в<EFBFBD><D0B2><EFBFBD>
int m_iYkYtPnt; // ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>
int m_iYkYtOperate; // ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ط֡<D8B7><D6A1>غϡ<D8BA>ʧ<EFBFBD>ܣ<EFBFBD>
int m_iYkYtUpDown; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBBB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1=up, 0=down)
} YKYT_PARAM;
typedef struct
{
//******************** <20><><EFBFBD>ж˿<D0B6><CBBF><EFBFBD>Ϣ ************************
DWORD Baud; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(cdt<64><74><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//**************** <20><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬*******************
int m_iRevStatus; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>״̬
int m_iNeedRevLength; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//******************** Poll Cmd ****************************
u_long Retry; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_long RetryCnt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_long RetryTime; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u_long RetryTimeCnt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_long WaitTime; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u_long WaitTimeCnt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_char ForceWaitFlag; // ǿ<>Ƶȴ<C6B5><C8B4><EFBFBD>־
u_short ForceWaitCnt; // ǿ<>Ƶȴ<C6B5><C8B4><EFBFBD><EFBFBD><EFBFBD>
u_char ReSendCmdFlag; // <20>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
u_char SendCmdFlag; // <20><><EFBFBD><EFBFBD>ͱ<EFBFBD>־
u_char RevCmdFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־
u_char LastGetCmdBuf; // <20><>ǰʹ<C7B0>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
DATA_BUF PollCmd[POLL_CMD_TYPE_NUM];
//******************* <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ݿ<EFBFBD> ***************************
u_char PortType; // MAIN_PORT or SLAVE_PORT
u_char CheckTime; // ʱ<><CAB1>У<EFBFBD><D0A3>(=0, <20><><EFBFBD><EFBFBD>ʱ; =1, <20>϶<EFBFBD>ʱ(<28><><EFBFBD><EFBFBD>); =2, <20><EFBFBD>ʱ(<28><><EFBFBD><EFBFBD>))
WORD AiNum; // <20>˿<EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD DiNum; // <20>˿<EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD PiNum; // <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void *AiPtr; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><D6B8>
void *DiPtr; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><D6B8>
void *PiPtr; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><D6B8>
// wen 2004.11.16 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʱ<EFBFBD><CAB1>
u_char DiChange; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
u_char AiChange; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
// wen 2004.11.16 <20><><EFBFBD><EFBFBD>soe<6F><65><EFBFBD>ݵ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD>
PROV_SOE_DEF ProvSoeBuf; // ת<><D7AA>soe<6F><65><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
PROV_YKYT_DEF ProvYkYtMsg; // ת<><D7AA>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} SIO_PARAM_BAOHU_DEF;
typedef struct
{
//***************** <20><><EFBFBD>ж˿<D0B6><CBBF><EFBFBD>Ϣ ************************
DWORD Baud; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_char CommMode; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֹͣλ
u_char WorkMode; // <20><>ʽ<EFBFBD><CABD>RS323<32><33>422<32><32>485
int Rs485WaitCnt; // 485 <20>л<EFBFBD><D0BB>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
u_char ChipCheckOk; // оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
u_char ChSelect; // оƬ<D0BE>ͺ<EFBFBD>
u_char FreqSelect; // оƬ<D0BE><C6AC><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
u_char WrRegMap[MAX_MAP_REG_NUM]; // оƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD>ӳ<EFBFBD><D3B3>
u_char HandshakeMode; // ͨѶ<CDA8><D1B6><EFBFBD>ַ<EFBFBD>ʽ
u_char XonChar1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ON<4F>ַ<EFBFBD>1
u_char XonChar2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ON<4F>ַ<EFBFBD>2
u_char XoffChar1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OFF<46>ַ<EFBFBD>1
u_char XoffChar2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OFF<46>ַ<EFBFBD>2
//**********************************************************
} SIO_PARAM_SERIAL_DEF;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
typedef struct
{
//******************** <20>˿ڻ<CBBF><DABB><EFBFBD><EFBFBD><EFBFBD>Ϣ ************************
u_char ProtocolIdx; // <20><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
u_char ByPassFlag; // <20><>·<EFBFBD><C2B7>־
u_char OpenFlag; // <20>򿪱<EFBFBD>־(<28>ñ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>)
u_char Status; // <20>˿<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж϶˿<CFB6><CBBF>Ƿ<EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
// <20>ڶ˿<DAB6><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δȫ<CEB4><C8AB>ˢ<EFBFBD>µ<EFBFBD><C2B5>µ<EFBFBD><C2B5>ұ<EFBFBD><D2B1><EFBFBD>
int iDelaySendAllData;// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD>ӳٴ<D3B3><D9B4><EFBFBD>
int iForceSendFlag; // ǿ<><C7BF><EFBFBD>·<EFBFBD><C2B7><EFBFBD>־
//******************** <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ ************************
u_char NetType; // UDP_COMM<4D><4D>TCP_S_COMM<4D><4D>TCO_C_COMM
DWORD NetPort; // <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>˿<EFBFBD>
u_long NetCommIpAddr; // <20><><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6>ַ
int LiSock; // <20><><EFBFBD><EFBFBD>socket
int CommSock; // ͨѶsocket
//**********************************************************
//******************** <20><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***********************
DATA_BUF RecvBuf; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
struct WR_DATA *WriteData; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
//******************** ͳ<><CDB3><EFBFBD><EFBFBD>Ϣ ****************************
u_long MsgNum; // <20>˿<EFBFBD><CBBF><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
u_long LostSyncCnt; // <20>˿<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u_long ErrMsgNum; // <20>˿ڴ<CBBF><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
u_long RecvCharNum; // <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͳ<EFBFBD><CDB3>
u_long SendCharNum; // <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͳ<EFBFBD><CDB3>
u_long LineCommCnt; // <20>˿<EFBFBD><CBBF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
//****************** <20><><EFBFBD>ж˿<D0B6><CBBF><EFBFBD>Ϣ **************************
SIO_PARAM_SERIAL_DEF *m_psSerial;
//**********************************************************
//******************* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ *****************************
SIO_PARAM_BAOHU_DEF *m_psBaoHu;
//**********************************************************
//******************** <20>û<EFBFBD><C3BB><EFBFBD>չ<EFBFBD>ṹ ************************
void *ExtInfo;
//**********************************************************
} SIO_PARAM_DEF;
typedef struct
{
u_long AllIpAddr[MAX_NET_NUM];
u_long NetMaskIpAddr[MAX_NET_NUM];
u_long BroadCastIpAddr[MAX_NET_NUM];
u_long MainIpAddr[MAX_NET_NUM];
} HOST_IP_ADDR;
typedef struct
{
WORD PortNumber;
SOCKET Socket;
struct sockaddr_in Addr;
u_char WaitFalg;
} UDP_SET_DEF;
typedef struct
{
int LineCnt;
int Front;
int Rear;
char Line[MAX_DISP_LINE][128];
} DISP_LINE_BUF;
typedef struct
{
u_long IpAddr[MAX_NET_NUM];
u_char NetNum;
u_long CurCommIp;
u_char IpAddrChangeFlag;
u_char NetCardMacCode[MAX_NET_NUM][NET_MAC_LEN];
u_char ReadMacCodeFlag;
u_char PortNum;
u_char SerialPortNum;
u_char NetPortNum;
DISP_LINE_BUF WatchDispLine;
} DEV_DEF;
// wen 2005.05.27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĵ洢<C4B4>ṹ)
/*!
\struct GROUPDATADEF
\brief ͨ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><EFBFBD><EFBFBD>
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct
{
/*!
\var GROUPDATADEF::m_szName
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>ASCII<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>Ϊ64]\n
*/
char m_szName[66];
/*!
\var GROUPDATADEF::m_u32DataID
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[DATAID_NO(0)---DATAID_SINGLE(10)]\n
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪDATAID_NO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u_32 m_u32DataID;
/*!
\var GROUPDATADEF::m_fValue
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ֵ
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ\n
*/
float m_fValue;
/*!
\var GROUPDATADEF::m_fMaxValue
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ\n
*/
float m_fMaxValue;
/*!
\var GROUPDATADEF::m_fMinValue
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ\n
*/
float m_fMinValue;
/*!
\var GROUPDATADEF::m_fStepValue
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ֵ
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ\n
*/
float m_fStepValue;
/*!
\var GROUPDATADEF::m_szUnit
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>ASCII<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>Ϊ16]\n
*/
char m_szUnit[18];
/*!
\var GROUPDATADEF::iFixDataType
\brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>protect<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0-255](<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AI=1, DI=2))\n
*/
u_char iFixDataType;
}GROUPDATADEF;
/*!
\struct GROUPEVENTDEF
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct{
/*!
\var GROUPEVENTDEF::m_iNewEventNo
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--(BUF_EVENT_NUM-1)=15]\n
*/
i_32 m_iNewEventNo;
/*!
\var GROUPEVENTDEF::m_iNewEvents
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--16]\n
*/
i_32 m_iNewEvents;
/*!
\var GROUPEVENTDEF::m_iAllEvents
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--16]\n
*/
i_32 m_iAllEvents;
/*!
\var GROUPEVENTDEF::m_sTm[]
\brief <EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
*/
//SYSTEMTIME m_sTm[BUF_EVENT_NUM];
/*!
\var GROUPEVENTDEF::m_u8INF[]
\brief <EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
// BYTE m_u8INF[BUF_EVENT_NUM];
}GROUPEVENTDEF;
/*!
\struct GROUPDEF
\brief ͨ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵͨ<EFBFBD>ô<EFBFBD>
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct{
/*!
\var GROUPDEF::m_iGroupNo
\brief ͨ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255]\n
*/
i_32 m_iGroupNo;
/*!
\var GROUPDEF::m_iStartItemNo
\brief ͨ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255]\n
*/
i_32 m_iStartItemNo;
/*!
\var GROUPDEF::m_iDataType
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>AI_PNT_TYPE(ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\n
DI_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\n
PI_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\n
PROTECT_AI_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\n
PROTECT_DI_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\n
PROTECT_FIX_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ)\n
PROTECT_EVENT_PNT_TYPE(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>)\n
*/
i_32 m_iDataType;
/*!
\var GROUPDEF::m_iStationNo
\brief д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>еij<EFBFBD>վ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--MAX_PORT_NUM<EFBFBD><EFBFBD>0Ϊ<EFBFBD><EFBFBD>Ч(ȱʡֵ)]\n
*/
i_32 m_iStationNo;
/*!
\var GROUPDEF::m_iStartPntNo
\brief д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1)]\n
*/
i_32 m_iStartPntNo;
/*!
\var GROUPDEF::m_u8NGD
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>NGD
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1)]\n
*/
BYTE m_u8NGD;
/*!
\var GROUPDEF::m_pu8DataType
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
*/
BYTE *m_pu8DataType;
/*!
\var GROUPDEF::m_pu8DataLen
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
*/
BYTE *m_pu8DataLen;
/*!
\var GROUPDEF::m_pu8GIN
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
*/
BYTE *m_pu8GIN;
/*!
\var GROUPDEF::m_u32CurPntNo
\brief <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[1--255]\n
\note
<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͨ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u_32 m_u32CurPntNo;
/*!
\var GROUPDEF::m_iPntNum
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ص<EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
i_32 m_iPntNum;
/*!
\var GROUPDEF::m_bInit
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
*/
BOOL m_bInit;
/*!
\var GROUPDEF::m_psDataInfo
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣָ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n
*/
GROUPDATADEF *m_psDataInfo;
/*!
\var GROUPDEF::m_psEventInfo
\brief <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ΪNULL\n
*/
GROUPEVENTDEF *m_psEventInfo;
}GROUPDEF;
/*!
\struct DBINFO
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct{
/*!
\var DBINFO::m_u8Asdu
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255)]\n
*/
u_char m_u8Asdu; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// wen 2006.05.20 <20>޸<EFBFBD>Ϊ16λ
/*!
\var DBINFO::m_u8Fun
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255)]\n
*/
WORD m_u8Fun; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
\var DBINFO::m_u8Inf
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255]\n
*/
WORD m_u8Inf; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
// <20><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
/*!
\var DBINFO::m_u8ProvFun
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255)]\n
*/
BYTE m_u8ProvFun;
/*!
\var DBINFO::m_u8ProvInf
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255]\n
*/
BYTE m_u8ProvInf;
/*!
\var DBINFO::m_u8LoopData
\brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--1]\n
*/
BYTE m_u8LoopData;
}DBINFO, *pDBINFO;
/*!
\struct DBORIENTATION
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ݿλ<EFBFBD>
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct
{
/*!
\var DBORIENTATION::m_iStnNo
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[1--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>)]\n
*/
i_32 m_iStnNo; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>վ<EFBFBD><D5BE>
/*!
\var DBORIENTATION::m_iStartPntNo
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵ
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1)]\n
*/
i_32 m_iStartPntNo; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
/*!
\var DBORIENTATION::m_iPntNum
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[0--255]\n
*/
i_32 m_iPntNum; // <20><><EFBFBD><EFBFBD>
/*!
\var DBORIENTATION::m_psDataInfo
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣָ<EFBFBD><EFBFBD>
*/
pDBINFO m_psDataInfo;
}DBORIENTATION;
typedef struct tagDEVADDRPARAM
{
/*!
\var DEVADDRPARAM::m_uchLinkAddr
\brief <EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>ַ
*/
BYTE m_uchLinkAddr;
/*!
\var DEVADDRPARAM::m_uchCommAddr
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
*/
BYTE m_uchCommAddr;
/*!
\var DEVADDRPARAM::m_iLinkIdx
\brief <EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iLinkIdx;
/*!
\var DEVADDRPARAM::m_iDevIdx
\brief װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iDevIdx;
}DEVADDRPARAM, *pDEVADDRPARAM;
typedef struct tagCMDPARAM
{
/*!
\var CMDPARAM::m_uchFun
\brief ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD>
*/
BYTE m_uchFun;
/*!
\var CMDPARAM::m_uchInf
\brief ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*/
BYTE m_uchInf;
/*!
\var CMDPARAM::m_uchRII
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
BYTE m_uchRII;
/*!
\var CMDPARAM::m_sDevAddr
\brief ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ϣ
*/
DEVADDRPARAM m_sDevAddr;
}CMDPARAM, *pCMDPARAM;
typedef struct tagBAOHUPROVPARAM
{
/*!
\var BAOHUPROVPARAM::m_sProvStartTime
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ʱ<EFBFBD><EFBFBD>
*/
DAY_TIME m_sBaoHuCmdStartTime;
/*!
\var BAOHUPROVPARAM::m_iBaoHuCommid
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
\note <0, û<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iBaoHuCommid;
/*!
\var BAOHUPROVPARAM::m_iBaoHuMsgType
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note <0, û<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iBaoHuMsgType;
/*!
\var BAOHUPROVPARAM::m_sProvRealAddrParam
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>װ<EFBFBD>õIJ<EFBFBD><EFBFBD><EFBFBD>
*/
DEVADDRPARAM m_sRealAddrParam;
}BAOHUPROVPARAM, *pBAOHUPROVPARAM;
#define PROV_SOE_MAX 10
/*!
\struct DEVPROVSOE
\brief ת<EFBFBD><EFBFBD>SOE<EFBFBD><EFBFBD><EFBFBD>ݽ
\par <EFBFBD><EFBFBD><EFBFBD>ٲο<EFBFBD>
common.h
*/
typedef struct
{
/*!
\var DEVPROVSOE::m_sSoeData
\brief ת<EFBFBD><EFBFBD>SOE<EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
*/
SOE_DEF m_sSoeData[PROV_SOE_MAX];
/*!
\var DEVPROVSOE::m_shSoeNum
\brief ת<EFBFBD><EFBFBD>SOE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
*/
short m_shSoeNum;
/*!
\var DEVPROVSOE::m_shFront
\brief ת<EFBFBD><EFBFBD>SOE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
*/
short m_shFront;
/*!
\var DEVPROVSOE::m_shRear
\brief ת<EFBFBD><EFBFBD>SOE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
*/
short m_shRear;
}DEVPROVSOE;
// <20><><EFBFBD>й<EFBFBD>Լ<EFBFBD><D4BC>ͨ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ӿ<EFBFBD>ָ<EFBFBD><D6B8>
typedef const struct tagFUNCTION_CALL
2 years ago
{
char *ProtocolName; // <20><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
char *Account; // <20><>Լ˵<D4BC><CBB5>
char **ProtocolInfo; // <20><>Լ<EFBFBD><D4BC>Ϣָ<CFA2><D6B8>
void (*ReadConfig)( int ); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*RecvData)( int, u_char *, int ); // <20><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
void (*Timer)( int ); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*YkYtProcess)( int, u_char *, int ); // ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*SendSystemTime)( int ); // ϵͳ<CFB5><CDB3>ʱ
void (*ProtocolExit)( int ); // <20><>Լ<EFBFBD>˳<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>Ч
void (*BaoHuCmdProcess)(int, RTUMSG *, BOOL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
int (*GetBaohuDataBase)(int, int, GROUPDEF **); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
}FUNCTION_CALL;
#ifdef OS_WINDOWS
#pragma pack (pop)
#else// OS_UNIX
#pragma pack (0)
#endif //OS_UNIX
#endif