494 lines
14 KiB
C
494 lines
14 KiB
C
//-------------------------------------------------------------------------------
|
||
// 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
|
||
|
||
|