optical/NxFuncs/controlbus/headcontrol.h

306 lines
10 KiB
C
Raw Permalink Normal View History

2025-09-04 01:45:08 +00:00
#ifndef __HEADCONTROL_H__
#define __HEADCONTROL_H__
#include "controlbus.h"
#if (CONTROL_BUS == COMM_CAN)
/*
<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>
*/
//-------------------------------------------------------------------------------
typedef struct
{
u8 nodeTye; // <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
u8 nodeId; // <20>ڵ<EFBFBD>ID
CtrlBusPacket ctrlCmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlBusPacket exbSta; // <20><>Χ<EFBFBD><EFBFBD>ص<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
CtrlBusPacket busSta; // <20><>Χ<EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
CtrlBusPacket traCmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BoardRegVal regVal; // <20><>Χ<EFBFBD><CEA7><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ
CtrlBusPacket rdReg; // <20><>ȡ<EFBFBD><C8A1>Χ<EFBFBD><CEA7><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ
u8 cmdFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ N5--<2D><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 staFlag; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_EXSTA
u8 refSta; // ˢ<><CBA2>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_EXSTA
u8 traFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ N5--<2D><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 busFlag; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_BUSSTA
u8 refVer;
u8 verFlag;
u8 transFlag; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>־ <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 exbupdateFlag; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
u8 refNvPara; // ˢ<>·<EFBFBD><C2B7><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
u8 nvParaFlag; // <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>־
u8 refHeadPara; // ˢ<>»<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
u8 headParaFlag; // <20><><EFBFBD>ջ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
}HeadControl;
//-------------------------------------------------------------------------------
typedef union
{
u8 buff[CAN_DATA_LEN];
struct
{
u16 cmd;
u8 subcmd;
u8 para[5];
} __attribute__ ((packed)) headCtrl; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd;
u8 needleNums; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 currentNP; // <20><>ǰ<EFBFBD><C7B0>λ
u8 rev[4]; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) headPara; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 parablockID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
u8 paraID; // <20><><EFBFBD><EFBFBD>ID
s32 paraval; // <20><><EFBFBD><EFBFBD>ֵ
} __attribute__ ((packed)) headNvPara; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
struct
{
u32 staBits; // ״̬λ
u8 setedNP; // <20><><EFBFBD>õĵ<C3B5>ǰ<EFBFBD><C7B0>λ
u16 potValue; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ(ë<><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
s8 curHoistLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>λ
} __attribute__ ((packed)) headSta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
struct
{
u32 staBits; // ״̬λ
u8 setedNP; // <20><><EFBFBD>õĵ<C3B5>ǰ<EFBFBD><C7B0>λ
s16 footmotopos; // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>λ<EFBFBD><CEBB>
u8 rev;
} __attribute__ ((packed)) footHeadSta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>)
struct
{
u16 cmd;
u8 validFlag; // <20><>Ч<EFBFBD><D0A7>־
u16 msang; // <20><><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
u8 nodetype; // 20220523 Ϊ<><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>ë<EFBFBD><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ͬʱ<CDAC><CAB1><EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵIJ<D3B5><C4B2>Ƶ<EFBFBD>..
// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>(ƽ<><C6BD><EFBFBD><EFBFBD>ͷ,ë<><C3AB><EFBFBD><EFBFBD>ͷ,<2C><><EFBFBD>ƻ<EFBFBD>ͷ)
u8 para[2]; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) setmsang; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
struct
{
u16 cmd;
u8 para[6];
} __attribute__ ((packed)) chenillePara; // ë<><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd;
u8 subcmd;
u8 para1;
s32 para2;
} __attribute__ ((packed)) coilMCtrl; // <20><><EFBFBD><EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd;
u8 currentNP; // <20><>ǰ<EFBFBD><C7B0>λ
u16 mrotCtnAng; // M<><4D><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
u8 rev[3]; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) coilheadPara; // <20><><EFBFBD>ƻ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u32 staBits; // ״̬λ
s16 footmotopos; // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>λ<EFBFBD><CEBB>
s16 swmotopos; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
} __attribute__ ((packed)) wireHeadSta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>(<28><><EFBFBD>߻<EFBFBD>)
}HeadCommand;
//-------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
#define CTRL_CMD_EMB_HEAD_CTRL 0x1000 // ƽ<><C6BD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_EMB_HEAD_PARA 0x1001 // ƽ<><C6BD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_HEAD_NVPARA 0x1002 // ƽ<><C6BD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_CHENILLE_HEAD_CTRL 0x1010 // ë<><C3AB><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_CHENILLE_HEAD_PARA 0x1011 // ë<><C3AB><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_CHENILLE_NVPARA 0x1012 // ë<><C3AB><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_COIL_HEAD_CTRL 0x1020 // <20><><EFBFBD>ƻ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_COIL_HEAD_PARA 0x1021 // <20><><EFBFBD>ƻ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_COIL_NVPARA 0x1022 // <20><><EFBFBD>ƻ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_PUNCH_HEAD_CTRL 0x1030 // <20><><EFBFBD>׻<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_PUNCH_HEAD_PARA 0x1031 // <20><><EFBFBD>׻<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_PUNCH_NVPARA 0x1032 // <20><><EFBFBD>׻<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_HEAD_MSANG 0x1050 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
/*
#define CTRL_CMD_COLOR_CTRL 0x1100 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_COLOR_PARA 0x1101 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_COLOR_NVPARA 0x1102 // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
//-------------------------------------------------------------------------------
// <20>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
#define CTRL_SUBCMD_DISABLE 0x00 // <20><>ͷ<EFBFBD><CDB7><EFBFBD>ƹ<EFBFBD><C6B9>ܹر<DCB9>
#define CTRL_SUBCMD_ENABLE 0x01 // <20><>ͷ<EFBFBD><CDB7><EFBFBD>ƹ<EFBFBD><C6B9>ܴ<EFBFBD><DCB4><EFBFBD>
#define CTRL_SUBCMD_MS_ACTIVE 0x02 // <20><><EFBFBD>ᶯ̬
#define CTRL_SUBCMD_MS_STATIC 0x03 // <20><><EFBFBD>ᾲ̬
#define CTRL_SUBCMD_LOCK_NEEDLE 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_UNLOCK_NEEDLE 0x05 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_TBD_ENABLE 0x06 // <20>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_TBD_DISABLE 0x07 // <20>ϼ<EFBFBD><CFBC><EFBFBD>ֹ
#define CTRL_SUBCMD_TBD_RESET 0x08 // <20>ϼ츴λ
#define CTRL_SUBCMD_TBD_DETE 0x09 // <20><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_HOOK_THREAD 0x0A // <20><><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>
#define CTRL_SUBCMD_HOOK_TEST 0x0B // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>
#define CTRL_SUBCMD_TRD_LOOSE_ON 0x0C // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
#define CTRL_SUBCMD_TRD_LOOSE_OFF 0x0D // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹أ<DFB9><D8A3>г֣<D0B3>
#define CTRL_SUBCMD_MEND_BEGIN 0x0E // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_MEND_END 0x0F // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_MEND_PAUSE 0x10 // <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_BUS_DECT_BEG 0x11 // <20><><EFBFBD>߼<EFBFBD><DFBC>ʼ(<28><><EFBFBD><EFBFBD>)
#define CTRL_SUBCMD_BUS_DECTING 0x12 // <20><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)
#define CTRL_SUBCMD_BUS_DECT_END 0x13 // <20><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#define CTRL_SUBCMD_SCATBEAD_PUSH_ON 0x14 // ɢ<><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SCATBEAD_PUSH_OFF 0x15 // ɢ<><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SCATBEAD_GET 0x16 // ɢ<><C9A2>ȡ<EFBFBD><C8A1>
#define CTRL_SUBCMD_SCATBEAD_CHCO 0x17 // ɢ<>黻ɫ,<2C><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>(<28><><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><E9B6AF>)
#define CTRL_SUBCMD_SCBE_CHCOZERO 0x18 // ɢ<>黻ɫ<E9BBBB><C9AB><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SCATBEAD_LIFT 0x19 // ɢ<><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1<>½<EFBFBD>, 0<><30><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SCATBEAD_RESET 0x1A // ɢ<>鸴λ
#define CTRL_SUBCMD_SCATBEAD_STA 0x1B // ɢ<><C9A2>״̬
#define CTRL_SUBCMD_SCATBEAD_FEED 0x1C // ɢ<><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEQUIN_PARA 0x1D // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEQUIN_ONCE 0x1E // <20><>Ƭ<EFBFBD><C6AC>Ƭ
#define CTRL_SUBCMD_SEQUIN_PUSH 0x1F // <20><>Ƭ
#define CTRL_SUBCMD_SEQUIN_CHCO 0x20 // <20><>Ƭ<EFBFBD><C6AC>ɫ,<2C><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>
#define CTRL_SUBCMD_SEQUIN_CHCOZERO 0x21 // <20><>Ƭ<EFBFBD><C6AC>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEQUIN_LIFT 0x22 // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>,1<>½<EFBFBD>, 0<><30><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEQUIN_CUT 0x23 // <20><>Ƭ<EFBFBD><C6AC>Ƭ
#define CTRL_SUBCMD_BEADSEQ_CHANGE 0x24 // <20><>Ƭ<EFBFBD>л<EFBFBD>
#define CTRL_SUBCMD_EASY_CHENILLE_LIFT 0x25 // <20><><EFBFBD><EFBFBD>ë<EFBFBD><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_EASY_CHENILLE_CTRL 0x26 // <20><><EFBFBD><EFBFBD>ë<EFBFBD><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_TRACK_LIFT 0x27 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_TRACK_TO_POS 0x28 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תȥijλ<C4B3><CEBB>
#define CTRL_SUBCMD_TRACK_CHECK 0x29 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_TRACK_RESET 0x2A // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>帴λ
#define CTRL_SUBCMD_LASERLIGHT_ON 0x30 // <20><><EFBFBD>ⶨλ<E2B6A8>ƿ<EFBFBD>
#define CTRL_SUBCMD_LASERLIGHT_OFF 0x31 // <20><><EFBFBD>ⶨλ<E2B6A8>ƹ<EFBFBD>
#define CTRL_SUBCMD_LASER_ON 0x32 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_LASER_OFF 0x33 // <20><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>
#define CTRL_SUBCMD_LASERBLOW_ON 0x34 // <20><><EFBFBD><EFBFBD><E2B4B5><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_LASERBLOW_OFF 0x35 // <20><><EFBFBD><EFBFBD><E2B4B5><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_HOIST_CTRL 0x40 // ë<><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_CUT_CTRL 0x41 // ë<><C3AB><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
#define CTRL_SUBCMD_SET_WORK_LEVEL 0x42 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
#define CTRL_SUBCMD_GOTO_WORK_LEVEL 0x43 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_MAXIS_CTRL 0x50 // <20><><EFBFBD><EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_MAXIS_RUN 0x51 // <20><><EFBFBD><EFBFBD>M<EFBFBD><4D><EFBFBD>˶<EFBFBD>
#define CTRL_SUBCMD_FOOT_CTRL 0x52 // ѹ<>ſ<EFBFBD><C5BF><EFBFBD>
#define CTRL_SUBCMD_ZIGZAG_CTRL 0x53 // <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>
#define CTRL_SUBCMD_COIL_CTRL 0x54 // <20><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>
// <20><><EFBFBD>߻<EFBFBD>
#define CTRL_SUBCMD_CLIPWIRE_CTRL 0x60 // <20>е<EFBFBD><D0B5><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_UPLINE_CTRL 0x61 // <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
#define CTRL_SUBCMD_PRESSWIRE_CTRL 0x62 // ѹ<><D1B9><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_UPCUT_CTRL 0x63 // <20>ϼ<EFBFBD><CFBC>߿<EFBFBD><DFBF><EFBFBD>
#define CTRL_SUBCMD_WIREALARM_DECT 0x64 // <20><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_WIREALARM_RESET 0x65 // <20><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD>λ
#define CTRL_SUBCMD_STFED_ENABLE 0x66 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_STFED_DISABLE 0x67 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>ֹ
#define CTRL_SUBCMD_STFED_RESET 0x68 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>λ
#define CTRL_SUBCMD_HOLE_CTRL 0x69 // <20><><EFBFBD>׿<EFBFBD><D7BF><EFBFBD>
#define CTRL_SUBCMD_HOLE_LIFT_CTRL 0x6A // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_LIFT_CTRL 0x6B // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_CON_SWITCH_NEEDLE 0x70 // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>λ
//-------------------------------------------------------------------------------
// ״̬λ<CCAC><CEBB><EFBFBD><EFBFBD>
#define HDSTA_HEAD_LOCK 0x00000001 // <20><>ͷ״̬<D7B4><CCAC>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>ť<EFBFBD><C5A5>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
#define HDSTA_THREAD_BREAK 0x00000002 // <20><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>״̬<D7B4><CCAC>־
#define HDSTA_DTHREAD_BREAK 0x00000004 // <20><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>״̬<D7B4><CCAC>־
#define HDSTA_MEND_EMB 0x00000008 // <20><><EFBFBD><EFBFBD>״̬
#define HDSTA_MEND_PAUSE 0x00000010 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ
#define HDSTA_MEND_WORK 0x00000020 // <20><><EFBFBD><EFBFBD><E5B9A4>ģʽ
#define HDSTA_CUT_POS 0x00000040 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>λ
#define HDSTA_SCBE_ALARM 0x00000080 // ɢ<><EFBFBD><E9B1A8>
#define HDSTA_TRACK_ALARM 0x00000100 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B1A8>
#define HDSTA_FOOT_DOWN 0x00000200 // ѹ<><D1B9><EFBFBD><EFBFBD>λ
#define HDSTA_FOOT_UP 0x00000400 // ѹ<><D1B9><EFBFBD><EFBFBD>λ
#define HDSTA_CUT_WORKPOS 0x00000800 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_WIRE_ALARM 0x00001000 // <20><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_FEEDWIRE_TIMEOUT 0x00002000 // <20><><EFBFBD>߳<EFBFBD>ʱ(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_FEEDWIRE_ALARM 0x00004000 // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_FEEDWIRE_NULL 0x00008000 // <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_HOLE_LIFT_UP 0x00010000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_HOLE_LIFT_DOWN 0x00020000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_LASER_ALM 0x00040000 // <20><><EFBFBD><EFBFBD><E2B1A8>(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_LIFT_UP 0x00080000 // <20><>ͷ<EFBFBD><CDB7>λ(<28><><EFBFBD>߻<EFBFBD>)
#define HDSTA_LIFT_DOWN 0x00100000 // <20><>ͷ<EFBFBD><CDB7>λ(<28><><EFBFBD>߻<EFBFBD>)
//-------------------------------------------------------------------------------
// <20><>ͷ<EFBFBD><CDB7><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
#define FLAT_EMB_HEAD 0x01 // ƽ<><C6BD><EFBFBD><EFBFBD>ͷ
#define CHENILLE_HEAD 0x02 // ë<><C3AB>(<28><>)<29><>ͷ
#define COIL_HEAD 0x03 // <20><><EFBFBD>ƻ<EFBFBD>ͷ
#define CHENILLE_DN_HEAD 0x04 // ë<><C3AB><EFBFBD>»<EFBFBD>ͷ
#define LASER_HEAD 0x05 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
void InitHeadControl(HeadControl * pCtrl);
void SendHeadCommand(HeadControl * pCtrl, HeadCommand * pCmd);
void RequestHeadStatus(HeadControl * pCtrl);
void RequestHeadVersion(HeadControl * pCtrl);
void RequestHeadNvPara(HeadControl * pCtrl);
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
#endif
#endif