📄 eroomnet.h
字号:
#ifndef EROOMNET_DEF
#define EROOMNET_DEF
#include "WiseNet.h"
#define DEF_ERM_PORT 4031
#define DEF_ERM_SPORT 4054
#if 1 // 1雀父 角青
#define EN_TRYCNT 1
#define EN_WAITTIME 20
#else
#define EN_TRYCNT 3
#define EN_WAITTIME 20
#endif
//////////////////////////////////////////////////////////////////////////////////////////
// CHECK BYTE
// 菊 8 BIT固荤侩
//
// +--+--+--+--+--+--+--+--+
// |CN|RN|CO|RE|NONE |PF|PL|
// +--+--+--+--+--+--+--+--+
// | 0| 1| 2| 3| 4| 5| 6| 7|
// +--+--+--+--+--+--+--+--+
//
// NO: NO USE
//
#define EN_CONFIRM_NEED 0x0080 // 00000000 10000000 => CN: CONFIRM NEED单捞鸥啊 档馒沁绰瘤 犬牢捞 鞘夸茄版快 ==> 100% 犬角洒 傈崔窍绊 酵篮 版快
// 焊辰螟俊辑绰 档馒且锭鳖瘤 扁促覆
#define EN_ANSWER_NEED 0x0040 // 00000000 01000000 => RN: ANSWER NEED 单捞鸥甫 焊辰螟俊辑 览翠皋技瘤甫 扁促覆
#define EN_CONFIRM 0x0020 // 00000000 00100000 => CONFIRM PACKET
#define EN_ANSWER 0x0010 // 00000000 00010000 => ANSWER PACKET
// ANSWER, CONFIRM矫浚 焊辰 SEQ甫 啊瘤绊 柯促.
#define EN_PACKET_FIRST 0x0002 // 00000000 00000010 => PF: FISRT PACKET
#define EN_PACKET_LAST 0x0001 // 00000000 00000001 => PL: LAST PACKET
#define EN_PACKET_ONLY 0x0003 // 00000000 00000011 => 1俺 楼府 PACKET(EN_PACKET_FIRST|EN_PACKET_LASF)
// 00 捞搁 吝埃 菩哦
// EN_CONFIRM_NEED 肚绰 EN_ANSWER_NEED 菩哦篮 馆靛矫 EN_PACKET_ONLY捞促.
struct __ERM_PACKET_HEAD {
unsigned char m_Code[2]; // Identifier ==> 2BYTE CHECK
unsigned short m_Check; // define 曼炼
unsigned short m_Sequence; // 皋技瘤 老纺锅龋 ==> (辑滚俊辑)览翠矫俊绰 秦寸 锅龋荤侩 (1~何磐)
// 辑滚俊辑 老规傈价矫绰 0
unsigned short m_RSequence; // RETURN SEQUENCE ==> ANSWER/CONFIRM矫俊父 荤侩
unsigned short m_CheckSum; // ANSWER牢版快 盔贰 龙巩俊 措翠犬牢阑 困茄 锅龋
unsigned short m_RCheckSum; // RETURN CHECKSUM
unsigned short m_Cmd; // USER COMMAND (0 ~ )
unsigned short m_Option; // USER COMMAND OPTION ==> ANSWER牢 版快浚 RCmd啊 等促 (盔贰 龙巩狼 夸备疙飞)
unsigned short m_ECode; // ERROR CODE
unsigned short m_Len; // Data Len;
};
typedef struct __ERM_PACKET_HEAD ERMPACKETHEAD;
#define ERM_PACKETHEAD_SIZE sizeof(ERMPACKETHEAD) // 20 BYTE
#define ERM_PACKETDATA_SIZE 1200
struct __ERM_PACKET {
ERMPACKETHEAD m_Head;
unsigned char m_Data[ERM_PACKETDATA_SIZE];
};
typedef struct __ERM_PACKET ERMPACKET;
// FLAG
#define EN_INUSE_FLAG 0x0001 // 荤侩窍绰 瘤 咯何 敲贰弊
#define EN_SEND_FLAG 0x0002 // 单捞鸥 焊陈绰瘤咯何 敲贰弊
struct __ERM_QUEUE {
unsigned short m_Flag; // define 曼炼
unsigned short m_RCheck; // 档馒单捞鸥 眉农 m_Check客 鞍澜
// ==> 档馒窍搁 NEED FLAG甫 OFF
unsigned short m_RQIndex; // 档馒 单捞鸥 困摹
unsigned short m_Dummy;
int m_Port; // 惑措 器飘(傈价且锭/荐脚且锭)
char m_Ip[64]; // 惑措 IP(傈价且锭/荐脚且锭)
ERMPACKETHEAD m_Head;
unsigned char *mp_Data; // 单捞鸥 沥焊 ==> new肺 秦辑 且寸窍霸凳
};
typedef struct __ERM_QUEUE ERMQUEUE;
#define MAX_SQUEUENUM 1024 // SEND_QUEUE狼 箭磊
#define MAX_RQUEUENUM 1024 // RECV_QUEUE狼 箭磊
// RESERVED CMD (0~1023) 1024~65535 荤侩磊 烙狼 荤侩备埃
#define EN_CMD_NONE 0
#define EN_CMD_POLLING 1
#define EN_CMD_REGIST 2
#define EN_CMD_USER 1024
// RESERVED ERROR NUMBER (0~1023) 0~65535狼 剧狼 沥荐 ==> 唱吝俊 -甫 嘿咯 府畔
// 1024~65535 荤侩磊 备埃
#define EN_ERR_SEND 1 // SEND ERROR
#define EN_ERR_CANCEL 2 // 秒家登菌澜
#define EN_ERR_USER 1024
class CEroomNet : public CWiseNet
{
public:
int m_Mode;
int m_TryCnt; // 扁夯 馆汗 冉荐
int m_WaitTime; // 扁夯 冉荐喊 措扁 矫埃
int m_CancelFlag; // 角青秒家 敲贰弊
int m_Sequence; // 泅犁 Sequence Number (1 ~ MAX_QUEUENUM) ==> SEND QUEUE INDEX
// QUEUE俊 历厘捞 救瞪锭绰 刘啊啊 救凳 ==> 0 ==> (茄率狼 老规傈价 肚绰 览翠捞 鞘夸绝阑 版快)
unsigned char m_Code[4]; // ID眉农巩磊
int m_RecvQIndex; //
ERMQUEUE m_SendQ[MAX_SQUEUENUM];
ERMQUEUE m_RecvQ[MAX_RQUEUENUM];
public:
CEroomNet(int a_QueueFlag);
~CEroomNet();
virtual void SetCode(char *ap_Code) { m_Code[0] = ap_Code[0];m_Code[1]= ap_Code[1];m_Code[2]=0; };
virtual void GetCode(char *ap_Code) { ap_Code[0] = m_Code[0];ap_Code[1]= m_Code[1];ap_Code[2]=0;};
virtual char *GetCode() { return((char *)m_Code); };
virtual bool CheckCode(char *ap_Code) { if(ap_Code[0] != m_Code[0] || ap_Code[1] != m_Code[1]) { return(FALSE);} return TRUE; };
virtual int SetWaitTime(int a_Time) { int w_OldTime = m_WaitTime; m_WaitTime = a_Time * 1000; return(w_OldTime); };
virtual int SetTryCnt (int a_Cnt) { int w_OldCnt = m_TryCnt; m_TryCnt = a_Cnt; return(w_OldCnt); };
virtual int GetWaitTime() { return(m_WaitTime); };
virtual int GetTryCnt() { return(m_TryCnt); };
virtual void CancelSending() { m_CancelFlag = 1; };
int SetRecvFunc(int (*ap_RecvFunc)(char *ap_Ip, int ar_Port, char *ap_Buff, int w_Len), int a_WaitTime = WN_NOWAIT);
virtual int Send(char *ap_Ip, int a_Port, ERMPACKET *ap_Packet);
virtual int Recv(char *ap_Ip, int &ar_Port, char *ap_Buff, int &ar_Len);
int GetRecvData(ERMQUEUE *ap_Packet, int a_Index);
ERMQUEUE *GetRecvData(int a_Index);
virtual void SendConfirm(char *ap_Ip, int a_Port, USHORT a_Seq, USHORT a_CheckSum);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -