//------------------------------------------------------------------------------- // File Name: datadef.h // Brief: // Version: 1.0.0 // Create Date: 2017/05/08 // Create by: Marshal Lee // Copyright: // Copyright (c) 2017, Richpeace Co., LTD. // All rights reserved. // // Modify by: Marshal Lee // Modify Date: 2017/05/08 //------------------------------------------------------------------------------- #ifndef __DATADEF_H__ #define __DATADEF_H__ #include "typedef.h" #include "config.h" //------------------------------------------------------------------------- #define PATTERN_LARGE_NEEDLES 1280000 // 绝对位置数据 typedef struct { u8 ctrl; //控制字节 u8 attr; //属性字节 WORD action;//控制动作 double ax; //X位置 double ay; //Y位置 double ar; //R角度 }__attribute__ ((packed)) DsAbsItem; // 画图格式数据 typedef struct { u8 ctrl;//控制字节 u8 attr;//属性字节 WORD action;// 附加动作 s16 bx, by; s16 ex, ey; s16 ar;//角度 u32 rgb; }__attribute__ ((packed)) DispItem; // 执行数据定义 typedef struct { u8 ctrl; // 控制字节 u8 attr; // 属性字节 s16 dx; // X偏移 s16 dy; // Y偏移 s16 dr; // R偏移 u16 len; // xy分量合成长度 u8 action[2]; //附加动作 u8 rev[4]; // 保留 }__attribute__ ((packed)) DataItem, Ds16Item; // ds8格式 typedef struct { u8 ctrl; // 控制字节 u8 attr; // 属性字节 s16 dx; // X偏移 s16 dy; // Y偏移 s16 dr; // R偏移 }__attribute__ ((packed)) Ds8Item; // 兼容dsr格式 typedef struct { u8 ctrl; // 控制字节 u8 attr; // 属性字节 u8 dx; // X偏移 u8 dy; // Y偏移 }__attribute__ ((packed)) DsrItem, Ds4Item; // 双字节压缩格式 typedef struct { s8 cdx; // X数据 s8 cdy; // Y数据 /* 格式定义 cdx x分量控制数据 cdy y分量控制数据 每个字节的最低位为控制位,高7个位为数据位。数据位的最高位是符号位。 两个控制位合在一起形成4种控制数据,定义如下: cdx.0 cdy.0 0 0 缝纫数据,数据范围从-128 -- +126, 只有偶数可用(精度0.2mm),单位0.1mm 0 1 空走数据,数据范围从-128 -- +126, 只有偶数可用(精度0.2mm),单位0.1mm 1 0 大步空走数据,数据范围从-128 -- +126, 只有偶数可用(精度2mm),单位1mm 1 1 控制数据,数据位定义为控制码和参数 cdx 为控制码, cdx 为参数 */ }__attribute__ ((packed)) ToBItem, Ds2Item; #define PUNCHRADIUS 100 //冲孔半径(用于绘制图形) // ctrl 定义 // 控制字节, 作为功能码,定义如下 #define DATA_NULL 0x00 // 文件结束 #define DATA_SEWING 0x01 // 缝纫数据, 该数据需要缝纫机针扎一次(主轴可以转动多圈(如果有跳针功能的话)), 同时 X, Y,R 偏移运动dx,dy,dr, 框步进式运动或连续运动 #define DATA_OFFSET 0x02 // 偏移数据, 该数据只移动 X, Y,R 偏移 dx,dy,dr,连续运动 #define DATA_CUTTING 0x03 // 切刀数据, 该数据需要切刀先运转,同时 X, Y,R 偏移 dx,dy,dr,根据切刀类型选择动框方式 #define DATA_LASER 0x04 // 激光数据, 该数据需要激光出光, 同时X, Y,R偏移 dx,dy,dr,框连续运动,激光强度和运动线速度有关系 #define DATA_DRAWING 0x05 // 记号数据, 该数据需要记号笔先放下来, 同时X, Y,R偏移dx,dy,dr,框连续运动 #define DATA_SEWING_R 0x06 // 右机头缝纫,该数据需要缝纫机针扎一次(主轴可以转动多圈(如果有跳针功能的话)), 同时 X, Y,R 偏移运动dx,dy,dr, 框步进式运动或连续运动 #define DATA_SECF_SEW 0x11 // 第二框缝纫 #define DATA_SECF_OFST 0x12 // 第二框偏移 #define DATA_SECF_SEW_R 0x16 // 第二框右机头缝纫,该数据需要缝纫机针扎一次(主轴可以转动多圈(如果有跳针功能的话)), 同时 X, Y,R 偏移运动dx,dy,dr, 框步进式运动或连续运动 // 兼容DSR控制码 #define DATA_SYNCSEW 0x07 // 同步缝纫数据, 该数据需要缝纫机针扎一次, 同时 X, Y,R 偏移运动 dx,dy,dr,X2, Y2 也运动 dx,dy,框步进式运动或连续运动 #define DATA_PAUSE_OLD 0x08 // 暂停 #define DATA_ANGLE_OLD 0x09 // 拐点 #define DATA_CUT_OLD 0x0A // 剪线 #define DATA_END_OLD 0x10 // 结束码 #define DATA_JUMP 0x0B // 跳针数据,该数据要求缝纫机主轴不动, 但 X, Y,R 偏移运动 dx,dy,dr, 框步进式运动或连续运动 #define DATA_PUNCH 0x0C // 冲孔数据, 该数据需要冲孔主轴运转一圈,同时 X, Y,R 偏移 dx,dy,dr, #define DATA_EMB 0x0D // 绣花数据,该数据需要平绣针扎一次, 同时 X, Y,偏移运动dx,dy, 框步进式运动 #define DATA_CHGND_OLD 0x0E // 换色功能码 lxs 20220628添加 #define DATA_SYNCOFST 0x0F // 同步偏移数据 #define DATA_MILLING 0x21 // 铣刀数据 #define DATA_DRILL 0x22 // 钻孔数据 #define DATA_RKNIFE 0x23 // 圆刀数据, 该数据需要震刀先运转,同时 X, Y,R 偏移 dx,dy,dr, #define DATA_SKNIFE 0x24 // 震刀数据, 该数据需要震刀先运转,同时 X, Y,R 偏移 dx,dy,dr, #define DATA_END 0x80 // 结束码 #define DATA_PAUSE 0x81 // 暂停功能码 #define DATA_CHGND 0x82 // 绣花换针杆功能码(换色) #define DATA_CUTTRD 0x83 // 剪线功能码 #define DATA_ANGLE 0x89 // 拐点 // atrr, 属性字节,作为运动属性字节 // 缝纫针步的属性定义: // dx, x向偏移值, 有符号数, 范围为 -32768--32767, 单位为 0.01mm // dy, y向偏移值, 有符号数, 范围为 -32768--32767, 单位为 0.01mm // dr, r向偏移值, 有符号数, 范围为 -32768--32767, 单位为 0.0001 弧度 // len, xy 分量的合成长度,无符号数,范围0--65535, 单位为 0.01mm #define HEAD_NAME_STR_LEN 0x20 #define HEAD_FIX_INFO_LEN 0x32 #define SWITCHTABLE 512 #define SWITCHTABLENUM 4 #define SWITCHTABLE1 32 #define SWITCHTABLE2 32+SWITCHTABLE1 #define SWITCHTABLE3 SWITCHTABLE/SWITCHTABLENUM+SWITCHTABLE2 #define SWITCHTABLE4 SWITCHTABLE/SWITCHTABLENUM+SWITCHTABLE3 #pragma pack(1)//设定为1字节对齐 // 数据文件头 typedef struct { // 0x00 char fileName[32]; // 文件名称 // 0x20 u32 dataSize; // 数据字节数 u32 itemNums; // 数据项个数 u16 bytesPerItem; // 每项占的字节数 u16 bytesPerBlk; // 数据内容划分块大小 u32 dataChecksum; // 数据累加校验和 // 0x30 u16 checkCrc; // 前面6个字段的CRC校验,(6个字段分别为:文件名称,字节数,项个数,每项字节数,每块字节数,数据累加和的CRC校验值) // 0x32 u32 fileid; // 文件唯一标识符,识别是否为同一个文件 // 0x36 s32 anchorX; // 定位点坐标X s32 anchorY; // 定位点坐标Y // 0x3E s32 beginX; // 数据起点坐标X s32 beginY; // 数据起点坐标Y s32 beginR; // 数据起点坐标Z // 0x4A s32 minX; s32 maxX; s32 minY; s32 maxY; // 轮廓范围 // 0x5A u32 jumpNeedleNum; // 跳针数 // 0x5E u32 colorNum; // 颜色数 // 0x62 u16 rotateStyle; //旋转式样 //0x64 u16 horizontalStyle; //水平翻转式样 //0x66 u16 verticalStyle; //垂直翻转式样 //0x68 u16 rotateAngle; //旋转角度 //0x6A u16 xZoom; //X向倍率 //0x6C u16 yZoom; //Y向倍率 //0x6E u16 lockNeedlesNum; //锁针次数 //0x70 u16 lockNeedlesStepNum; //锁针步数 //0x72 u16 lockNeedlesStepLength; //锁针针步长度 //0x74 u16 stitchSplitLength; //需要分割的针步长度 //0x76 u16 continuRunComp; //连续动框补偿 //0x78 u16 needleTipComp; //针尖补偿 //0x7A u8 reserved1[0x82-0x7A];//保留 //0x82 s32 breakLineParkNum; //断线停车次数 //0x86 u8 reserved2[0x200-0x86];//保留 // 0x400 u8 switchTable[SWITCHTABLE]; // 色序设定表 }__attribute__ ((packed)) DataFileHead;//中间数据(fcg) //ds16头文件 typedef struct { // 0x00 char fileName[32]; // 文件名称 // 0x20 u32 dataSize; // 数据字节数 u32 itemNums; // 数据项个数 u16 bytesPerItem; // 每项占的字节数 u16 bytesPerBlk; // 数据内容划分块大小 u32 dataChecksum; // 数据累加校验和 u16 checkCrc; // 前面6个字段的CRC校验,(6个字段分别为:文件名称,字节数,项个数,每项字节数,每块字节数,数据累加和的CRC校验值) // 0x32 u8 reserved0; // 保留 u8 reserved1; u32 fileid; // 文件唯一标识符,识别是否为同一个文件 // 0x38 u32 punchNum; // 冲孔个数 //0x3C u32 colorNumber; // 0x40 s32 anchorX; // 定位点坐标X s32 anchorY; // 定位点坐标Y // 0x48 s32 beginX; // 数据起点坐标X s32 beginY; // 数据起点坐标Y s32 beginR; // 数据起点坐标Z // 0x54 s32 minX; s32 maxX; s32 minY; s32 maxY; // 轮廓范围 // 0x64 u32 sizeX; u32 sizeY; // 裁片大小 // 0x6C s32 anchorX2; // 定位点坐标X2 s32 anchorY2; // 定位点坐标Y2 s32 beginX2; // 数据起点坐标X2 s32 beginY2; // 数据起点坐标Y2 s32 beginR2; // 数据起点坐标Z2 // 0x80 u32 runAct; // 附加动作, // bit0: 0:完成后不拍照 1:完成后拍照 // 0x84 u32 rev; s32 offsetX; // 偏移点X s32 offsetY; // 0x9A u8 reserved2[0x200-0x90]; // 0x200 u8 switchTable[0x400-0x200]; // 色序设定表, 支持512个色序设定 }__attribute__ ((packed)) DataDs16FileHead;//下发给主控的ds16文件头 #pragma pack(1)//恢复对齐状态 typedef struct { // 0 char HMIVerStr[16]; // 界面版本 // 4 u32 machineNumber; // 机器编号 // 5 u16 motorNum; //电机个数 u16 debugProgress; //调试进度 // 6 char fileName[32]; // 文件名称 #if(0) // 52 char sensorStartBtn; // 启动按钮1 char sensorStopBtn; // 暂停按钮1 char sensorJogBtn; // 点动按钮1 char sensorMainFrameXZeroPos; // 主框架X零位 char sensorMainFrameYZeroPos; // 主框架Y零位 char sensorMainFrameXNegLimit; // 主框架X负限位 char sensorMainFrameYNegLimit; // 主框架Y负限位 char sensorMainFrameXPosLimit; // 主框架X正限位 char sensorMainFrameYPosLimit; // 主框架Y正限位 char sensorScissorsReturn; // 剪刀回位 #endif //14 char deliveryTime[32]; //交付日期 //22 u32 workProgress; //机器工作进度(花样执行进度) //26 u32 workState; //工作状态 //27 u32 startPins; //开始针数 //28 u32 endPins; //结束针数 //29 quint64 startTime; //开始时间 //31 quint64 endTime; //结束时间 //33 u32 outCounter; //产量统计 //34 u32 rev2[256-34]; } __attribute__ ((packed)) HMILotData; // 界面物联网数据 //------------------------------------------------------------------------- // 升级文件头 typedef struct { // 0x00 char fileName[32]; // 文件名称 // 0x20 u32 dataSize; // 数据字节数 u32 dataChecksum; // 数据累加校验和 // 0x28 u8 reserved1[0x30-0x28]; // 保留区1 // 0x30 u8 reserved2[0x64-0x30]; // 保留区1 // 0x64 u8 reserved3[0x80-0x64]; // 保留区2 // 0x80 u8 reserved4[0x100-0x80]; }__attribute__ ((packed)) AppFileHead; // 外围板文件头 typedef struct { // 0x00 char fileName[32]; // 文件名称 // 0x20 u32 dataSize; // 数据字节数 u32 dataChecksum; // 数据累加校验和 u8 protocol; // 文件要发给的协议类型 u8 nodeid; // 文件要发给的节点ID,0为广播 u8 fileType; // 文件类型 u8 nodeType; // 文件要发给的节点类型 -rq // 0x2C u8 reserved1[0x30-0x2C]; // 保留区1 // 0x30 u8 reserved2[0x64-0x30]; // 保留区2 // 0x64 u8 reserved3[0x80-0x64]; // 保留区3 // 0x80 u8 reserved4[0x100-0x80]; // 保留区4 }__attribute__ ((packed)) BoardFileHead; // 文件参数结构 typedef struct { // 0x00 u8 hdIdenti[0x40]; // 0x40 s32 anchorX; // 定位点坐标X s32 anchorY; // 定位点坐标Y // 0x48 s32 beginX; // 数据起点坐标X s32 beginY; // 数据起点坐标Y s32 beginR; // 数据起点坐标Z // 0x54 s32 minX; s32 maxX; s32 minY; s32 maxY; // 轮廓范围 // 0x64 u32 sizeX; u32 sizeY; // 裁片大小 // 0x6C s32 anchorX2; // 定位点坐标X2 s32 anchorY2; // 定位点坐标Y2 s32 beginX2; // 数据起点坐标X2 s32 beginY2; // 数据起点坐标Y2 s32 beginR2; // 数据起点坐标Z2 // 0x80 u8 reserved3[0x200-0x80]; // 0x200 u8 switchNeedleTable[0x400-0x200]; // 色序设定表, 支持512个色序设定 }__attribute__ ((packed)) DataFilePara; typedef struct { s32 anchorX; // 定位点坐标X s32 anchorY; // 定位点坐标Y s32 beginX; // 数据起点坐标X s32 beginY; // 数据起点坐标Y }__attribute__ ((packed)) DataFilePos; //------------------------------------------------------------------------- // 文件执行参数结构 typedef struct { u32 newIdx; s32 newXPos; s32 newYPos; s32 newRPos; u32 newColorIdx; // 新针位 u32 rev[256-5]; }__attribute__ ((packed)) FileExecPara; //------------------------------------------------------------------------- //参数文件头 struct ParaFile { unsigned char s_head[4] ; // 默认 PARA int s_type ; // 默认 0 int s_len ; // 数据 默认 4096 unsigned int s_para_buff[1024] ; //工作 参数体 unsigned short s_crc ; //参数体的CRC unsigned short rev ; //预留 保持 结构体四字节对齐 }; //------------------------------------------------------------------------- #endif