118 lines
2.4 KiB
C
118 lines
2.4 KiB
C
|
|
/*********************************************
|
|||
|
|
*
|
|||
|
|
* Binary message organization and parsing
|
|||
|
|
*
|
|||
|
|
* copyright Shanghai Baosight Software Co., Ltd.
|
|||
|
|
*
|
|||
|
|
* create zoufuzhou 20201001
|
|||
|
|
*
|
|||
|
|
************************************************/
|
|||
|
|
#pragma once
|
|||
|
|
#ifdef _WIN32
|
|||
|
|
//#include <Winsock2.h>
|
|||
|
|
#else
|
|||
|
|
#include <netinet/in.h>
|
|||
|
|
#endif
|
|||
|
|
#include <iostream>
|
|||
|
|
#include <string>
|
|||
|
|
#include <vector>
|
|||
|
|
#include <map>
|
|||
|
|
#include <dao/TeleDAO.h>
|
|||
|
|
#include <base/ByteTool.h>
|
|||
|
|
#include <base/TypeCheck.h>
|
|||
|
|
#include <common/BasicStruct.h>
|
|||
|
|
#include <dao/LimitsMag.h>
|
|||
|
|
#include <glob/GlobDefine.h>
|
|||
|
|
|
|||
|
|
|
|||
|
|
using namespace std;
|
|||
|
|
using namespace baosight;
|
|||
|
|
|
|||
|
|
|
|||
|
|
typedef vector<TeleItem* > TVectItem;
|
|||
|
|
|
|||
|
|
class BinaryTele
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
BinaryTele(int eventNo=9999,const string& table = "T_LOV_TELEITEM");
|
|||
|
|
virtual ~BinaryTele();
|
|||
|
|
int ReBuild(int eventNo,const char* buff);
|
|||
|
|
int ReBuild(int eventNo);
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int Read(int eventNo);
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֵ*/
|
|||
|
|
TeleItem& operator[]( int elem );
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֵ*/
|
|||
|
|
TeleItem& operator[]( const string& itemName);
|
|||
|
|
|
|||
|
|
// get index NO. of tele columns ,start No. is :0
|
|||
|
|
int GetItemIndex(const string &itemName);
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֯<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7>ߵ<EFBFBD><DFB5>ֽ<EFBFBD>ת<EFBFBD><D7AA>*/
|
|||
|
|
char* GetTeleData(bool htol_byte = true);
|
|||
|
|
|
|||
|
|
/*ȡ<><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>*/
|
|||
|
|
vector<string>& GetTables();
|
|||
|
|
|
|||
|
|
/*ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>const string& dbtable <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MUCODE
|
|||
|
|
const string dbwhere <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>֯where<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
int Fill(const string& dbtable, const string& dbwhere);
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ*/
|
|||
|
|
void Print(void);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
const int size(void) const;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
const int TeleLen() const;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static int GetTeleConf(int eventNo,TeleConf& conf);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD>ֵ<EFBFBD><D6B5>Ĵ<EFBFBD>*/
|
|||
|
|
int SplitTele(const char* buffer);
|
|||
|
|
|
|||
|
|
//<2F><>֯<EFBFBD><D6AF><EFBFBD><EFBFBD> ,<2C><><EFBFBD>ߵ<EFBFBD><DFB5>ֽ<EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
|
int OrganizeTele(bool htol_byte = true);
|
|||
|
|
|
|||
|
|
//zero item value
|
|||
|
|
void InitValue(void);
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
void reverse_string(char *left, char *right);
|
|||
|
|
|
|||
|
|
TeleItem& IsNuLL();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
|
|||
|
|
vector<string> mv_table;
|
|||
|
|
TVectItem *mp_itemvect; //<2F><><EFBFBD>ŵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
|
int m_teleLen; //store current bufferlen;
|
|||
|
|
static map<int, TVectItem* > *mp_telemap; //<2F><><EFBFBD>Ľṹ<C4BD>أ<EFBFBD><D8A3>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>չ<EFBFBD>ĵ<EFBFBD><C4B5>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
|
|
|||
|
|
static map<int,TeleConf> mm_teleconf; //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
TeleItem itemnull; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
static TeleDAO* mp_teledao;
|
|||
|
|
|
|||
|
|
std::string m_table;
|
|||
|
|
char m_buff[102400];
|
|||
|
|
|
|||
|
|
|
|||
|
|
};
|