optical/SEW-EXA1/Users/App/workctrl/debug.c
2025-09-04 09:45:08 +08:00

299 lines
5.3 KiB
C

//-------------------------------------------------------------------------------
// File Name: debug.c
// Brief:
// Version: 1.0.0
// Create Date: 2018/03/20
// Create by: Marshal Lee
// Copyright:
// Copyright (c) 2017, Richpeace Co., LTD.
// All rights reserved.
//
// Modify by: Marshal Lee
// Modify Date: 2018/03/20
//-------------------------------------------------------------------------------
#define _IN_DEBUG_C
#include "debug.h"
#include "inout.h"
#include "shell.h"
#include "delay.h"
//--------------------------------------------------------------------
void TestInputs(char * para1, char * para2);
void TestOutput(char * para1, char * para2);
//--------------------------------------------------------------------
//--------------------------------------------------------------------
void InitDebug(void)
{
AddShellCmd("INPUT", "input detect", TestInputs);
AddShellCmd("OUTPUT", "output control", TestOutput);
#if (0)
do
{
TestOutput("1", "1000");
}while(1);
#endif
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------
//
// 测试功能
//--------------------------------------------------------------------
char g_inputName[INPUT_NUM][INPUT_STR_LEN] =
{
"输入1",
"输入2",
"输入3",
"输入4",
"输入5",
"输入6",
"输入7",
"输入8",
};
#define INPUT_OP(cs, name) do\
{\
temp = name();\
if (temp != inputsta[cs])\
{\
inputsta[cs] = temp;\
printf("%d. (%s) is %d\r\n", inidx++, g_inputName[cs], temp);\
}\
}while(0)
void TestInputs(char * para1, char * para2)
{
int p1, p2;
if (para1 == NULL || para2 == NULL)
{
return;
}
printf("para1=%s, para2=%s\r\n", para1, para2);
p1 = 0;
p2 = 0;
if (strcmp(para1, "") != 0)
{
p1 = atoi(para1);
if (strcmp(para2, "") != 0)
{
p2 = atoi(para2);
}
}
if (p1 == p2)
{
}
//--------------------------------
{
int inidx = 0;
u8 inputsta[INPUT_NUM];
u8 temp;
memset(inputsta, 0xff, INPUT_NUM);
do
{
INPUT_OP(0, GetInput1Status);
INPUT_OP(1, GetInput2Status);
INPUT_OP(2, GetInput3Status);
INPUT_OP(3, GetInput4Status);
INPUT_OP(4, GetInput5Status);
INPUT_OP(5, GetInput6Status);
INPUT_OP(6, GetInput7Status);
INPUT_OP(7, GetInput8Status);
DelayMs(10);
if (IsConsoleCancel() != 0 || p1 == 0) // 终端输入停止
{
break;
}
}while(p1 != 0);
}
}
//----------------------------------------------------------------
char g_outputName[OUTPUT_NUM][OUTPUT_STR_LEN] =
{
"输出1",
"输出2",
"输出3",
"输出4",
"输出5",
"输出6",
"输出7",
"输出8",
};
#define TOUT_OP(cs, name, dl) do\
{\
if (p2 == 0)\
{\
Set##name##Off();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
}\
else if (p2 == 1)\
{\
Set##name##On();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
}\
else if (p2 == 2)\
{\
Set##name##On();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
DelayMs(dl);\
Set##name##Off();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
}\
else if (p2 > 0)\
{\
count = dl*p2;\
while(count > 0) \
{\
count--;\
Set##name##On();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
delay = (p2+9)/10;\
do \
{ \
DelayMs(10);\
if (IsConsoleCancel() != 0) \
{\
break;\
}\
delay--;\
}while(delay != 0);\
if (delay != 0)\
{\
break;\
}\
Set##name##Off();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
delay = (p2+9)/10;\
delay *= 4;\
do \
{ \
DelayMs(10);\
if (IsConsoleCancel() != 0) \
{\
break;\
}\
delay--;\
}while(delay != 0);\
if (delay != 0)\
{\
break;\
}\
}\
Set##name##Off();\
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
}\
}while(0)
void TestOutput(char * para1, char * para2)
{
int p1, p2;
int count, delay;
if (para1 == NULL || para2 == NULL)
{
return;
}
printf("para1=%s, para2=%s\r\n", para1, para2);
if (strcmp(para1, "") == 0 || strcmp(para2, "") == 0)
{
return;
}
p1 = atoi(para1);
p2 = atoi(para2);
if (p1 == p2)
{
}
//--------------------------------
if (p1 == 0)
{
if (p2 == 0)
{
TOUT_OP(0, Output1, 1000);
TOUT_OP(1, Output2, 1000);
TOUT_OP(2, Output3, 1000);
TOUT_OP(3, Output4, 1000);
TOUT_OP(4, Output5, 1000);
TOUT_OP(5, Output6, 1000);
TOUT_OP(6, Output7, 1000);
TOUT_OP(7, Output8, 1000);
}
else if (p2 == 1)
{
}
}
else if (p1 < 100)
{
switch(p1)
{
case 1:
TOUT_OP(0, Output1, 1000);
break;
case 2:
TOUT_OP(1, Output2, 1000);
break;
case 3:
TOUT_OP(2, Output3, 1000);
break;
case 4:
TOUT_OP(3, Output4, 1000);
break;
case 5:
TOUT_OP(4, Output5, 1000);
break;
case 6:
TOUT_OP(5, Output6, 1000);
break;
case 7:
TOUT_OP(6, Output7, 1000);
break;
case 8:
TOUT_OP(7, Output8, 1000);
break;
default:
break;
}
}
}
//----------------------------------------------------------------
void SetInputNameString(const void* pDat)
{
memcpy(g_inputName, pDat, INPUT_NUM*INPUT_STR_LEN);
}
void SetOutputNameString(const void* pDat)
{
memcpy(g_outputName, pDat, OUTPUT_NUM*OUTPUT_STR_LEN);
}