在使用Socket与雷达进行通信采集数据时,会遇到“打包与解包”的问题,在打包和解包过程中,会涉及到结构体指针与字符指针间的强制转换。如下:
打包就是将包头与信息封装成一定大小的包,作为发送单元进行发送。
1、首先将雷达数据格式进行打包:(把数据格式打包成一种结构体数据类型)
typedef struct _tag_OLE2D_Block
{
DWORD Header;//标识符//typedef unsigned long DWORD;
WORD ProtocolVersion;//协议版本WORD类型实际上就是一个无符号的短整型
BYTE Ratio; //距离比例
CHAR Manufactor[3];//品牌商代码
CHAR Model[12];//销售型号字符串
WORD ModelID;//内部型号代码
WORD HardwareVersion;//硬件版本
WORD SoftwareVersion;//软件版本
DWORD Timestamp;//时间戳(ms)
WORD Rotate;//转速
BYTE SafeStatus;//安全区域
BYTE ErrorStatus;//错误状态
DWORD Reserved[1];//保留
struct Point2D//结构里边有一个成员是结构
{
WORD Angle;
WORD Distance;
WORD Intensity;
WORD Reversed;
}Points[150];//11111111111111111111111111111111111111111111结构要扩展
}OLE2D_Block;//是一个数据结构(雷达反馈数据的数据结构,OLE2D_Block结构体的实例)