#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<yipulian.h>
#define MAX_DATA 1410 //1400+10
void Tostring(struct yipulian *ypl,char *buff,int String_len);
void main()
{
struct yipulian ypl;
char buff[]={0x7c,0x01,0x0b,0x5e,0x10,0x0a,0x0c,0x01,0x00,0x05,0x61,0x32,0x33,0x34,0x35};
int len;
int m;
// int n;
//int g;
short i=0;
short j=0;
len=(int)sizeof(buff);
/*目的地址*/
i=i|buff[0];
i=i<<8; //左移8位2进制
j=j|buff[1];
ypl.addr_dest=i|j;
printf("addr_dest=%0x\n",ypl.addr_dest);
/*目的端口*/
ypl.port_dest=buff[2];
printf("port_dest=%0x\n",ypl.port_dest);
/*源地址 WRONG*/
i=0;j=0;
i=i|buff[3];
i=i<<8; //左移8位2进制
j=j|buff[4];
ypl.addr_source=i|j;
printf("addr_source=%0x\n",ypl.addr_source);
/*源端口*/
ypl.port_source=buff[5];
printf("port_source=%0x\n",ypl.port_source);
/*传输码*/
ypl.fram_trass_code=buff[6];
printf("fram_trass_code=%0x\n",ypl.fram_trass_code);
/*FC*/
ypl.FC=buff[7];
printf("FC=%0x\n",ypl.FC);
/*data_LENTH*/
i=0;j=0;
i=i|buff[8];
i=i<<8; //左移8位2进制
j=j|buff[9];
ypl.data_LENTH=(int)(i|j);
printf("data_LENTH=%d\n",ypl.data_LENTH);
/*数据域指针*/
ypl.string=malloc(ypl.data_LENTH);
for(m=0;m<ypl.data_LENTH;m++)
{
*(ypl.string+m)=buff[10+m];
printf("0x%0x\n",*(ypl.string+m));
}
printf("字符串长度 %d\n",len);
#include<string.h>
#include<malloc.h>
#include<yipulian.h>
#define MAX_DATA 1410 //1400+10
void Tostring(struct yipulian *ypl,char *buff,int String_len);
void main()
{
struct yipulian ypl;
char buff[]={0x7c,0x01,0x0b,0x5e,0x10,0x0a,0x0c,0x01,0x00,0x05,0x61,0x32,0x33,0x34,0x35};
int len;
int m;
// int n;
//int g;
short i=0;
short j=0;
len=(int)sizeof(buff);
/*目的地址*/
i=i|buff[0];
i=i<<8; //左移8位2进制
j=j|buff[1];
ypl.addr_dest=i|j;
printf("addr_dest=%0x\n",ypl.addr_dest);
/*目的端口*/
ypl.port_dest=buff[2];
printf("port_dest=%0x\n",ypl.port_dest);
/*源地址 WRONG*/
i=0;j=0;
i=i|buff[3];
i=i<<8; //左移8位2进制
j=j|buff[4];
ypl.addr_source=i|j;
printf("addr_source=%0x\n",ypl.addr_source);
/*源端口*/
ypl.port_source=buff[5];
printf("port_source=%0x\n",ypl.port_source);
/*传输码*/
ypl.fram_trass_code=buff[6];
printf("fram_trass_code=%0x\n",ypl.fram_trass_code);
/*FC*/
ypl.FC=buff[7];
printf("FC=%0x\n",ypl.FC);
/*data_LENTH*/
i=0;j=0;
i=i|buff[8];
i=i<<8; //左移8位2进制
j=j|buff[9];
ypl.data_LENTH=(int)(i|j);
printf("data_LENTH=%d\n",ypl.data_LENTH);
/*数据域指针*/
ypl.string=malloc(ypl.data_LENTH);
for(m=0;m<ypl.data_LENTH;m++)
{
*(ypl.string+m)=buff[10+m];
printf("0x%0x\n",*(ypl.string+m));
}
printf("字符串长度 %d\n",len);
}
#ifndef __YIPULIAN__
#define __YIPULIAN__
#define addr_dest_lenth 2 //所占字节数不代表内容代表字节长度
#define addr_sour_lenth 2
#define port_dest_lenth 1
#define port_sour_lenth 1
#define fram_trass_lenth 1
#define FC_lenth 1
#define data_lenth 2 //定义数据域内容长度,0000代表数据源为空
//#define CRC_lenth 2
#define MAX_DATA_LENTH 1400 //定义数据长度最大为1400字节
允许数据域为空
struct yipulian
{
short addr_dest;
char port_dest;
short addr_source;
char port_source;
char fram_trass_code; //帧控制码及帧序号
char FC; //功能码
int data_LENTH; //数据长度 2byte
char *string; //指向数据域的指针
};
#endif