有点麻烦的问题,请帮忙看看
我编写的客户端通过TCP/IP抓取到服务器发送的数据包,现在我的问题是,我要如何去解码这个数据包?目前我知道的对数据包的定义如下
DWORD wFlag; //四字节数据包头标志 0x67FDFDFD
BYTE iCtrlType; //控制码
//D7....D0 D7=0表示下行(上位机->下位机) =1则相反
//D6...D0
const int ACT = 0; //激活连接,主要任务是保持连接,以免被控制系统强行断开。---
const int DEVICE_PARAM = 1; //召唤设备参数----
const int CALL_ALL = 2; //召唤所有实时数据----
const int YKCMD = 3; //遥控命令
const int GET_TIME = 4; //读系统时间
const int SET_TIME = 5; //设置系统时间
const int RESET = 6; //复位系统
const int GET_INFO = 7; //取信息
const int GET_YC_HIST = 8; //取模拟量历史数据
const int GET_YX_HIST = 9; //取状态量历史数据
const int SET_GJG_PARAM = 10; //设置工具柜参数
const int GET_GJG_PARAM = 11; //读工具柜参数
const int GET_PASSWORD = 12; //读密码
const int SET_PASSWORD = 13; //设置密码
const int GET_NAME = 14; //读单位名称
const int SET_NAME = 15; //设置单位名称
const int GET_NET = 16; //读网络参数
const int SET_NET = 17; //设置网络参数
const int GET_COM = 18; //读COM参数(发送间隔、超时)
const int SET_COM = 19; //设置COM参数(发送间隔、超时)
const int START_TRAN = 20; //启动变化数据自动传输----
const int STOP_TRAN = 21; //停止变化数据自动传输
const int GET_DX24 = 22; //读24位地线
const int SET_DX24 = 23; //设24位地线
const int START_CODE = 30; //启动发收码显示
const int STOP_CODE = 31; //停止发收码显示
WORD wPacketLength; //数据包长度(后面数据字节数,不含本数据)0
***************************
//获取设备配置参数(上行)
WORD wSumDeviceSize;//设备总个数
WORD wDeviceSize; //此包报文的设备个数
/////////
BYTE iPortNo; //通讯端口号---
BYTE iGjgNo; //所属工具柜号----
BYTE iType; //设备类型:1 - B型控制器; 10 - 24位地线状态控制器; 11 - 32地线状态控制器; 12 - 64地线状态控制器-----
WORD iHostAddr; //设备地址----
BYTE iYCDataSize; //YC数据个数
BYTE iYXDataSize; //YX数据个数----
WORD iYXFun; //遥信的功能----
WORD iYKFun; //遥控的功能
SHORT iYKYXNo; //YK对应的YX号 -1 表示无对应
BYTE iNameSize; //名称字节数-----
char *sName; //YX名称-----
......
WORD iYXFun; //遥信的功能
WORD iYKFun; //遥控的功能
SHORT iYKYXNo; //YK对应的YX号 -1 表示无对应
BYTE iNameSize; //名称字节数
char *sName; //YX名称
/////////
.....
////////
////////
//获取设备配置参数(上行)
//实时数据格式(上行)
WORD wDeviceSize; //设备个数
//第1个设备
BYTE iPortNo; //通讯端口号
BYTE iGjgNo; //所属工具柜号
BYTE iType; //设备类型:1 - B型控制器; 10 - 24位地线状态控制器; 11 - 32地线状态控制器; 12 - 64地线状态控制器
WORD iHostAddr; //设备地址
BYTE iYCDataSize; //YC数据个数
BYTE iYXDataSize; //YX数据个数
BYTE iStatus; //通讯状态 =状态常量
float * fYCData; //YC数据缓冲区 = ERRDATA 表示无效数据
BYTE * iYXData; //YX数据缓冲区 = 0 或 1 为有效数据(分、合) ,其它为无效数据
BYTE * iEnableDX; //是否放置接地线
......
//第n个设备
BYTE iPortNo; //通讯端口号
BYTE iGjgNo; //所属工具柜号
BYTE iType; //设备类型:1 - B型控制器; 10 - 24位地线状态控制器; 11 - 32地线状态控制器; 12 - 64地线状态控制器
WORD iHostAddr; //设备地址
BYTE iStatus; //通讯状态 =状态常量
BYTE iYCDataSize; //YC数据个数
BYTE iYXDataSize; //YX数据个数
float * fYCData; //YC数据缓冲区 = ERRDATA 表示无效数据
BYTE * iYXData; //YX数据缓冲区 = 0 或 1 为有效数据(分、合) ,其它为无效数据
BYTE * iEnableDX; //是否放置接地线
//实时数据格式(上行)
*/