1365 lines
28 KiB
C
1365 lines
28 KiB
C
|
|
|
|||
|
|
#define _IN_WORKCTRL_C
|
|||
|
|
|
|||
|
|
#include "workctrl.h"
|
|||
|
|
|
|||
|
|
#include "movectrl.h"
|
|||
|
|
#include "error.h"
|
|||
|
|
#include "buttons.h"
|
|||
|
|
#include "inout.h"
|
|||
|
|
#include "shell.h"
|
|||
|
|
#include "debug.h"
|
|||
|
|
#include "trigger.h"
|
|||
|
|
#include "delay.h"
|
|||
|
|
#include "canctrl.h"
|
|||
|
|
#include "extendboards.h"
|
|||
|
|
#include "ethernet.h"
|
|||
|
|
#include "filetrans.h"
|
|||
|
|
#include "installment.h"
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void OneMinTimerTask(void);
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if (AUTO_ELEC_CLIP == 1)
|
|||
|
|
// <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>.
|
|||
|
|
// 0~239 <20><><EFBFBD><EFBFBD>120<32><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ż<EFBFBD><C5BC>index<65>д<EFBFBD><D0B4>ŵ<EFBFBD><C5B5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>.
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>level<65><6C><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>levelʼ<6C><CABC>Ϊ<EFBFBD><CEAA>.
|
|||
|
|
|
|||
|
|
// 240,241 <20><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD>,Ĭ<><C4AC>Ϊ0
|
|||
|
|
|
|||
|
|
// 254,255<35><35><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵȼ<CFB5><C8BC>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
DataClip g_dataClipLvBuf[256];
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define EXEC_WORK_FUNC(func) \
|
|||
|
|
do \
|
|||
|
|
{ \
|
|||
|
|
if (func != NULL) \
|
|||
|
|
{ \
|
|||
|
|
func(); \
|
|||
|
|
} \
|
|||
|
|
}while(0)
|
|||
|
|
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void InitWorkCtrl(void)
|
|||
|
|
{
|
|||
|
|
memset(&g_workCtrl, 0, sizeof(WorkCtrl));
|
|||
|
|
|
|||
|
|
g_workCtrl.embMendEndIdx = -1; // 20220303<30><33><EFBFBD>Ӵ˳<D3B4>ʼ<EFBFBD><CABC>
|
|||
|
|
|
|||
|
|
#if (1) // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME;
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENSTATE;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// װ<>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#if (1)
|
|||
|
|
printf("sizeof(SavedPara)=%d\r\n", sizeof(SavedPara));
|
|||
|
|
ReadNVPara((NVPara*)(&g_workCtrl.savedpara), 1); // װ<>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
if (g_workCtrl.savedpara.mcType != MC_TYPE)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.savedpara.enFlag = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (g_workCtrl.savedpara.enFlag != NVPARA_EN)
|
|||
|
|
{
|
|||
|
|
memset(&g_workCtrl.savedpara, 0, sizeof(g_workCtrl.savedpara));
|
|||
|
|
|
|||
|
|
g_workCtrl.savedpara.mcType = MC_TYPE;
|
|||
|
|
g_workCtrl.savedpara.enFlag = NVPARA_EN;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
|
|||
|
|
printf("2. load save data failed\r\n");
|
|||
|
|
g_workCtrl.posEnFlag = 0; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʧЧ
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
u32 address;
|
|||
|
|
address = (u32)(&(g_workCtrl.savedpara.motospos[0]));
|
|||
|
|
SetMotosCounter((s32 *)(address)); // <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
ReadAndFreshMotosPos();
|
|||
|
|
g_workCtrl.posEnFlag = ALL_MOTO_MOD; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ч
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.dataIdx = g_workCtrl.savedpara.dataIdx; // װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
printf("load fileID=0x%x, dataIdx=%d\r\n", g_workCtrl.savedpara.fileID, g_workCtrl.cursta.dataIdx);
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.runSteps = g_workCtrl.savedpara.runSteps; // װ<><D7B0><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.outCounter = g_workCtrl.savedpara.outCounter; // װ<>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.embNeedleNum = g_workCtrl.savedpara.embNeedleNum; // װ<>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.btrdPics = g_workCtrl.savedpara.btrdPics; // װ<>ص<EFBFBD><D8B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.btrdLength = g_workCtrl.savedpara.btrdLength; // װ<>ص<EFBFBD><D8B5>߳<EFBFBD><DFB3>ȼ<EFBFBD><C8BC><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.fileIdx = g_workCtrl.savedpara.fileIdx; // װ<><D7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_datFile.fileIdx = g_workCtrl.cursta.fileIdx; // װ<><D7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_datFile.fileIdxMap = g_workCtrl.savedpara.fileIdxMap; // װ<><D7B0><EFBFBD>ļ<EFBFBD>λͼ
|
|||
|
|
|
|||
|
|
printf("2. load save data success\r\n");
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
InitAppCallback();
|
|||
|
|
|
|||
|
|
InitDebug();
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
rslt = InitInstallment(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (rslt != 0) // <20>Ѿ<EFBFBD><D1BE><EFBFBD>ȥ<EFBFBD>˹ػ<CBB9>ʱ<EFBFBD><CAB1>
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cansetelapsed = 1; // <20><><EFBFBD>ò<EFBFBD><C3B2>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ػ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
RefreshWorkTimeEn();
|
|||
|
|
|
|||
|
|
AddTriggerToList(60000, NULL, OneMinTimerTask); // 1<><31><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><F1A3ACB9><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void InitAppCallback(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WorkCtrlTask(void)
|
|||
|
|
{
|
|||
|
|
EXEC_WORK_FUNC(g_workCtrl.WorkRunTask);
|
|||
|
|
EXEC_WORK_FUNC(g_workCtrl.AsynchronousTask);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void TasksWhenDelay(void)
|
|||
|
|
{
|
|||
|
|
EXEC_WORK_FUNC(g_workCtrl.AsynchronousTask);
|
|||
|
|
TriggerTask(); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
ExtendBoardTask(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void DelayRef(u32 ms)
|
|||
|
|
{
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
TasksWhenDelay();
|
|||
|
|
|
|||
|
|
if (ms <= 0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
DelayMs(1);
|
|||
|
|
ms--;
|
|||
|
|
}while(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void DelayRefFt(u32 ms)
|
|||
|
|
{
|
|||
|
|
u32 us = 0;
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
TasksWhenDelay();
|
|||
|
|
if (ms <= 0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
DelayUs(100);
|
|||
|
|
us++;
|
|||
|
|
if(us >= 10)
|
|||
|
|
{
|
|||
|
|
us = 0;
|
|||
|
|
ms--;
|
|||
|
|
}
|
|||
|
|
}while(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>ʱͬʱִ<CAB1><D6B4><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD>
|
|||
|
|
void DelayAndAsyncExe(u32 ms)
|
|||
|
|
{
|
|||
|
|
u32 timb = GetMsSoftTimer();
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
TasksWhenDelay();
|
|||
|
|
|
|||
|
|
u32 tim = GetMsSoftTimer();
|
|||
|
|
if (tim - timb >= ms)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}while(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// 1<><31><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
void OneMinTimerTask(void)
|
|||
|
|
{
|
|||
|
|
RefWorkableTimer(-1); // ÿ<><C3BF><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
RefreshWorkTimeEn(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void RefreshWorkTimeEn(void)
|
|||
|
|
{
|
|||
|
|
#if (USE_PASSWORD == 1) // ǿ<><C7BF>ʹ<EFBFBD>÷<EFBFBD><C3B7>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (GetWorkableTime() <= 0)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_ENTIME); // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
#elif (USE_PASSWORD == 2) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 paswd[24];
|
|||
|
|
int i;
|
|||
|
|
|
|||
|
|
GetLastpswd(paswd);
|
|||
|
|
for (i=0;i<24;i++)
|
|||
|
|
{
|
|||
|
|
if (paswd[i] != 0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (i != 24)
|
|||
|
|
{// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (GetWorkableTime() <= 0)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_ENTIME); // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{// û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#elif (USE_PASSWORD == 0) // <20><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void SaveWorkNvPara(void)
|
|||
|
|
{
|
|||
|
|
SaveNVPara((NVPara*)(&g_workCtrl.savedpara), 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void RefreshStatus(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void RefreshParas(int flag)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
|
|||
|
|
void SetNewParasFlag(int flag)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.paraEnFlag |= flag;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
printf("set para ok flag\r\n");
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_PARAOK; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void RequestBoardVer(void)
|
|||
|
|
{
|
|||
|
|
#if (MAX_SUPPORT_COLOR > 0)
|
|||
|
|
RequestColorsVersion();
|
|||
|
|
DelayRef(0);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if (MAX_SUPPORT_HEAD > 0)
|
|||
|
|
RequestHeadsVersion();
|
|||
|
|
DelayRef(0);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if (MAX_SUPPORT_EXTIO > 0)
|
|||
|
|
RequestExtIOsVersion();
|
|||
|
|
DelayRef(0);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateBoardVer(OperPacket * pPkt, u8 protocol, u8 nodeId, u8 nodeType, BoardRegVal * pRegVal)
|
|||
|
|
{
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->sendBoardVer.cmdCode = DCMD_SEND_BOARDVER;
|
|||
|
|
pPkt->sendBoardVer.protocolType = protocol;
|
|||
|
|
pPkt->sendBoardVer.nodeType = nodeType;
|
|||
|
|
|
|||
|
|
if (protocol == BN_PROTOCOL_HEAD)
|
|||
|
|
{
|
|||
|
|
pPkt->sendBoardVer.nodeId = nodeId - HEAD_NODEID_BASE + 1; // <20><>1<EFBFBD><31>ʼ,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ID
|
|||
|
|
}
|
|||
|
|
else if (protocol == BN_PROTOCOL_COLOR)
|
|||
|
|
{
|
|||
|
|
pPkt->sendBoardVer.nodeId = nodeId - COLOR_NODEID_BASE + 1; // <20><>1<EFBFBD><31>ʼ,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ID
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memcpy(&pPkt->sendBoardVer.ver, &pRegVal->exbVer, BOARD_VER_LEN*sizeof(u32));
|
|||
|
|
|
|||
|
|
printf("board version: protocol=%d, nodeid=%d, nodeType=%d\r\n", pPkt->sendBoardVer.protocolType, pPkt->sendBoardVer.nodeId, pPkt->sendBoardVer.nodeType);
|
|||
|
|
char ver[EX_VER_LEN+1];
|
|||
|
|
memset(&ver, 0, EX_VER_LEN+1);
|
|||
|
|
memcpy(&ver, &pPkt->sendBoardVer.ver, BOARD_VER_LEN*sizeof(u32));
|
|||
|
|
printf("version=%s\r\n", ver); // <20><><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(pPkt->sendBoardVer.ver)), BOARD_VER_LEN*sizeof(u32));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateBoardVer\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateHeadBoardPara(OperPacket * pPkt, u8 nodeId, u8 nodeType, u8* pData)
|
|||
|
|
{
|
|||
|
|
if (pPkt == NULL || pData == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->boardPara.cmdCode = DCMD_SEND_HEADPARA;
|
|||
|
|
|
|||
|
|
pPkt->boardPara.nodeId = nodeId; // headList<73><74>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ID,ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
pPkt->boardPara.nodeType = nodeType; // <20><>Ӧ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>(ƽ<><C6BD>,ë<><C3AB>,<2C><><EFBFBD><EFBFBD>)
|
|||
|
|
|
|||
|
|
memcpy(&pPkt->boardPara.exData, pData, BOARD_PARA_SIZE);
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(pPkt->boardPara.exData)), BOARD_PARA_SIZE);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateHeadBoardPara\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateColorBoardPara(OperPacket * pPkt, u8 nodeId, u8* pData)
|
|||
|
|
{
|
|||
|
|
if (pPkt == NULL || pData == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->boardPara.cmdCode = DCMD_SEND_COLORPARA;
|
|||
|
|
|
|||
|
|
pPkt->boardPara.nodeId = nodeId; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ID,ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
memcpy(&pPkt->boardPara.exData, pData, BOARD_PARA_SIZE);
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(pPkt->boardPara.exData)), BOARD_PARA_SIZE);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateHeadBoardPara\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int RequestHeadNvParas(int nodetype, int nodeid, int paraid, u32 * pBuf)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB)
|
|||
|
|
return RequestEmbCoilParasProc(nodeid, pBuf);
|
|||
|
|
#elif (CUR_MACHINE == MACH_WIRE)
|
|||
|
|
return RequestWireHeadAParaProc(nodeid, 1, paraid, pBuf);
|
|||
|
|
#else
|
|||
|
|
return 0;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void SetHeadNvPara(int nodetype, int nodeid, int paraid, u32 * pBuf)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB)
|
|||
|
|
SetEmbCoilParasProc(nodeid, pBuf);
|
|||
|
|
#elif (CUR_MACHINE == MACH_WIRE)
|
|||
|
|
SetWireHeadAPara(nodeid, paraid, pBuf);
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateHeadNvParas(OperPacket * pPkt, u8 nodetype, u8 nodeId, u8 paraid, u8* pData)
|
|||
|
|
{
|
|||
|
|
if (pPkt == NULL || pData == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->boardPara.cmdCode = DCMD_SEND_HEAD_NVPARAS;
|
|||
|
|
|
|||
|
|
pPkt->boardPara.nodeId = nodeId; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ID,ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
pPkt->boardPara.nodeType = nodetype;
|
|||
|
|
pPkt->boardPara.paraid = paraid;
|
|||
|
|
|
|||
|
|
memcpy(&pPkt->boardPara.exData, pData, 128);
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(pPkt->boardPara.exData)), 128);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateHeadNvParas\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateMcInfo(OperPacket * pPkt, int toggle)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
MCInfo info;
|
|||
|
|
u16 ver;
|
|||
|
|
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
memset(&info, 0, sizeof(MCInfo));
|
|||
|
|
|
|||
|
|
pPkt->sendMcInfo.cmdCode = DCMD_SEND_MC_INFO;
|
|||
|
|
pPkt->sendMcInfo.toggle = (u16)toggle;
|
|||
|
|
|
|||
|
|
ver = GetFpgaHardVersion(); // <20><>ȡӲ<C8A1><D3B2><EFBFBD>汾<EFBFBD><E6B1BE>Ϣ
|
|||
|
|
sprintf(info.fpgaHardVerStr, "FPGA Hard: %x.%x", (ver&0xff00)>>8,(ver&0x00ff));
|
|||
|
|
|
|||
|
|
ver = GetFpgaSoftVersion(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>Ϣ
|
|||
|
|
sprintf(info.fpgaSoftVerStr, "FPGA Soft: %x.%x", (ver&0xff00)>>8,(ver&0x00ff));
|
|||
|
|
|
|||
|
|
GetVersionStr(info.softwareVerStr); // <20><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>Ϣ
|
|||
|
|
|
|||
|
|
GetBuildStr(info.buildInfoStr); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|
|||
|
|
GetBoardIdInfo(info.boardId); // <20>忨ID<49><44>Ϣ
|
|||
|
|
|
|||
|
|
GetLastInstallment(info.installment); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
|
|
|||
|
|
printf("create system info len=%d, as follow:\r\n", sizeof(MCInfo));
|
|||
|
|
|
|||
|
|
printf("%s\r\n", info.fpgaHardVerStr); // FPGAӲ<41><D3B2><EFBFBD>汾
|
|||
|
|
printf("%s\r\n", info.fpgaSoftVerStr); // FPGA<47><41><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
printf("%s\r\n", info.softwareVerStr); // <20><><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
printf("%s\r\n", info.buildInfoStr); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
printf("%s\r\n", info.boardId); // <20>忨ID
|
|||
|
|
printf("%s\r\n", info.installment); // <20><><EFBFBD><EFBFBD>һ<EFBFBD>εķ<CEB5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(info)), sizeof(MCInfo));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcInfo\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
int CreateMcStatus(OperPacket * pPkt, int toggle)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->sendMcStatus.cmdCode = DCMD_SEND_MC_STATUS;
|
|||
|
|
pPkt->sendMcStatus.toggle = (u16)toggle;
|
|||
|
|
|
|||
|
|
// printf("create mc status len=%d\r\n", sizeof(MCStatus));
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(g_workCtrl.cursta)), sizeof(MCStatus));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>λͼ
|
|||
|
|
int CreateFileList(OperPacket * pPkt, int toggle)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->setFilesList.cmdCode= DCMD_SEND_FILE_LIST;
|
|||
|
|
pPkt->setFilesList.fileIdxMap = (u16)toggle;
|
|||
|
|
|
|||
|
|
// printf("create mc status len=%d\r\n", sizeof(MCStatus));
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(g_workCtrl.cursta)), sizeof(MCStatus));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void SensorsStatus(int mode, u8 * buf)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
|
int CreateSensorsStatus(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
u8 insta[MAX_EXDP_LEN];
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
memset(&insta, 0, MAX_EXDP_LEN);
|
|||
|
|
|
|||
|
|
pPkt->sendSensors.cmdCode = DCMD_SEND_SENSORS;
|
|||
|
|
|
|||
|
|
SensorsStatus(0, &insta[0]);
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(insta)), MAX_EXDP_LEN);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>λͼ
|
|||
|
|
int CreateSensorsBmp(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
u8 insta[MAX_EXDP_LEN];
|
|||
|
|
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->sendSensors.cmdCode = DCMD_SEND_SENSORS_BMP;
|
|||
|
|
|
|||
|
|
SensorsStatus(1, &insta[0]);
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(insta)),MAX_EXDP_LEN);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateSensorsBmp\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void TraverseTask(u8 protocol, u8 nodeId, u8 nodeType, int traNum)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB) // <20>廨<EFBFBD><E5BBA8>
|
|||
|
|
EmbTraverseTask(nodeId, nodeType, traNum);
|
|||
|
|
#elif (CUR_MACHINE == MACH_WIRE)
|
|||
|
|
WireTraverseTask(nodeId, traNum);
|
|||
|
|
#else
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ResetCHB(u32 hdsel)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.errorCode = ERR_NONE;
|
|||
|
|
g_workCtrl.almflashGreen = ALM_LIT_FLASH;
|
|||
|
|
g_workCtrl.almflashRed = ALM_LIT_OFF;
|
|||
|
|
g_workCtrl.almflashYello = ALM_LIT_OFF;
|
|||
|
|
g_workCtrl.almflashBee = ALM_LIT_OFF;
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.btrdLength = g_workCtrl.chBobbinLength;
|
|||
|
|
g_workCtrl.savedpara.btrdLength = g_workCtrl.cursta.btrdLength;
|
|||
|
|
g_workCtrl.cursta.btrdPics = g_workCtrl.chBobbinPics;
|
|||
|
|
g_workCtrl.savedpara.btrdPics = g_workCtrl.cursta.btrdPics;
|
|||
|
|
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
|
|||
|
|
printf("get cmd MC_CLEAN_BOBBIN\r\n");
|
|||
|
|
|
|||
|
|
ReportError(0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>״̬
|
|||
|
|
void SetMcStatus(u32 sta, u32 para)
|
|||
|
|
{
|
|||
|
|
switch(sta)
|
|||
|
|
{
|
|||
|
|
case MC_STA_CLENA_ERR: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CleanError();
|
|||
|
|
break;
|
|||
|
|
case MC_STA_EN_WORK: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(״̬)
|
|||
|
|
printf("set en work sta\r\n");
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENSTATE;
|
|||
|
|
break;
|
|||
|
|
case MC_STA_DIS_WORK: // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>(״̬)
|
|||
|
|
printf("set dis work sta\r\n");
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_ENSTATE);
|
|||
|
|
break;
|
|||
|
|
case MC_STA_EN_TIME: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_ENTIME;
|
|||
|
|
break;
|
|||
|
|
case MC_STA_DIS_TIME: // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>(ʱ<><CAB1>)
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_ENTIME);
|
|||
|
|
break;
|
|||
|
|
case MC_CLEAN_COUNT: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (para == 0)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.outCounter = 0;
|
|||
|
|
g_workCtrl.cursta.embNeedleNum = 0; // 20211027,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
int decinc = (s16)para;
|
|||
|
|
decinc += g_workCtrl.cursta.outCounter;
|
|||
|
|
if (decinc < 0)
|
|||
|
|
{
|
|||
|
|
decinc = 0;
|
|||
|
|
}
|
|||
|
|
g_workCtrl.cursta.outCounter = decinc;
|
|||
|
|
}
|
|||
|
|
g_workCtrl.savedpara.outCounter = g_workCtrl.cursta.outCounter;
|
|||
|
|
g_workCtrl.savedpara.embNeedleNum = g_workCtrl.cursta.embNeedleNum;
|
|||
|
|
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
ReportError(0);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case MC_STA_MANUAL: // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_WKAUTO);
|
|||
|
|
break;
|
|||
|
|
case MC_STA_AUTO: // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_WKAUTO;
|
|||
|
|
break;
|
|||
|
|
case MC_FILE_SWITCH: // <20>ļ<EFBFBD><C4BC>л<EFBFBD>
|
|||
|
|
g_workCtrl.cursta.fileIdx = para;
|
|||
|
|
break;
|
|||
|
|
case MC_INVALID_FILE: // <20>ļ<EFBFBD>ʧЧ<CAA7><D0A7><EFBFBD><EFBFBD>
|
|||
|
|
InvalidDatFile(para);
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_EN_SCAN); // <20><>ֹɨ<D6B9><C9A8>
|
|||
|
|
printf("get InvalidDatFile cmd, Reset work sta en scan1\r\n");
|
|||
|
|
break;
|
|||
|
|
case MC_CLEAN_PARA_REF: // <20><><EFBFBD><EFBFBD>ˢ<EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_NEW_PARA);
|
|||
|
|
break;
|
|||
|
|
case MC_SET_TO_NORMAL: // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_SIMULATE);
|
|||
|
|
break;
|
|||
|
|
case MC_SET_TO_SIMULATE: // <20><><EFBFBD><EFBFBD>Ϊģ<CEAA><EFBFBD><E2B9A4>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_SIMULATE;
|
|||
|
|
break;
|
|||
|
|
case MC_CLEAN_FIDX:
|
|||
|
|
SetDatIdxToStart();
|
|||
|
|
/*
|
|||
|
|
g_workCtrl.cursta.dataIdx = 0; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
g_workCtrl.savedpara.dataIdx = g_workCtrl.cursta.dataIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
GetWorkPosFromIndex();*/
|
|||
|
|
break;
|
|||
|
|
case MC_CLEAN_BOBBIN: // <20><><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
ResetCHB(para);
|
|||
|
|
break;
|
|||
|
|
case MC_SET_ENTER_SCAN_SENSOR: // <20><><EFBFBD><EFBFBD>Ϊ <20><><EFBFBD><EFBFBD> ɨ<>贫<EFBFBD><E8B4AB><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_SENSOR;
|
|||
|
|
printf("get MC_SET_ENTER_SCAN_SENSOR cmd\r\n");
|
|||
|
|
break;
|
|||
|
|
case MC_SET_EXIT_SCAN_SENSOR: // <20><><EFBFBD><EFBFBD>Ϊ <20>˳<EFBFBD> ɨ<>贫<EFBFBD><E8B4AB><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_SENSOR);
|
|||
|
|
CleanButtonTask();
|
|||
|
|
printf("get MC_SET_EXIT_SCAN_SENSOR cmd\r\n");
|
|||
|
|
break;
|
|||
|
|
case MC_SET_ENTER_TEST_OUTPUT: // <20><><EFBFBD><EFBFBD>Ϊ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_OUTPUT;
|
|||
|
|
printf("get MC_SET_ENTER_TEST_OUTPUT cmd\r\n");
|
|||
|
|
break;
|
|||
|
|
case MC_SET_EXIT_TEST_OUTPUT: // <20><><EFBFBD><EFBFBD>Ϊ <20>˳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_OUTPUT);
|
|||
|
|
CleanButtonTask();
|
|||
|
|
printf("get MC_SET_EXIT_TEST_OUTPUT cmd\r\n");
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case MC_STA_EXIT_TRA: // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_TRAVERSE;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case MC_STA_EXIT_THREADBK: // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_DETBK);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case MC_INVALID_FILEBLOCK: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݿ<EFBFBD>ʧЧ<CAA7><D0A7><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD>仨<EFBFBD><E4BBA8><EFBFBD>ļ<EFBFBD>)
|
|||
|
|
{
|
|||
|
|
InvalidDatBlock();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int ControlByHand(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
int err;
|
|||
|
|
printf("receive ctrl by hand, actcode=0x%x, para1=0x%x, para2=0x%x, para3=0x%x\r\n",
|
|||
|
|
pPkt->actByhand.actCode, pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
|
|||
|
|
err = ERR_NONE;
|
|||
|
|
|
|||
|
|
if (err != ERR_NONE)
|
|||
|
|
{
|
|||
|
|
ReportError(err);
|
|||
|
|
return err;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch (pPkt->actByhand.actCode)
|
|||
|
|
{
|
|||
|
|
case MOTO_TO_ZERO: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
MotoToZero(pPkt->actByhand.para1);
|
|||
|
|
break;
|
|||
|
|
case MOVE_BY_HAND: // <20><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD>
|
|||
|
|
// printf("para1=%d, para2=%d, para3=%d\r\n", pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
MoveMotoByHand(pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
break;
|
|||
|
|
case OUTPUT_CTRL: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
OutputByHand(pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
break;
|
|||
|
|
case MOTO_EN_CTRL: // <20>ŷ<EFBFBD><C5B7>ر<F2BFAAB9>
|
|||
|
|
MotosServoCtrl(pPkt->actByhand.para1, pPkt->actByhand.para2);
|
|||
|
|
break;
|
|||
|
|
case MANUAL_ACTION: // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
|
|||
|
|
ManualActionCtrl(pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
break;
|
|||
|
|
case TEST_THREADBK: // <20><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><DFBC><EFBFBD>
|
|||
|
|
TestThreadBreak(pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
break;
|
|||
|
|
case SHAKE_FRAME_TEST: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ShakeFrameTest(pPkt->actByhand.para1, pPkt->actByhand.para2, pPkt->actByhand.para3);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void MotoToZero(u16 obj)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void MoveMotoByHand(u16 obj, u16 dir, u16 spd)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void OutputByHand(u16 obj, u16 act, u16 para)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void MotosServoCtrl(u16 obj, u16 onoff)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void ManualActionCtrl(u16 obj, u16 para2, u16 para3)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void TestThreadBreak(int type, int needle, int head)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ShakeFrameTest(u16 ofstx, u16 ofsty, u16 runspd)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_WIRE)
|
|||
|
|
WireShakeFrameTest(ofstx, ofsty, runspd);
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int ControlWork(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
printf("work cmd, code=0x%x\r\n", pPkt->mcWork.workCode);
|
|||
|
|
switch(pPkt->mcWork.workCode)
|
|||
|
|
{
|
|||
|
|
case WORK_START: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_PAUSE: // <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_FINISH: // <20><><EFBFBD≯<EFBFBD>λ
|
|||
|
|
{
|
|||
|
|
AllToReset();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_FIND_ZERO: // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
AllToZero();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_GOTO_START: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
GotoStartPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_GOTO_ANCHOR: // <20>ض<EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
{
|
|||
|
|
GotoAnchorPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_GOTO_OFFSET: // <20><>ƫ<EFBFBD>Ƶ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
GotoOffsetPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_SET_OFFSET: // <20><>ƫ<EFBFBD>Ƶ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
SetOffsetPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_CHECK_FRAME: // <20>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
CheckFrame();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_SIMULATION_FRAME: // <20><><EFBFBD>߱߿<DFB1>
|
|||
|
|
{
|
|||
|
|
SimulationFrame();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_FAST_JUMP: // <20><><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
FastJump(pPkt->mcWork.para1);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_GOTO_WKPOS: // <20>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
GotoWorkPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_GOTO_FINISH: // <20>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
GotoFinishPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_GOTO_ZERO: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
{
|
|||
|
|
GotoFrameZeroPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_RPM_CHG: // <20>ٶȸı<C8B8>
|
|||
|
|
{
|
|||
|
|
ChangeRpm((int)(pPkt->mcWork.para1));
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_FILE_IDX_CHG: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ÿı<C5B8>
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.fileIdx = (pPkt->mcWork.para1);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case WORK_GOTO_FEED: // <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
GotoFeedPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_SET_FEED: // <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
SetFeedPos();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_ACT_OIL: // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
OilingInWorking(pPkt->mcWork.para1);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int ControlWorkWhenWorking(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
printf("work cmd when work, code=0x%x\r\n", pPkt->mcWork.workCode);
|
|||
|
|
switch(pPkt->mcWork.workCode)
|
|||
|
|
{
|
|||
|
|
case WORK_PAUSE: // <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
g_workCtrl.stopFlag = 1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_RPM_CHG: // <20>ٶȸı<C8B8>
|
|||
|
|
{
|
|||
|
|
ChangeRpm((int)(pPkt->mcWork.para1));
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case WORK_ACT_OIL: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
OilingInWorking(pPkt->mcWork.para1);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void ChangeRpm(int rpmchg)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD≯<EFBFBD>λ
|
|||
|
|
__WEAK void AllToReset(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void AllToZero(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoStartPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoAnchorPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoOffsetPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void SetOffsetPos(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoWorkPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoFinishPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoFeedPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void SetFeedPos(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GotoFrameZeroPos(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int CheckFrame(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>߱߿<DFB1>
|
|||
|
|
void SimulationFrame(void)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB)
|
|||
|
|
EmbSimulationFrame();
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int FastJump(u32 idx)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void OilingInWorking(u32 para1)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int MoveFrameToPos(s32 posx, s32 posy)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>
|
|||
|
|
__WEAK int FixMoveFrame(s32 xmvmnt, s32 yxmvmnt)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void MoveFrameTo(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
s32 posx, posy;
|
|||
|
|
|
|||
|
|
posx = pPkt->moveFrameTo.posx;
|
|||
|
|
posy = pPkt->moveFrameTo.posy;
|
|||
|
|
|
|||
|
|
printf("move to cmd, posx=%d, posy=%d\r\n", posx, posy);
|
|||
|
|
|
|||
|
|
MoveFrameToPos(posx, posy);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void MoveFrameAsOfst(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
s32 ofstx, ofsty;
|
|||
|
|
|
|||
|
|
ofstx = pPkt->moveFrameTo.posx;
|
|||
|
|
ofsty = pPkt->moveFrameTo.posy;
|
|||
|
|
|
|||
|
|
printf("move as ofst cmd, ofstx=%d, ofsty=%d\r\n", ofstx, ofsty);
|
|||
|
|
|
|||
|
|
FixMoveFrame(ofstx, ofsty);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
int ReportError(int errCode)
|
|||
|
|
{
|
|||
|
|
if (errCode != g_workCtrl.cursta.errorCode)
|
|||
|
|
{
|
|||
|
|
printf("Error: code=0x%x\r\n", errCode);
|
|||
|
|
//printf("cursta work status 0x%x\r\n",g_workCtrl.cursta.workStatus);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.errorCode = errCode;
|
|||
|
|
|
|||
|
|
SendStatus(1);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CleanError(void)
|
|||
|
|
{
|
|||
|
|
ReportError(ERR_NONE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void SetLightStaByCode(int errCode)
|
|||
|
|
{
|
|||
|
|
if (errCode == 0 || (errCode >= 0x100 && errCode < 0x200)) // ״̬
|
|||
|
|
{
|
|||
|
|
if (((g_workCtrl.cursta.workStatus & WORK_STA_WORKING) == WORK_STA_WORKING) ||
|
|||
|
|
((g_workCtrl.cursta.workStatus & WORK_STA_SIMULATE) == WORK_STA_SIMULATE) ||
|
|||
|
|
((g_workCtrl.cursta.workStatus & WORK_STA_BUSY) == WORK_STA_BUSY) ||
|
|||
|
|
0 )
|
|||
|
|
{
|
|||
|
|
g_workCtrl.almflashRed = ALM_LIT_OFF; // <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
g_workCtrl.almflashGreen = ALM_LIT_FLASH; // <20><><EFBFBD>̵<EFBFBD>
|
|||
|
|
g_workCtrl.almflashYello = ALM_LIT_OFF; // <20>ػƵ<D8BB>
|
|||
|
|
g_workCtrl.almflashBee = ALM_LIT_OFF; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
g_workCtrl.almflashRed = ALM_LIT_OFF; // <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
g_workCtrl.almflashGreen = ALM_LIT_OFF; // <20><><EFBFBD>̵<EFBFBD>
|
|||
|
|
g_workCtrl.almflashYello = ALM_LIT_ON; // <20><><EFBFBD>Ƶ<EFBFBD>
|
|||
|
|
g_workCtrl.almflashBee = ALM_LIT_OFF; // <20>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else // <20><><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
g_workCtrl.almflashRed = ALM_LIT_FLASH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.almflashGreen = ALM_LIT_OFF; // <20><><EFBFBD>̵<EFBFBD>
|
|||
|
|
g_workCtrl.almflashYello = ALM_LIT_OFF; // <20>ػƵ<D8BB>
|
|||
|
|
g_workCtrl.almflashBee = ALM_LIT_FLASH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ״̬<D7B4>ı<EFBFBD><C4B1>ж<EFBFBD>
|
|||
|
|
int IsStatusChanged(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
RefreshStatus();
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.workableTimer = GetWorkableTime(); // <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ֵ
|
|||
|
|
|
|||
|
|
// <20>Ƚϣ<C8BD><CFA3><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rslt = memcmp(&(g_workCtrl.oldsta), &(g_workCtrl.cursta), sizeof(MCStatus));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
memcpy(&(g_workCtrl.oldsta), &(g_workCtrl.cursta), sizeof(MCStatus));
|
|||
|
|
}
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void SendStatus(int force)
|
|||
|
|
{
|
|||
|
|
SendMcStatus(force);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK void CheckSensorAndPos(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void CheckAndRequestData(void)
|
|||
|
|
{
|
|||
|
|
static int olddatblockIdx = -1; // <20><>¼<EFBFBD><C2BC>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ID
|
|||
|
|
static u32 requesttimer = 0; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼
|
|||
|
|
if (IsDatFileAvailable() == TRUE && // 20231017
|
|||
|
|
g_datFile.storage == STORAGE_NETWORK && // 20240204
|
|||
|
|
g_workCtrl.requestFlag == 0 && // 20240606
|
|||
|
|
1)
|
|||
|
|
{
|
|||
|
|
u32 timer = GetMsSoftTimer();
|
|||
|
|
|
|||
|
|
int datblockIdx = GetBlockIdxNeedtoLoad(GetDatIndex());
|
|||
|
|
if (datblockIdx >= 0)
|
|||
|
|
{
|
|||
|
|
if (olddatblockIdx != datblockIdx ||
|
|||
|
|
((timer - requesttimer) > REQUEST_GAP) ||
|
|||
|
|
0)
|
|||
|
|
{
|
|||
|
|
olddatblockIdx = datblockIdx;
|
|||
|
|
requesttimer = timer;
|
|||
|
|
RequestADataBlock(datblockIdx);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void SetFileOkFlag(int flag)
|
|||
|
|
{
|
|||
|
|
if (flag == 0)
|
|||
|
|
{
|
|||
|
|
printf("clean file ok flag\r\n");
|
|||
|
|
g_workCtrl.cursta.workStatus &= ~(WORK_STA_FILEOK); // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("set file ok flag\r\n");
|
|||
|
|
g_workCtrl.cursta.workStatus |= WORK_STA_FILEOK; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SendStatus(0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void SaveFileIdxFromDatafile(void)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.fileIdx = g_datFile.fileIdx;
|
|||
|
|
g_workCtrl.savedpara.fileIdxMap = g_datFile.fileIdxMap;
|
|||
|
|
g_workCtrl.savedpara.fileIdx = g_workCtrl.cursta.fileIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetDatIndex(void)
|
|||
|
|
{
|
|||
|
|
return g_workCtrl.cursta.dataIdx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int DatIndexInc(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
rslt = g_workCtrl.cursta.dataIdx + 1;
|
|||
|
|
|
|||
|
|
if (IsDatIndexAvailable(rslt) == TRUE)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.dataIdx = rslt;
|
|||
|
|
g_workCtrl.savedpara.dataIdx = g_workCtrl.cursta.dataIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int DatIndexDec(void)
|
|||
|
|
{
|
|||
|
|
if (g_workCtrl.cursta.dataIdx != 0)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.dataIdx--;
|
|||
|
|
|
|||
|
|
g_workCtrl.savedpara.dataIdx = g_workCtrl.cursta.dataIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
return g_workCtrl.cursta.dataIdx;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__WEAK int GetWorkPosFromIndex(void)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int SetExecProgress(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
FileExecPara execPara;
|
|||
|
|
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pPkt->setExecProgress.exLen != sizeof(execPara))
|
|||
|
|
{
|
|||
|
|
printf("receive len not equ, receivelen=%d, FileExecPara = %d", pPkt->setExecProgress.exLen, sizeof(execPara));
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
memcpy((u8*)(&execPara), pPkt->setExecProgress.exData, sizeof(execPara));
|
|||
|
|
rslt = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB)
|
|||
|
|
rslt = EmbSetProgress(&execPara);
|
|||
|
|
#elif (CUR_MACHINE == MACH_PES)
|
|||
|
|
rslt = PESSetProgress(&execPara);
|
|||
|
|
#endif
|
|||
|
|
if (rslt == 0) // 20231017
|
|||
|
|
{
|
|||
|
|
g_workCtrl.savedpara.dataIdx = g_workCtrl.cursta.dataIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ݴ<EFBFBD>ͷ<EFBFBD><CDB7>ʼ
|
|||
|
|
void SetDatIdxToStart(void)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.cursta.dataIdx = 0; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뼣<EFBFBD><EBBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
g_workCtrl.cursta.colorIdx = 0; // 20220708 <20><><EFBFBD>ݴ<EFBFBD>ͷ<EFBFBD><CDB7>ʼ,ɫ<><C9AB>ҲӦ<D2B2>ô<EFBFBD>ͷ<EFBFBD><CDB7>ʼ
|
|||
|
|
|
|||
|
|
g_workCtrl.savedpara.dataIdx = g_workCtrl.cursta.dataIdx;
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
|
|||
|
|
// <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|||
|
|
g_workCtrl.embMendEndIdx = -1;
|
|||
|
|
g_workCtrl.embMendTrdFlag = 0;
|
|||
|
|
g_workCtrl.mendEndPatternIdx = 0;
|
|||
|
|
|
|||
|
|
GetWorkPosFromIndex();
|
|||
|
|
|
|||
|
|
#if (CUR_MACHINE == MACH_EMB)
|
|||
|
|
EmbSetDatIdxToStart();
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void SaveToNvArea(s32 * posilist)
|
|||
|
|
{
|
|||
|
|
if (posilist != NULL)
|
|||
|
|
{
|
|||
|
|
memcpy((s32 *)(&(g_workCtrl.savedpara.motospos[0])), posilist, sizeof(s32)*AXIS_NUM);
|
|||
|
|
SaveWorkNvPara();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ReadAndFreshMotosPos(void)
|
|||
|
|
{
|
|||
|
|
s32 pos[AXIS_NUM];
|
|||
|
|
|
|||
|
|
if (GetMotosCounter(pos) == 0)
|
|||
|
|
{
|
|||
|
|
RefreshMotosPos(pos);
|
|||
|
|
SaveToNvArea(pos); // <20><><EFBFBD>浽<EFBFBD><E6B5BD><EFBFBD>籣<EFBFBD><E7B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ReadMotosPos(void)
|
|||
|
|
{// ֻˢ<D6BB><CBA2>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
s32 pos[AXIS_NUM];
|
|||
|
|
|
|||
|
|
if (GetMotosCounter(pos) == 0)
|
|||
|
|
{
|
|||
|
|
RefreshMotosPos(pos);
|
|||
|
|
//SaveToNvArea(pos); // <20><><EFBFBD>浽<EFBFBD><E6B5BD><EFBFBD>籣<EFBFBD><E7B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void NormalRefPosition(u32 para, s32 * posilist)
|
|||
|
|
{
|
|||
|
|
SaveToNvArea(posilist);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|