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.

292 lines
9.8 KiB
C

2 years ago
/************************************************************************************
*
* Copyright (C) 2004-2005 SCADA Control Technology Co., Ltd.
* All rights reserved.
*
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>buban104.h
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>104<EFBFBD><EFBFBD>Լ
* ժ Ҫ<EFBFBD><EFBFBD>104<EFBFBD><EFBFBD>Լ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>1.0
* <EFBFBD><EFBFBD> <EFBFBD>ߣ<EFBFBD>aaawen
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>2005/09/14
*
* ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.0
* ԭ<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>
* u8 --- BYTE(usigned char)
* ch --- char
* w --- WORD(u_short, usigned short)
* sh --- short
* b --- BOOL(bool)
* i --- int
* l --- long
* u32 --- u_32
* ui --- unsigned int(u_int)
* ul --- unsigned long(u_long)
* f --- float
* db --- double
* c --- class
* s --- struct
* sta --- static
* g --- ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>
* Array --- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* a --- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* m_ --- <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա
* p --- ָ<EFBFBD><EFBFBD>
* str --- <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>
**************************************************************************************/
// buban104.h: interface for the buban104 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(_BUBAN104_H_200509141152__INCLUDED_)
#define _BUBAN104_H_200509141152__INCLUDED_
#ifdef OS_LINUX
#include "baohulib/common.h"
#else
#include "common.h"
#endif
//////////////////////////////////////////////////////////////////////////
// <09><EFBFBD><EAB6A8> //
// WEN 2005.09.08 //
//////////////////////////////////////////////////////////////////////////
#define MAX_104_PINUM 30
#define FORMAT_I 14 // I-<2D><>ʽ
#define FORMAT_S 15 // S-<2D><>ʽ
#define FORMAT_U_START_ACT 16 // U-<2D><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#define FORMAT_U_START_CON 17 // U-<2D><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
#define FORMAT_U_STOP_ACT 18 // U-<2D><>ʽֹͣ
#define FORMAT_U_STOP_CON 19 // U-<2D><>ʽֹͣӦ<D6B9><D3A6>
#define FORMAT_U_TEST_ACT 20 // U-<2D><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#define FORMAT_U_TEST_CON 21 // U-<2D><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
// <20><>ʱ<EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD><EEBCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BUBAN104_TIMER_CMD_NUM 3 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define MAX_SEQUENCE 0x7fff // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
#define MAX_FRAMEMATCHING_SIZE 2 // ֡<><D6A1>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>
// <20><>Լ<EFBFBD><EFBFBD><E6B1BE>
#define VER_BUBAN_104 0 // <20><><EFBFBD><EFBFBD>104
#define VER_IEC870_5_104 1 // IEC104
/////////////////////////////<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>/////////////////////////////////
typedef struct
{
long CmdTimerCnt;
long CmdTimerConst;
} BUBAN104CMDDEF;
typedef struct tagBUBAN104PORTPARAM
{
BOOL LinkOk; // <20><>վ<EFBFBD><D5BE>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־ 1:ok; 0:no <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1>FALSE
BOOL Initdata; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>־ TRUE<55><45><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>֡
// FALSE<53><45>δ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>֡
// <20>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD>ȱ<EFBFBD>־ TRUE<55><45><EFBFBD>յ<EFBFBD><D5B5>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>֡
// FALSE<53><45>δ<EFBFBD>յ<EFBFBD><D5B5>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>֡
WORD wLinkAddr; // <20><>ַ<EFBFBD><D6B7>
WORD wSendSequence; // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
WORD wRecvSequence; // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
WORD wAckSequence; // Ӧ<><D3A6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
BOOL bAckRight; // Ӧ<><D3A6>֡<EFBFBD>Ƿ<EFBFBD>ͬ<EFBFBD><CDAC> (<28><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>Ч)
BOOL bStopComm; // ͨѶֹͣ
BOOL bSendFormatI;
BYTE ProvAckOrNot; // ת<><D7AA><EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA>Ӧ<EFBFBD><D3A6>
long lTimeOutSendTest;// <20><>ʱ<EFBFBD><CAB1><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֡
long lTimeOutConst; // <20><>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long lTimeOutCnt; // <20><>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long lYkYtAckTimeConst;// <20><>У<EFBFBD><D0A3>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long lYkYtAckTime; // <20><>У<EFBFBD><D0A3>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL bCloseSocket; // <20>ر<EFBFBD>socket<65>˿<EFBFBD>
char YkCmdBuf[32]; // ң<><D2A3><EFBFBD>ӳٷ<D3B3><D9B7>ͷ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long lYkCmdBuflen; // ң<><D2A3><EFBFBD>ӳٷ<D3B3><D9B7>ͷ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>
long m_lNoDataCnt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֡
short RtuVersion; // <20><EFBFBD><E6B1BE>
int m_iPublishYear; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(ȱʡΪ2000<30><30>)
short CurCmdIdx;
short YkMode; // ң<>ط<EFBFBD>ʽ(=0<><30>˫<EFBFBD><CBAB>ң<EFBFBD>أ<EFBFBD>=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>أ<EFBFBD>=2<><32>ֱ<EFBFBD>ط<EFBFBD>ʽ)
// wen 2005.01.15 <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
int iAiBaseAddr; // ң<><D2A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
int iDiBaseAddr; // ң<><D2A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
int iPiBaseAddr; // ң<><D2A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
int iYkBaseAddr; // ң<><D2A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
BYTE m_au8RecvBuf[300];
int m_iRecvLen;
int m_iFrameSize; // ֡<><D6A1>Ӧ<EFBFBD><D3A6><EFBFBD>ߴ<EFBFBD>
BYTE m_bProvAiType; // ת<><D7AA>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>ʶ
BUBAN104CMDDEF CmdTime[BUBAN104_TIMER_CMD_NUM];
SIO_PARAM_BAOHU_DEF *m_psBaoHu; // <20>ù<EFBFBD>Լ<EFBFBD>Ķ˿<C4B6><CBBF><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
} BUBAN104PORTPARAM, *pBUBAN104PORTPARAM;
/////////////////////////<2F><><EFBFBD><EFBFBD>Ϊͨ<CEAA>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ӿ<EFBFBD>///////////////////////////
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
*/
void Buban104ReadConfig(int commid); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
\param buf -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void Buban104RecvData(int commid, u_char *buf, int len);// <20><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
/*!
\brief <EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
*/
void Buban104Timer(int commid); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
\brief ң<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
\param buf -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void Buban104YkYtProcess(int commid, u_char *buf, int len); // ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
\brief ϵͳ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
*/
void Buban104SendSystemTime(int commid); // ϵͳ<CFB5><CDB3>ʱ
/*!
\brief ϵͳ<EFBFBD>˳<EFBFBD>ʱ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
*/
void Buban104Exit(int commid); // <20><>Լ<EFBFBD>˳<EFBFBD>
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\param rtumsg -- <EFBFBD>·<EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\note
ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0 -- MaxSerialPortNum + MaxNetPortNum -1\n
*/
void Buban104BaoHuCmdProcess(int commid, RTUMSG *rtumsg, BOOL bUpData);
/*!
\brief ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>
\param commid -- <EFBFBD>˿ں<EFBFBD>
\param iProvAddr -- ͳһ<EFBFBD><EFBFBD><EFBFBD>ŵı<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
\param ppBaoHuDB -- <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>װ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int Buban104GetBaohuDataBase(int commid, int iProvAddr, GROUPDEF **ppBaoHuDB);
/////////////////////////ͨ<>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ӿڽ<D3BF><DABD><EFBFBD>///////////////////////////////
/////////////////////////buban104<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>///////////////////////////
//ָ<><EFBFBD><EEBBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
void InitBuban104CommandBuffer(int commid);
//<2F>ر<EFBFBD>socketͨѶ
void Buban104CloseSocket(u_32 commid);
/////////////////////////buban104<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڽ<D3BF><DABD><EFBFBD>///////////////////////
/////////////////////////<2F><><EFBFBD><EFBFBD>Ϊͨ<CEAA>ú<EFBFBD><C3BA><EFBFBD>֧<EFBFBD>ֽӿ<D6BD>/////////////////////////
void Buban104ProvMakeYkYtCommand(int commid, u_char *buf, int len);
/////////////////////////ͨ<>ú<EFBFBD><C3BA><EFBFBD>֧<EFBFBD>ֽӿڽ<D3BF><DABD><EFBFBD>///////////////////////////
///////////////////////////<2F><><EFBFBD><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD>///////////////////////////
//<2F><><EFBFBD><EFBFBD> Buban104 <20><><EFBFBD><EFBFBD>?
void MakeBuban104Command(u_32 commid, u_char cmdidx);
//<2F><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3>ң<EFBFBD><D2A3>ָ<EFBFBD><D6B8>
void MakeBuBan104YkYtCommand(u_32 commid, u_char *buf, int len);
///////////////////////////ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/////////////////////////////
/////////////////////<2F><><EFBFBD><EFBFBD>ΪPOLLING<4E><47>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><E6BAAF><EFBFBD>ӿ<EFBFBD>//////////////////////
void Buban104FindNextCmd(int commid);
void Buban104FindNextProvCmd(int commid);
void Buban104SendCmdFormPollCmdBuf(int commid);
//////////////////////POLLING<4E><47>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><E6BAAF><EFBFBD>ӿڽ<D3BF><DABD><EFBFBD>///////////////////////
///////////////////////<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>///////////////////////////
//======================<3D><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>վ<EFBFBD><D5BE><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>============================
void Buban104ProcessData(u_32 commid, BUBAN104PORTPARAM *psPortParam, BOOL bProcess);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽI
void Buban104FormatI(RTUMSG *rtumsg);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽU
void Buban104FormatU(RTUMSG *rtumsg);
//Buban104 <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
void Buban104InitdataProecss(RTUMSG * rtumsg);
//<2F><><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>֡
void Buban104PidataEnd(RTUMSG * rtumsg);
//<2F>趨ȷ<E8B6A8><C8B7>
void Buban104SetAck(RTUMSG *rtumsg);
//Buban104 ң<><D2A3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
void Buban104YkYtAck(RTUMSG * rtumsg);
//Buban104 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
void Buban104SynTime(RTUMSG * rtumsg);
// <20><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ű<EFBFBD>λ֡
void Buban104AutoSendDiProcess(RTUMSG *rtumsg);
void Buban104AiWithPzDataProcess(RTUMSG *, int);
void Buban104AllAiDataProcess(RTUMSG *rtumsg);
void Buban104AllFloatAiDataProcess(RTUMSG *rtumsg);
void Buban104DiDataProcess(RTUMSG *rtumsg, int);
void Buban104SoeDataProcess(RTUMSG *rtumsg, int);
void Buban104PiDataProcess(RTUMSG * rtumsg);
void Buban104PiWithTimeDataProcess(RTUMSG *rtumsg);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
void Buban104BaoHuDataProcess(RTUMSG *rtumsg);
void Buban104DefaultBaoHuDataProcess(RTUMSG *rtumsg);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7 BYTE <20><>ʱ<EFBFBD><CAB1>
void Buban104SoeDataProcessWithCP56Time2a(RTUMSG *rtumsg, int flag);
void Buban104AiWithDataProcessWithM_ME_TD_1(RTUMSG * rtumsg);
void Buban104AiWithDataProcessWithM_ME_TE_1(RTUMSG * rtumsg);
void Buban104AiWithDataProcessWithM_ME_TF_1(RTUMSG * rtumsg);
void Buban104PiWithTimeDataProcessWithM_IT_TB_1(RTUMSG *rtumsg);
//======================<3D><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>վ<EFBFBD><D5BE><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>============================
void ProvBuban104dataProcess(int commid, RTUMSG *rtumsg);
void ProvBuban104FormatI(int commid, RTUMSG *rtumsg);
void ProvBuban104FormatU(int commid, RTUMSG *rtumsg);
void ProvBuban104FormatS(int commid, RTUMSG *rtumsg);
void ProvBuban104SendAllData(int commid, RTUMSG *rtumsg);
void ProvBuban104SendPIData(int commid, RTUMSG *rtumsg);
void ProvBuban104ProcessTime(int commid, RTUMSG *rtumsg);
//iGroupNo=0Ϊ<30><CEAA>Ӧ<EFBFBD><D3A6><EFBFBD>ٻ<EFBFBD>
void ProvBuban104SendPI(int commid, RTUMSG *rtumsg, int iGroupNo);
void ProvBuban104SendAI(int commid, RTUMSG *rtumsg, int iGroupNo);
void ProvBuban104SendDI(int commid, RTUMSG *rtumsg, int iGroupNo);
void ProvBuban104SendSoe(int commid);
void ProvBuban104YkYtData(int commid, RTUMSG *rtumsg);
void MakeProvBuban104YkYtAckMsg(int commid, int pnt, int op, int step);
void ProvBuban104SendClass1(int commid);
void ProvBuban104SendClass2(int commid);
void ProvMakeBuban104Command(int commid, u_char cmdidx);
void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo);
void ProvBuban104SendClass2withFloat(int commid);
/////////////////////////<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڽ<D3BF><DABD><EFBFBD>///////////////////////////
#endif // !defined(_BUBAN104_H_200509141152__INCLUDED_)