optical/EMBOS/Users/App/workctrl/workctrl.h

435 lines
12 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
#ifndef __WORKCTRL_H__
#define __WORKCTRL_H__
#include "config.h"
#include "datafile.h"
#include "operator.h"
#include "motos.h"
#include "nvpara.h"
#include "controlbus.h"
#include "ocom.h"
#if (CUR_MACHINE == MACH_EMB)
#include "embroidery.h"
#endif
#if (CUR_MACHINE == MACH_WIRE)
#include "wire.h"
#endif
#if (CUR_MACHINE == MACH_BEDSKIRT)
#include "bedSkirt.h"
#endif
#if (CUR_MACHINE == MACH_PES)
#include "pes.h"
#endif
//-------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD>״̬
typedef struct
{
// 0
u32 workStatus; // <20><><EFBFBD><EFBFBD>״̬λͼ
// .0 <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>ޡ<EFBFBD>=0<><30>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .1 <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǯ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .2 <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>=0<><30><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>״̬; =1<><31><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>״̬
// .3 Կ<><D4BF>״̬<D7B4><CCAC>=0<><30><EFBFBD>ر<EFBFBD>״̬; =1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// .4 <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ļ<EFBFBD>
// .5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>յ<EFBFBD><D5B5>˲<EFBFBD><CBB2><EFBFBD>
// .6 <20><><EFBFBD><EFBFBD>æ<EFBFBD><C3A6>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>= 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
// .7 <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>=0<><30><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>״̬; =1<><31><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>״̬
// .8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־<EFBFBD><D6BE> =1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
// .9 ģ<><EFBFBD><E2B9A4><EFBFBD><EFBFBD>־<EFBFBD><D6BE>=1, <20><><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E2B9A4>״̬
// .10 <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>=1, <20><><EFBFBD><EFBFBD>
// .11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>=1, <20><><EFBFBD><EFBFBD>
// .12 <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>־
// .13 <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>б<EFBFBD>־
// .14 <20><><EFBFBD><EFBFBD>У׼ģʽ<C4A3>б<EFBFBD>־
// .15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>־. = 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .16 <20>ȴ<EFBFBD><C8B4><EFBFBD>־. = 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .17 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>0<EFBFBD><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>־. =1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// .19 ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>״̬
// .20 <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>״̬
// .21 ƥ<><C6A5>, 0:<3A>˳<EFBFBD>ƥ<EFBFBD><C6A5>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1:<3A><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>
// .22 <20><><EFBFBD>߼<EFBFBD><DFBC>⣬ 0<><30><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>״̬<D7B4><CCAC> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>״̬
// .23 <20><>ī<EFBFBD><C4AB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ч<EFBFBD><D0A7>־, 0:<3A><>Ч, 1:<3A><>Ч
// .25 ɾ<><C9BE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>־, 0:<3A><>Ч, 1:<3A><>Ч
// .26 <20><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7>ļ<EFBFBD>, 0:<3A><>Ч, 1:<3A><>Ч
// 1
u32 errorCode; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s32 fileIdx; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
u32 dataIdx; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 runSpeed; // <20>˶<EFBFBD><CBB6>ٶ<EFBFBD>
u32 runAction; // ִ<>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
u32 runSteps; // <20><>ǰִ<C7B0>в<EFBFBD><D0B2><EFBFBD> *
u32 outCounter; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 8
u32 tempdat[12]; // <20>Զ<EFBFBD><D4B6><EFBFBD>״̬
// 20
s32 btrdPics; // <20><><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s32 btrdLength; // <20><><EFBFBD>߳<EFBFBD><DFB3>ȼ<EFBFBD><C8BC><EFBFBD>
// 22
u32 colorIdx; // ɫ<><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s32 curEncPos; // <20><>ǰλ<C7B0><CEBB>
// 24
u32 msAnlge;
u32 potVal;
s32 needleIdx; // <20><>λ<EFBFBD><CEBB>
// 27
s32 workableTimer; // <20>ɹ<EFBFBD><C9B9><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
// 28
u32 embNeedleNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 29
u32 workTimeRecord; // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u32 clipLv;
u32 tempdat3;
// // 20230517<31><37>չ
// // 32
// u32 tempdat4[8];
//
// // 40
// u32 tempdat5[8];
//
// // 48
// u32 tempdat6[8];
//
// // 56
// u32 tempdat7[64-56];
} __attribute__ ((packed)) MCStatus;
//-------------------------------------------------------------------------------
#define WORK_STA_ENTIME 0x00000001 // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define WORK_STA_ENSTATE 0x00000002 // <20><><EFBFBD><EFBFBD>״̬
#define WORK_STA_WKAUTO 0x00000004 // <20><><EFBFBD><EFBFBD>״̬
#define WORK_STA_KEYEN 0x00000008 // Կ<><D4BF>״̬
#define WORK_STA_FILEOK 0x00000010 // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ļ<EFBFBD>
#define WORK_STA_PARAOK 0x00000020 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>յ<EFBFBD><D5B5>˲<EFBFBD><CBB2><EFBFBD>
#define WORK_STA_BUSY 0x00000040 // <20><><EFBFBD><EFBFBD>æ<EFBFBD><C3A6>־<EFBFBD><D6BE>= 0<><30><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>= 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_NEW_PARA 0x00000100 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־<EFBFBD><D6BE> =1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_SIMULATE 0x00000200 // ģ<><EFBFBD><E2B9A4><EFBFBD><EFBFBD>־<EFBFBD><D6BE> =1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E2B9A4>
#define WORK_STA_EN_SCAN 0x00000400 // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>״̬
#define WORK_STA_WORKING 0x00001000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>= 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_SENSOR 0x00002000 // <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>б<EFBFBD>־. = 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><E2B4AB><EFBFBD>ź<EFBFBD>,<2C><><EFBFBD>а<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>Ӧ
#define WORK_STA_OUTPUT 0x00008000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>־. = 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_WAIT 0x00010000 // <20>ȴ<EFBFBD><C8B4><EFBFBD>־. = 0<><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>= 1<><31><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_CHG_HOOK 0x00020000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>0<EFBFBD><30><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_TRAVERSE 0x00040000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>־. 0,<2C><>ʼ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_CLOTH 0x00200000 // ƥ<><C6A5>, 0:<3A>˳<EFBFBD>ƥ<EFBFBD><C6A5>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1:<3A><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>
#define WORK_STA_DETBK 0x00400000 // <20><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD> 0<><30><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>״̬<D7B4><CCAC> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>״̬
#define WORK_STA_FRM_CHK 0x02000000 // ģ<>嵽λ<E5B5BD><CEBB>־<EFBFBD><D6BE>0<EFBFBD><30>δ<EFBFBD><CEB4>λ<EFBFBD><CEBB>1<EFBFBD><31><EFBFBD><EFBFBD>λ
#define WORK_STA_RFID_SCAN 0x04000000 // RFIDʶ<44><CAB6><EFBFBD><EFBFBD>־<EFBFBD><D6BE>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WORK_STA_ALL_STOP (WORK_STA_SENSOR|WORK_STA_OUTPUT|WORK_STA_GET_FLM|WORK_STA_PUT_FLM) // <20><>ֹ<EFBFBD><D6B9>Ӧ<EFBFBD>κζ<CEBA><CEB6><EFBFBD>״̬
//-------------------------------------------------------------------------------
typedef struct
{
u16 id;
u16 cfg;
u16 mod;
}AxisItem;
//-------------------------------------------------------------------------------
typedef struct
{
// 0
s32 motospos[AXIS_NUM]; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
// 6
u32 fileID; // <20>ļ<EFBFBD><C4BC><EFBFBD>ʶ<EFBFBD><CAB6>
u32 dataIdx; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 runSteps; // <20><>ǰִ<C7B0>в<EFBFBD><D0B2><EFBFBD>
u32 outCounter; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 btrdPics; // <20><><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ()
u32 btrdLength; // <20><><EFBFBD>߳<EFBFBD><DFB3>ȼ<EFBFBD><C8BC><EFBFBD> ()
u32 fileCheck; // <20>ļ<EFBFBD>У<EFBFBD><D0A3>
u32 mcType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s32 fileIdx; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
u32 fileIdxMap; // <20>ļ<EFBFBD>λͼ
u32 hookPlateCount; // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>
s32 sendCount; //
u32 embNeedleNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 18
u8 rev[MAX_SAVE_SIZE-(AXIS_NUM+13)*sizeof(u32)];
u16 enFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
} __attribute__ ((packed)) SavedPara;
//----------------------------
typedef struct
{
MCStatus cursta;
MCStatus oldsta;
SavedPara savedpara; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-----------------------
u32 paraEnFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
//-----------------------
u32 boardId; // <20>忨ID
//-----------------------
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 posEnFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
int zeroEnFlag; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
s32 zeroPosList[AXIS_NUM*10]; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int workAvaible; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3A9>Ч<EFBFBD><D0A7>־
s32 workPos[AXIS_NUM*10]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*10<31><30>Ϊ<EFBFBD><CEAA>Ԥ<EFBFBD><D4A4>
//-----------------------
int curmsrpm; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
int chrpmflag; // ת<>ٸı<D9B8><C4B1><EFBFBD>־
u32 expectedOutput; // Ԥ<>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-----------------------
int stopFlag; // <20><><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>־
int sendStaWhenRun; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־
//-----------------------
int chBobbinPics; // <20><><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>
int chBobbinLength; // <20><><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3>ȣ<EFBFBD><C8A3><EFBFBD>λ0.01mm<EFBFBD><EFBFBD>
//-----------------------
// <20><>ɫ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>
int almflashRed; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8>־
int almredSta; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
int almflashGreen; // <20>̵<EFBFBD><CCB5><EFBFBD>˸<EFBFBD><CBB8>־
int almgreenSta; // <20><><EFBFBD>̵<EFBFBD>״̬
int almflashYello; // <20>Ƶ<EFBFBD><C6B5><EFBFBD>˸<EFBFBD><CBB8>־
int almyelloSta; // <20><><EFBFBD>Ƶ<EFBFBD>״̬
int almflashBee; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8>־
int almbeeSta; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
int almSta; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
//-----------------
int cansetelapsed;
//-----------------
int stopShiftFlag;
//-----------------
int embMendTrdFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
int embMendEndIdx; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int mendEndPatternIdx; // 20230601 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>򷴸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ɿ绨<C9BF><E7BBA8>
//-----------------
int requestFlag; // <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־, =0,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =1,<2C><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
//-----------------
int workStopFlag;
int olderr;
int fileScanFlag;
int fileScanSaveId;
int fileScanOldId;
int fileScanId;
//-----------------
u32 stopShiftEn;
int stopShiftDx;
int stopShiftDy;
int stopBtnFlag;
void (*WorkRunTask)(void);
void (*AsynchronousTask)(void);
}WorkCtrl;
//----------------------------
#ifdef _IN_WORKCTRL_C
WorkCtrl g_workCtrl;
#else
extern WorkCtrl g_workCtrl;
#endif
//----------------------------
void InitWorkCtrl(void);
void InitAppCallback(void);
void WorkCtrlTask(void);
void TasksWhenDelay(void);
void DelayRef(u32 ms);
void DelayAndAsyncExe(u32 ms);
void DelayRefFt(u32 ms);
//----------------------------
void RefreshWorkTimeEn(void);
void SaveWorkNvPara(void);
void RefreshStatus(void);
void RefreshParas(int flag);
void SetNewParasFlag(int flag);
//-------------------------------------------------------------------------------
void RequestBoardVer(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int CreateBoardVer(OperPacket * pPkt, u8 protocol, u8 nodeId, u8 nodeType, BoardRegVal * pRegVal);
int CreateHeadBoardPara(OperPacket * pPkt, u8 nodeId, u8 nodeType, u8* pData);
int CreateColorBoardPara(OperPacket * pPkt, u8 nodeId, u8* pData);
int RequestHeadNvParas(int nodetype, int nodeid, int paraid, u32 * pBuf);
void SetHeadNvPara(int nodetype, int nodeid, int paraid, u32 * pBuf);
int CreateHeadNvParas(OperPacket * pPkt, u8 nodetype, u8 nodeId, u8 paraid, u8* pData);
int CreateMcInfo(OperPacket * pPkt, int toggle);
int CreateMcStatus(OperPacket * pPkt, int toggle);
int CreateFileList(OperPacket * pPkt, int toggle);
void SensorsStatus(int mode, u8 * buf);
int CreateSensorsStatus(OperPacket * pPkt);
int CreateSensorsBmp(OperPacket * pPkt);
//-------------------------------------------------------------------------------
void TraverseTask(u8 protocol, u8 nodeId, u8 nodeType, int traNum); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetMcStatus(u32 sta, u32 para);
int ControlByHand(OperPacket * pPkt);
void MotoToZero(u16 obj);
void MoveMotoByHand(u16 obj, u16 dir, u16 spd);
void OutputByHand(u16 obj, u16 act, u16 para);
void MotosServoCtrl(u16 obj, u16 onoff);
void ManualActionCtrl(u16 obj, u16 para2, u16 para3);
void TestThreadBreak(int type, int needle, int head);
void ShakeFrameTest(u16 ofstx, u16 ofsty, u16 runspd);
int ControlWork(OperPacket * pPkt);
int ControlWorkWhenWorking(OperPacket * pPkt);
void ChangeRpm(int rpmchg);
void AllToReset(void);
void AllToZero(void);
int GotoStartPos(void);
int GotoAnchorPos(void);
int GotoOffsetPos(void);
void SetOffsetPos(void);
int GotoWorkPos(void);
int GotoFinishPos(void);
int GotoFeedPos(void);
void SetFeedPos(void);
int GotoFrameZeroPos(void);
int CheckFrame(void);
void SimulationFrame(void);
int FastJump(u32 idx);
void OilingInWorking(u32 para1);
int MoveFrameToPos(s32 posx, s32 posy);
int FixMoveFrame(s32 xmvmnt, s32 yxmvmnt);
void MoveFrameTo(OperPacket * pPkt);
void MoveFrameAsOfst(OperPacket * pPkt);
//-------------------------------------------------------------------------------
int ReportError(int errCode);
void CleanError(void);
void SetLightStaByCode(int errCode);
int IsStatusChanged(void);
void SendStatus(int force);
void CheckSensorAndPos(void);
//-------------------------------------------------------------------------------
void CheckAndRequestData(void);
void SetFileOkFlag(int flag);
void SaveFileIdxFromDatafile(void);
int GetDatIndex(void);
int DatIndexInc(void);
int DatIndexDec(void);
void ChangeWorkPos(DataItem * pDatItem, int dir);
int GetWorkPosFromIndex(void);
int SetExecProgress(OperPacket * pPkt);
void SetDatIdxToStart(void);
//-------------------------------------------------------------------------------
// <20><>ȡ<EFBFBD><C8A1>ˢ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD>λ<EFBFBD><CEBB>
void ReadMotosPos(void);
void ReadAndFreshMotosPos(void);
void NormalRefPosition(u32 para, s32 * posilist);
//-------------------------------------------------------------------------------
#define SET_MOTO_ZERO(mt) do\
{\
if (g_workCtrl.zeroEnFlag == DATA_VALID && (g_workCtrl.posEnFlag & mt##_MOD) == (mt##_MOD))\
{\
printf("\r\nset %s zero = %d \r\n", #mt, list[mt##_IDX]);\
printf("before set, zero is %d\r\n", g_workCtrl.zeroPosList[mt##_IDX]);\
temp = list[mt##_IDX] - g_workCtrl.zeroPosList[mt##_IDX]; /* <20><>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>ԭ<EFBFBD><D4AD>λ<EFBFBD>IJ<EFBFBD> */\
temp += g_motosPara.motosPos[mt##_IDX]; /* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> */\
printf("set new pos to %d\r\n", temp);\
printf("old pos=%d, new pos=%d\r\n", g_motosPara.motosPos[mt##_IDX], temp);\
SetMotoCounter(mt##_IDX, temp); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */\
ReadAndFreshMotosPos();\
}\
}while(0);
#define SET_EX_MOTO_ZERO(mt) do\
{\
if (g_workCtrl.zeroEnFlag == DATA_VALID && (g_workCtrl.posEnFlag & mt##_MOD) == (mt##_MOD))\
{\
printf("\r\nset %s zero = %d \r\n", #mt, list[EX##mt##_IDX]);\
printf("before set, zero is %d\r\n", g_workCtrl.zeroPosList[EX##mt##_IDX]);\
temp = list[EX##mt##_IDX] - g_workCtrl.zeroPosList[EX##mt##_IDX]; /* <20><>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>ԭ<EFBFBD><D4AD>λ<EFBFBD>IJ<EFBFBD> */\
temp += g_motosPara.motosPos[mt##_IDX]; /* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> */\
printf("set new pos to %d\r\n", temp);\
printf("old pos=%d, new pos=%d\r\n", g_motosPara.motosPos[mt##_IDX], temp);\
SetMotoCounter(mt##_IDX, temp); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */\
ReadAndFreshMotosPos();\
}\
}while(0);
//-------------------------------------------------------------------------------
#if (AUTO_ELEC_CLIP == 1)
typedef struct
{
u32 index;
u8 level;
}__attribute__ ((packed)) DataClip;
extern DataClip g_dataClipLvBuf[256];
#endif
#endif