1695 lines
43 KiB
C
1695 lines
43 KiB
C
/*************************** (C) COPYRIGHT 2017 CXHY ****************************
|
||
* 文件名 :device.c
|
||
* 描 述 :外部设备控制检测
|
||
* 版 本 :V1.0
|
||
* 作 者 :XuZhongPing
|
||
* 日 期 :2017/09/04
|
||
*********************************************************************************/
|
||
#include "deviceSet.h"
|
||
#include "device.h"
|
||
#include "usart1.h"
|
||
#include "usart2.h"
|
||
#include "delay.h"
|
||
#include "timer.h"
|
||
#include "data_typedef.h"
|
||
#include "tcp_protocol.h"
|
||
#include "lcd.h"
|
||
#include "display.h"
|
||
#include "stmflash.h"
|
||
#include "qr_code.h"
|
||
#include "scale.h"
|
||
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: ShowRecyclingType
|
||
* 功能说明: 显示回收箱类型
|
||
* 形 参:type -> 可回收物类型
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void ShowRecyclingType(uint8_t type)
|
||
{
|
||
switch(type)
|
||
{
|
||
case PAPER:
|
||
printf("纸类");
|
||
break;
|
||
|
||
case PLASTIC:
|
||
printf("塑料");
|
||
break;
|
||
|
||
case GLASS:
|
||
printf("玻璃");
|
||
break;
|
||
|
||
case METAL:
|
||
printf("金属");
|
||
break;
|
||
|
||
case RECYCLED:
|
||
printf("可回收物");
|
||
break;
|
||
|
||
case KITCHEN:
|
||
printf("厨余");
|
||
break;
|
||
|
||
case SMALL_BOTTLE:
|
||
printf("小塑料瓶子");
|
||
break;
|
||
|
||
case BIG_BOTTLE:
|
||
printf("大塑料瓶子");
|
||
break;
|
||
|
||
case CANS:
|
||
printf("易拉罐");
|
||
break;
|
||
|
||
case BATTERY:
|
||
printf("电池");
|
||
break;
|
||
|
||
case FABRIC:
|
||
printf("织物");
|
||
break;
|
||
|
||
case BOOK:
|
||
printf("书本");
|
||
break;
|
||
|
||
case NEWSPAPER:
|
||
printf("报纸");
|
||
break;
|
||
|
||
case KITCHEN_1:
|
||
printf("厨余1");
|
||
break;
|
||
|
||
case KITCHEN_2:
|
||
printf("厨余2");
|
||
break;
|
||
|
||
case PLASTIC_2:
|
||
printf("塑料2");
|
||
break;
|
||
|
||
case OTHER:
|
||
printf("其它");
|
||
break;
|
||
|
||
case HARMFUL:
|
||
printf("有害");
|
||
break;
|
||
|
||
case DRY_WASTES:
|
||
printf("干垃圾");
|
||
break;
|
||
|
||
case WET_WASTES:
|
||
printf("湿垃圾");
|
||
break;
|
||
|
||
default:
|
||
printf("未知(%d)", type);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DeviceInfoShow
|
||
* 功能说明: 设备信息显示
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DeviceInfoShow(void)
|
||
{
|
||
printf("\r\n设备信息:\r\n");
|
||
printf("------------\r\n");
|
||
|
||
printf("软件%s\r\n", VersionStr);
|
||
|
||
switch(deviceType)
|
||
{
|
||
case SINGLE_CLASSIFICATION:
|
||
printf("设备类型: “一分类设备” (");
|
||
ShowRecyclingType(devChannel1Type);
|
||
printf(")\r\n");
|
||
break;
|
||
|
||
case DOUBLE_CLASSIFICATION:
|
||
printf("设备类型: “两分类设备” (");
|
||
ShowRecyclingType(devChannel1Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel2Type);
|
||
printf(")\r\n");
|
||
break;
|
||
|
||
case DOUBLE_CLASSIFICATION_BOTTLE:
|
||
printf("设备类型: “两分类设备_含瓶类” (");
|
||
ShowRecyclingType(devChannel1Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel2Type);
|
||
printf(")\r\n");
|
||
break;
|
||
|
||
case THREE_CLASSIFICATION:
|
||
printf("设备类型: “三分类设备” (");
|
||
ShowRecyclingType(devChannel1Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel2Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel3Type);
|
||
printf(")\r\n");
|
||
break;
|
||
|
||
case FOUR_CLASSIFICATION:
|
||
printf("设备类型: “四分类设备” (");
|
||
ShowRecyclingType(devChannel1Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel2Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel3Type);
|
||
printf("、");
|
||
ShowRecyclingType(devChannel4Type);
|
||
printf(")\r\n");
|
||
break;
|
||
}
|
||
|
||
Screen_ShowDeviceInfo(VersionStr, devChannel1Type, devChannel2Type, devChannel3Type, devChannel4Type);
|
||
|
||
printf("---------------------------\r\n");
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: SetDefaultOverflowAlarmParam
|
||
* 功能说明: 设置满溢报警默认参数
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void SetDefaultOverflowAlarmParam(void)
|
||
{
|
||
switch(deviceType)
|
||
{
|
||
case SINGLE_CLASSIFICATION: //单分类
|
||
break;
|
||
|
||
case DOUBLE_CLASSIFICATION: //两分类
|
||
break;
|
||
|
||
case DOUBLE_CLASSIFICATION_BOTTLE: //两分类含瓶子
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
// printf("\r\n设置默认满溢参数: h1 = %d; H1 = %d; A1 = %d; h2 = %d; H2 = %d; A2 = %d;\r\n",
|
||
// setDistance_L_DepthVal, setDistance_L_MaxVal, setDistance_L_AlarmPercent,
|
||
// setDistance_R_DepthVal, setDistance_R_MaxVal, setDistance_R_AlarmPercent);
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DeviceSetParamInit
|
||
* 功能说明: 设备设置参数初始化
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DeviceSetParamInit(void)
|
||
{
|
||
setDeviceType = deviceType;
|
||
setDevChannelNumbers = devChannelNumbers;
|
||
setDevChannel1Type = devChannel1Type;
|
||
setDevChannel2Type = devChannel2Type;
|
||
setDevChannel3Type = devChannel3Type;
|
||
setDevChannel4Type = devChannel4Type;
|
||
|
||
setPassword = password; //要设置的设备操作密码
|
||
setCustomerID = customerID; //客户号(用于控制谁可以打开收运清理门)
|
||
|
||
setDevChannel1DisDepthVal = devChannel1DisDepthVal;
|
||
setDevChannel1DisMaxVal = devChannel1DisMaxVal;
|
||
setDevChannel1DisAlarmPercent = devChannel1DisAlarmPercent;
|
||
|
||
setDevChannel2DisDepthVal = devChannel2DisDepthVal;
|
||
setDevChannel2DisMaxVal = devChannel2DisMaxVal;
|
||
setDevChannel2DisAlarmPercent = devChannel2DisAlarmPercent;
|
||
|
||
setDevChannel3DisDepthVal = devChannel3DisDepthVal;
|
||
setDevChannel3DisMaxVal = devChannel3DisMaxVal;
|
||
setDevChannel3DisAlarmPercent = devChannel3DisAlarmPercent;
|
||
|
||
setDevChannel4DisDepthVal = devChannel4DisDepthVal;
|
||
setDevChannel4DisMaxVal = devChannel4DisMaxVal;
|
||
setDevChannel4DisAlarmPercent = devChannel4DisAlarmPercent;
|
||
|
||
setDisableICCardFunStatus = disableICCardFunStatus; //设置“禁用IC卡用户”功能标志位
|
||
setEnableCleanQRCodeStatus = enableCleanQRCodeStatus; //设置“启用收运卡二维码开门”标志
|
||
|
||
printf("\r\n设备设置参数初始化完成!!!\r\n");
|
||
printf("\r\nSetParam:\r\n");
|
||
printf("P=%d; ID=%d; DevType=%d; Cnt=%d\r\n",
|
||
setPassword,
|
||
setCustomerID,
|
||
setDeviceType,
|
||
setDevChannelNumbers);
|
||
|
||
printf("T1=%d, h1=%d, H1=%d, A1=%d\r\n",
|
||
setDevChannel1Type, setDevChannel1DisDepthVal, setDevChannel1DisMaxVal, setDevChannel1DisAlarmPercent);
|
||
|
||
printf("T2=%d, h2=%d, H2=%d, A2=%d\r\n",
|
||
setDevChannel2Type, setDevChannel2DisDepthVal, setDevChannel2DisMaxVal, setDevChannel2DisAlarmPercent);
|
||
|
||
printf("T3=%d, h3=%d, H3=%d, A3=%d\r\n",
|
||
setDevChannel3Type, setDevChannel3DisDepthVal, setDevChannel3DisMaxVal, setDevChannel3DisAlarmPercent);
|
||
|
||
printf("T4=%d, h4=%d, H4=%d, A4=%d\r\n",
|
||
setDevChannel4Type, setDevChannel4DisDepthVal, setDevChannel4DisMaxVal, setDevChannel4DisAlarmPercent);
|
||
|
||
printf("ICE=%d, ICQR=%d\r\n", setDisableICCardFunStatus, setEnableCleanQRCodeStatus);
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DeviceParamInit
|
||
* 功能说明: 设备参数初始化
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DeviceParamInit(void)
|
||
{
|
||
password = setPassword;
|
||
customerID = setCustomerID;
|
||
|
||
deviceType = setDeviceType;
|
||
devChannelNumbers = setDevChannelNumbers;
|
||
devChannel1Type = setDevChannel1Type;
|
||
devChannel2Type = setDevChannel2Type;
|
||
devChannel3Type = setDevChannel3Type;
|
||
devChannel4Type = setDevChannel4Type;
|
||
|
||
#ifdef FOUR_DROP_PORTS
|
||
deviceType = FOUR_CLASSIFICATION;
|
||
devChannelNumbers = 4;
|
||
setDeviceType = deviceType;
|
||
setDevChannelNumbers = devChannelNumbers;
|
||
#endif
|
||
|
||
devChannel1DisDepthVal = setDevChannel1DisDepthVal;
|
||
devChannel1DisMaxVal = setDevChannel1DisMaxVal;
|
||
devChannel1DisAlarmPercent = setDevChannel1DisAlarmPercent;
|
||
|
||
devChannel2DisDepthVal = setDevChannel2DisDepthVal;
|
||
devChannel2DisMaxVal = setDevChannel2DisMaxVal;
|
||
devChannel2DisAlarmPercent = setDevChannel2DisAlarmPercent;
|
||
|
||
devChannel3DisDepthVal = setDevChannel3DisDepthVal;
|
||
devChannel3DisMaxVal = setDevChannel3DisMaxVal;
|
||
devChannel3DisAlarmPercent = setDevChannel3DisAlarmPercent;
|
||
|
||
devChannel4DisDepthVal = setDevChannel4DisDepthVal;
|
||
devChannel4DisMaxVal = setDevChannel4DisMaxVal;
|
||
devChannel4DisAlarmPercent = setDevChannel4DisAlarmPercent;
|
||
|
||
disableICCardFunStatus = setDisableICCardFunStatus;
|
||
enableCleanQRCodeStatus = setEnableCleanQRCodeStatus;
|
||
|
||
printf("\r\nDevice Param Init OK!!!\r\n");
|
||
printf("\r\nCurParam:\r\n");
|
||
printf("P=%d; ID=%d; DevType=%d; Cnt=%d\r\n",
|
||
password,
|
||
customerID,
|
||
deviceType,
|
||
devChannelNumbers);
|
||
|
||
printf("T1=%d, h1=%d, H1=%d, A1=%d\r\n",
|
||
devChannel1Type, devChannel1DisDepthVal, devChannel1DisMaxVal, devChannel1DisAlarmPercent);
|
||
|
||
printf("T2=%d, h2=%d, H2=%d, A2=%d\r\n",
|
||
devChannel2Type, devChannel2DisDepthVal, devChannel2DisMaxVal, devChannel2DisAlarmPercent);
|
||
|
||
printf("T3=%d, h3=%d, H3=%d, A3=%d\r\n",
|
||
devChannel3Type, devChannel3DisDepthVal, devChannel3DisMaxVal, devChannel3DisAlarmPercent);
|
||
|
||
printf("T4=%d, h4=%d, H4=%d, A4=%d\r\n",
|
||
devChannel4Type, devChannel4DisDepthVal, devChannel4DisMaxVal, devChannel4DisAlarmPercent);
|
||
|
||
printf("ICE=%d, ICQR=%d\r\n", disableICCardFunStatus, enableCleanQRCodeStatus);
|
||
}
|
||
|
||
|
||
//-----------------------------------------------------------------------------------
|
||
//通过二维码设置设备参数
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: StrToInt
|
||
* 功能说明: 字符串转整型数据(带格式校验)
|
||
* 形 参:str -> 待转换的字符串
|
||
* 返 回 值: 转换后的整型数据,当格式不正确时返回0xFFFFFFFF
|
||
***********************************************************************
|
||
*/
|
||
uint32_t StrToInt(char *str)
|
||
{
|
||
uint32_t res = 0xFFFFFFFF;
|
||
|
||
if(strlen(str) < 10) //要转换的内容长度小于10位数
|
||
{
|
||
if(strspn(str, "0123456789") == strlen(str)) //校验内容是不是都由数字组成
|
||
{
|
||
res = atoi(str);
|
||
}else{
|
||
res = 0xFFFFFFFF;
|
||
printf("\r\n内容格式错误\r\n");
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: StrArrToIntArr
|
||
* 功能说明: 字符串数组转换成整形数组
|
||
* 形 参:strArr -> 待转换的字符串数组
|
||
intArr -> 转换后的整形数组
|
||
len -> 要转的数组长度
|
||
* 返 回 值: 转换成功返回1,失败返0
|
||
***********************************************************************
|
||
*/
|
||
uint8_t StrArrToIntArr(char strArr[][16], uint32_t intArr[], uint8_t len)
|
||
{
|
||
uint8_t i = 0;
|
||
uint32_t temp;
|
||
|
||
// printf("\r\nstrArr[i] = {", strArr[i]);
|
||
for(i = 0; i < len; i++)
|
||
{
|
||
// printf("%s, ", strArr[i]);
|
||
temp = StrToInt(strArr[i]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
intArr[i] = temp;
|
||
}else{
|
||
printf("\r\nwrong format!\r\n");
|
||
return 0;
|
||
}
|
||
}
|
||
// printf("}\r\n");
|
||
|
||
return 1;
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: StringSplit
|
||
* 功能说明: 字符串拆分
|
||
* 形 参:str -> 待处理字符串
|
||
* 返 回 值: 正常分离返回1,错误返回0
|
||
***********************************************************************
|
||
*/
|
||
uint8_t StringSplit(char *str)
|
||
{
|
||
uint8_t res = 0;
|
||
uint8_t i = 0;
|
||
uint32_t temp = 0xFFFFFFFF;
|
||
static uint8_t preSetParamCmd = 0; //上一次的命令码
|
||
char *token;
|
||
|
||
memset(setParamList, 0x00, 16*16);
|
||
|
||
//分解出各参数
|
||
printf("\r\n分离参数!\r\n");
|
||
|
||
setParamCount = 0;
|
||
token = strtok(str, ",");
|
||
while (token != NULL)
|
||
{
|
||
// printf("\r\nparam%d %s\r\n", setParamCount, token);
|
||
if(strlen(token) < 16)
|
||
{
|
||
strcpy(setParamList[setParamCount], token);
|
||
token = strtok(NULL, ",");
|
||
setParamCount++;
|
||
}else{
|
||
printf("\r\n参数分离出错!长度过长\r\n");
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
printf("\r\nlen = %d, dataList: {", setParamCount);
|
||
for(i = 0; i < setParamCount; i++)
|
||
{
|
||
printf("%s, ", setParamList[i]);
|
||
}
|
||
printf("}\r\n");
|
||
|
||
//分解出命令码
|
||
temp = StrToInt(setParamList[0]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
setParamCmd = temp; //保存参数设置指令码
|
||
res = 1;
|
||
printf("\r\ncmd = %d\r\n", setParamCmd);
|
||
|
||
if((preSetParamCmd != setParamCmd) && (setParamCmd != 1))
|
||
{
|
||
if(setParamCmd != 1)
|
||
{
|
||
setParamChangeMark = 1;
|
||
printf("\r\n指令有变化!\r\n");
|
||
}
|
||
preSetParamCmd = setParamCmd;
|
||
}
|
||
}else{
|
||
res = 0;
|
||
printf("\r\n命令错误\r\n");
|
||
}
|
||
|
||
return res;
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: SetParamDecode
|
||
* 功能说明: 设置参数解码
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void SetParamDecode(uint8_t *pSetParamStr)
|
||
{
|
||
uint32_t temp = 0xFFFFFFFF;
|
||
char paramBuf[128];
|
||
uint32_t intDataArr[16];
|
||
uint8_t i = 0;
|
||
uint8_t len = 0;
|
||
uint8_t decodeOkMark = 0;
|
||
|
||
char *p;
|
||
char *pParam;
|
||
char *token;
|
||
|
||
p = (char*)strstr((const char*)pSetParamStr, ":");
|
||
pParam = p+1;
|
||
memset(paramBuf, 0x00, 128);
|
||
strcpy(paramBuf, pParam); //先备份设置的参数内容
|
||
|
||
decodeOkMark = StringSplit(paramBuf); //拆分出各参数
|
||
|
||
//判断是否为正常的设置命令
|
||
if(decodeOkMark == 1)
|
||
{
|
||
printf("\r\nsetCmd = %d\r\n", setParamCmd);
|
||
switch(setParamCmd)
|
||
{
|
||
case 1: //管理密码确认
|
||
printf("\r\nSET --> 管理密码确认!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getConfirmPassword = temp;
|
||
getConfirmPasswordMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n密码为:%d\r\n", getConfirmPassword);
|
||
}else{
|
||
getConfirmPasswordMark = 0;
|
||
printf("\r\n确认密码内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 2: //密码修改
|
||
printf("\r\nSET --> 密码修改!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getPassword = temp;
|
||
getPasswordMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n密码为:%d\r\n", getPassword);
|
||
}else{
|
||
getPasswordMark = 0;
|
||
printf("\r\n设置密码内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 3: //设备类型设置
|
||
printf("\r\nSET --> 设备类型设置!\r\n");
|
||
|
||
//设备类型
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getDeviceType = temp;
|
||
printf("\r\n设备类型为:%d\r\n", getDeviceType);
|
||
}else{
|
||
getDeviceTypeMark = 0;
|
||
printf("\r\n设置类型内容格式错误\r\n");
|
||
break;
|
||
}
|
||
|
||
//投口通道数量
|
||
printf("\r\nlist[2]:%s\r\n", setParamList[2]);
|
||
temp = StrToInt(setParamList[2]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getDevChannelNumbers = temp;
|
||
printf("\r\n设备投口通道数量为:%d\r\n", getDevChannelNumbers);
|
||
}else{
|
||
getDeviceTypeMark = 0;
|
||
printf("\r\n设备投口通道数量内容格式错误\r\n");
|
||
break;
|
||
}
|
||
|
||
temp = StrArrToIntArr(&setParamList[3], intDataArr, getDevChannelNumbers);
|
||
if(temp == 1)
|
||
{
|
||
if(getDevChannelNumbers == 1) //1分类
|
||
{
|
||
getDevChannel1Type = intDataArr[0];
|
||
getDeviceTypeMark = 1; //单投口设备则标志解码成功
|
||
printf("\r\n回收类型1:%d\r\n", getDevChannel1Type);
|
||
}else if(getDevChannelNumbers == 2){ //2分类
|
||
getDevChannel1Type = intDataArr[0];
|
||
getDevChannel2Type = intDataArr[1];
|
||
getDeviceTypeMark = 1; //标志解码成功
|
||
printf("\r\n回收类型2:%d, %d\r\n", getDevChannel1Type, getDevChannel2Type);
|
||
}else if(getDevChannelNumbers == 3){ //3分类
|
||
getDevChannel1Type = intDataArr[0];
|
||
getDevChannel2Type = intDataArr[1];
|
||
getDevChannel3Type = intDataArr[2];
|
||
getDeviceTypeMark = 1; //标志解码成功
|
||
printf("\r\n回收类型3:%d, %d, %d\r\n", getDevChannel1Type, getDevChannel2Type, getDevChannel3Type);
|
||
}else if(getDevChannelNumbers == 4){ //4分类
|
||
getDevChannel1Type = intDataArr[0];
|
||
getDevChannel2Type = intDataArr[1];
|
||
getDevChannel3Type = intDataArr[2];
|
||
getDevChannel4Type = intDataArr[3];
|
||
getDeviceTypeMark = 1; //标志解码成功
|
||
printf("\r\n回收类型4:%d, %d, %d, %d\r\n", getDevChannel1Type, getDevChannel2Type, getDevChannel3Type, getDevChannel4Type);
|
||
}else{}
|
||
}else{
|
||
getDeviceTypeMark = 0;
|
||
printf("\r\n设置回收类型内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 4: //设备客户号设置
|
||
printf("\r\nSET --> 设备客户号设置!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getCustomerID = temp;
|
||
getCustomerIDMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n客户号为:%d\r\n", getCustomerID);
|
||
}else{
|
||
getCustomerIDMark = 0;
|
||
printf("\r\n设置客户号内容格式错误\r\n");
|
||
}
|
||
break;
|
||
|
||
case 5:
|
||
break;
|
||
|
||
case 6: //启用/停用“禁用的IC卡不能开门”功能设置
|
||
printf("\r\nSET -->(禁用的IC卡不能开门)功能设置!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getDisableICCardFunStatus = temp;
|
||
getDisableICCardFunMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n状态为:%d\r\n", getDisableICCardFunStatus);
|
||
break;
|
||
}else{
|
||
getDisableICCardFunMark = 0;
|
||
printf("\r\n设置(禁用的IC卡不能开门)内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 7: //启用/停用“收运二维码开门”功能设置
|
||
printf("\r\nSET -->(收运二维码开门)功能设置!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getEnableCleanQRCodeStatus = temp;
|
||
getEnableCleanQRCodeMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n状态为:%d\r\n", getEnableCleanQRCodeStatus);
|
||
break;
|
||
}else{
|
||
getEnableCleanQRCodeMark = 0;
|
||
printf("\r\n设置(收运二维码开门)内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 13: //满溢报警参数设置
|
||
printf("\r\nSET -->(满溢参数)功能设置!\r\n");
|
||
|
||
//投口通道数量
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getDevChannelNumbers = temp;
|
||
printf("\r\n设备投口通道数量为:%d\r\n", getDevChannelNumbers);
|
||
}else{
|
||
getDeviceTypeMark = 0;
|
||
printf("\r\n设备投口通道数量内容格式错误\r\n");
|
||
break;
|
||
}
|
||
|
||
temp = StrArrToIntArr(&setParamList[2], intDataArr, getDevChannelNumbers*3);
|
||
if(temp == 1)
|
||
{
|
||
if(getDevChannelNumbers == 1) //1分类
|
||
{
|
||
getDevChannel1DisDepthVal = intDataArr[0];
|
||
getDevChannel1DisMaxVal = intDataArr[1];
|
||
getDevChannel1DisAlarmPercent = intDataArr[2];
|
||
getOverflowSetMark = 1; //单投口设备则标志解码成功
|
||
printf("\r\nOF1: %d, %d, %d\r\n", getDevChannel1DisDepthVal, getDevChannel1DisMaxVal, getDevChannel1DisAlarmPercent);
|
||
}else if(getDevChannelNumbers == 2){ //2分类
|
||
getDevChannel1DisDepthVal = intDataArr[0];
|
||
getDevChannel1DisMaxVal = intDataArr[1];
|
||
getDevChannel1DisAlarmPercent = intDataArr[2];
|
||
|
||
getDevChannel2DisDepthVal = intDataArr[3];
|
||
getDevChannel2DisMaxVal = intDataArr[4];
|
||
getDevChannel2DisAlarmPercent = intDataArr[5];
|
||
|
||
getOverflowSetMark = 1; //标志解码成功
|
||
printf("\r\nOF1: %d, %d, %d; OF2: %d, %d, %d\r\n", getDevChannel1DisDepthVal, getDevChannel1DisMaxVal, getDevChannel1DisAlarmPercent,
|
||
getDevChannel2DisDepthVal, getDevChannel2DisMaxVal, getDevChannel2DisAlarmPercent);
|
||
}else if(getDevChannelNumbers == 3){ //3分类
|
||
getDevChannel1DisDepthVal = intDataArr[0];
|
||
getDevChannel1DisMaxVal = intDataArr[1];
|
||
getDevChannel1DisAlarmPercent = intDataArr[2];
|
||
|
||
getDevChannel2DisDepthVal = intDataArr[3];
|
||
getDevChannel2DisMaxVal = intDataArr[4];
|
||
getDevChannel2DisAlarmPercent = intDataArr[5];
|
||
|
||
getDevChannel3DisDepthVal = intDataArr[6];
|
||
getDevChannel3DisMaxVal = intDataArr[7];
|
||
getDevChannel3DisAlarmPercent = intDataArr[8];
|
||
|
||
getOverflowSetMark = 1; //标志解码成功
|
||
printf("\r\nOF1: %d, %d, %d; OF2: %d, %d, %d; OF3: %d, %d, %d\r\n",
|
||
getDevChannel1DisDepthVal, getDevChannel1DisMaxVal, getDevChannel1DisAlarmPercent,
|
||
getDevChannel2DisDepthVal, getDevChannel2DisMaxVal, getDevChannel2DisAlarmPercent,
|
||
getDevChannel3DisDepthVal, getDevChannel3DisMaxVal, getDevChannel3DisAlarmPercent);
|
||
}else if(getDevChannelNumbers == 4){ //4分类
|
||
getDevChannel1DisDepthVal = intDataArr[0];
|
||
getDevChannel1DisMaxVal = intDataArr[1];
|
||
getDevChannel1DisAlarmPercent = intDataArr[2];
|
||
|
||
getDevChannel2DisDepthVal = intDataArr[3];
|
||
getDevChannel2DisMaxVal = intDataArr[4];
|
||
getDevChannel2DisAlarmPercent = intDataArr[5];
|
||
|
||
getDevChannel3DisDepthVal = intDataArr[6];
|
||
getDevChannel3DisMaxVal = intDataArr[7];
|
||
getDevChannel3DisAlarmPercent = intDataArr[8];
|
||
|
||
getDevChannel4DisDepthVal = intDataArr[9];
|
||
getDevChannel4DisMaxVal = intDataArr[10];
|
||
getDevChannel4DisAlarmPercent = intDataArr[11];
|
||
|
||
getOverflowSetMark = 1; //标志解码成功
|
||
printf("\r\nOF1: %d, %d, %d; OF2: %d, %d, %d; OF3: %d, %d, %d; OF4: %d, %d, %d\r\n",
|
||
getDevChannel1DisDepthVal, getDevChannel1DisMaxVal, getDevChannel1DisAlarmPercent,
|
||
getDevChannel2DisDepthVal, getDevChannel2DisMaxVal, getDevChannel2DisAlarmPercent,
|
||
getDevChannel3DisDepthVal, getDevChannel3DisMaxVal, getDevChannel3DisAlarmPercent,
|
||
getDevChannel4DisDepthVal, getDevChannel4DisMaxVal, getDevChannel4DisAlarmPercent);
|
||
}else{}
|
||
}else{
|
||
getDeviceTypeMark = 0;
|
||
printf("\r\n设置满溢参数内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 30: //称盘校准
|
||
printf("\r\nSET --> 称盘校准!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getScaleNum = temp;
|
||
getScaleCalibrationMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n称盘编号为:%d\r\n", getScaleNum);
|
||
}else{
|
||
getConfirmPasswordMark = 0;
|
||
printf("\r\n校准称盘操作内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 31: //临时开收运清理门二维码
|
||
printf("\r\nSET --> 临时开门!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getBoxOpenMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n开门编号为:%d\r\n", getScaleNum);
|
||
}else{
|
||
getBoxOpenMark = 0;
|
||
printf("\r\n临时开门操作内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 56: //密码强制修改
|
||
printf("\r\nSET --> 密码强制修改!\r\n");
|
||
printf("\r\nlist[1]:%s\r\n", setParamList[1]);
|
||
|
||
temp = StrToInt(setParamList[1]); //将字符串转换成整型数据
|
||
if(temp != 0xFFFFFFFF)
|
||
{
|
||
getPassword = temp;
|
||
getForceChangeMark = 1; //标志已经取得待确认的密码
|
||
printf("\r\n密码为:%d\r\n", getPassword);
|
||
}else{
|
||
getForceChangeMark = 0;
|
||
printf("\r\n强制设置密码内容格式错误\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 100: //设备参数恢复出厂设置
|
||
printf("\r\nSET --> 设备参数恢复出厂设置!\r\n");
|
||
getDeviceParamResetMark = 1;
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: PasswordCheck
|
||
* 功能说明: 密码校验
|
||
* 形 参:无
|
||
* 返 回 值: 1:密码确认成功,0:密码未确认
|
||
***********************************************************************
|
||
*/
|
||
uint8_t PasswordCheck(void)
|
||
{
|
||
uint8_t res = 0;
|
||
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
res = 1;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
res = 0;
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: PasswordSetTask
|
||
* 功能说明: 密码修改设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void PasswordSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getPasswordMark == 1)
|
||
{
|
||
getPasswordMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setPassword = getPassword;
|
||
printf("\r\n密码修改成功!\r\n");
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: PasswordCastSetTask
|
||
* 功能说明: 密码强制修改设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void PasswordCastSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getForceChangeMark == 1)
|
||
{
|
||
getForceChangeMark = 0;
|
||
setPassword = getPassword;
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
printf("\r\n密码强制修改成功!\r\n");
|
||
setStep = 0x00;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DeviceTypeSetTask
|
||
* 功能说明: 设备类型设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DeviceTypeSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getDeviceTypeMark == 1)
|
||
{
|
||
getDeviceTypeMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
printf("\r\n已取得类型,等待确认密码!\r\n");
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setDeviceType = getDeviceType;
|
||
setDevChannelNumbers = getDevChannelNumbers;
|
||
setDevChannel1Type = getDevChannel1Type;
|
||
setDevChannel2Type = getDevChannel2Type;
|
||
setDevChannel3Type = getDevChannel3Type;
|
||
setDevChannel4Type = getDevChannel4Type;
|
||
// SetDefaultOverflowAlarmParam(); //当设备类型有变化时则要重新设置满溢报警参数
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: CustomerIdSetTask
|
||
* 功能说明: 设备客户号设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void CustomerIdSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getCustomerIDMark == 1)
|
||
{
|
||
getCustomerIDMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setCustomerID = getCustomerID;
|
||
printf("\r\n客户号修改成功!\r\n");
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DisableICCardFunSetTask
|
||
* 功能说明: 启用/停用“禁用的IC卡不能开门”功能设置
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DisableICCardFunSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getDisableICCardFunMark == 1)
|
||
{
|
||
getDisableICCardFunMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setDisableICCardFunStatus = getDisableICCardFunStatus;
|
||
printf("\r\n“禁用的IC卡不能开门”功能修改成功!\r\n");
|
||
if(setDisableICCardFunStatus == 1)
|
||
{
|
||
printf("\r\n停用!\r\n");
|
||
}else{
|
||
printf("\r\n启用!\r\n");
|
||
}
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DisableICCardFunSetTask
|
||
* 功能说明: 启用/停用“收运二维码开门”功能设置
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void EnableCleanQRCodeSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getEnableCleanQRCodeMark == 1)
|
||
{
|
||
getEnableCleanQRCodeMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setEnableCleanQRCodeStatus = getEnableCleanQRCodeStatus;
|
||
printf("\r\n“收运二维码开门”功能修改成功!\r\n");
|
||
if(setEnableCleanQRCodeStatus == 1)
|
||
{
|
||
printf("\r\n启用!\r\n");
|
||
}else{
|
||
printf("\r\n停用!\r\n");
|
||
}
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: OverflowSetTask
|
||
* 功能说明: 满溢参数设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void OverflowSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getOverflowSetMark == 1)
|
||
{
|
||
getOverflowSetMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
printf("\r\n已取得类型,等待确认密码!\r\n");
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
setDevChannel1DisDepthVal = getDevChannel1DisDepthVal;
|
||
setDevChannel1DisMaxVal = getDevChannel1DisMaxVal;
|
||
setDevChannel1DisAlarmPercent = getDevChannel1DisAlarmPercent;
|
||
|
||
setDevChannel2DisDepthVal = getDevChannel2DisDepthVal;
|
||
setDevChannel2DisMaxVal = getDevChannel2DisMaxVal;
|
||
setDevChannel2DisAlarmPercent = getDevChannel2DisAlarmPercent;
|
||
|
||
setDevChannel3DisDepthVal = getDevChannel3DisDepthVal;
|
||
setDevChannel3DisMaxVal = getDevChannel3DisMaxVal;
|
||
setDevChannel3DisAlarmPercent = getDevChannel3DisAlarmPercent;
|
||
|
||
setDevChannel4DisDepthVal = getDevChannel4DisDepthVal;
|
||
setDevChannel4DisMaxVal = getDevChannel4DisMaxVal;
|
||
setDevChannel4DisAlarmPercent = getDevChannel4DisAlarmPercent;
|
||
|
||
// SetDefaultOverflowAlarmParam(); //当设备类型有变化时则要重新设置满溢报警参数
|
||
setParamSaveMark = 1; //标志有参数进行了修改,需要进行保存
|
||
setStep = 0x00;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: ScaleCalibrationTask
|
||
* 功能说明: 称盘校准任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void ScaleCalibrationTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
static timer waitingTimer;
|
||
static timer waitingTimer1S;
|
||
static timer waitingExitTimer;
|
||
|
||
static uint8_t timer_ok = 0;
|
||
|
||
if(timer_ok == 0)
|
||
{
|
||
timer_ok = 1;
|
||
timer_set(&waitingTimer, CLOCK_SECOND*3);
|
||
timer_set(&waitingTimer1S, CLOCK_SECOND*1);
|
||
timer_set(&waitingExitTimer, CLOCK_SECOND*20);
|
||
}
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00: //初始状态
|
||
if(getScaleCalibrationMark == 1)
|
||
{
|
||
getScaleCalibrationMark = 0;
|
||
getConfirmPasswordMark = 0; //确认密码标志清零
|
||
setParamChangeMark = 0; //指令切换标志清零
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01: //校验密码
|
||
if(getConfirmPasswordMark == 1)
|
||
{
|
||
getConfirmPasswordMark = 0;
|
||
if(password == getConfirmPassword)
|
||
{
|
||
printf("\r\n密码校验正确!\r\n");
|
||
|
||
printf("\r\n开启称盘校准!\r\n");
|
||
setStep = 0x02;
|
||
break;
|
||
}else{
|
||
printf("\r\n密码校验错误!\r\n");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 0x02: //正在启动进入校准
|
||
Screen_ScaleCalibraEnter(getScaleNum); //显示正在校准
|
||
|
||
if(getScaleNum == 0)
|
||
{
|
||
if(deviceWorkStatus == 1)
|
||
{
|
||
Screen_Default();
|
||
}else{
|
||
Screen_DeviceDisable();
|
||
}
|
||
|
||
setStep = 0x00;
|
||
break;
|
||
}
|
||
|
||
scaleNum = getScaleNum;
|
||
getCalibraZeroMark1 = 0;
|
||
getCalibraZeroMark2 = 0;
|
||
|
||
beep_contSlowBeepMark = 1;
|
||
M_S_CommandSend(0xA1);
|
||
timer_restart(&waitingExitTimer);
|
||
setStep = 0x03;
|
||
break;
|
||
|
||
case 0x3: //等待称重模块回应取得零点
|
||
if(timer_expired(&waitingExitTimer))
|
||
{
|
||
printf("\r\n取得校准零点超时退出!\r\n");
|
||
|
||
beep_contSlowBeepMark = 0;
|
||
setStep = 0x10;
|
||
}
|
||
|
||
switch(getScaleNum)
|
||
{
|
||
case 1: //称盘1
|
||
if(getCalibraZeroMark1 == 1)
|
||
{
|
||
printf("\r\n收到称1校准零点!\r\n");
|
||
Screen_ScaleCalibraStart(getScaleNum);
|
||
getCalibraParamOkMark1 = 0;
|
||
|
||
beep_contSlowBeepMark = 0;
|
||
beep_contFastBeepMark = 1;
|
||
|
||
timer_restart(&waitingExitTimer);
|
||
setStep = 0x04;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 2: //称盘2
|
||
if(getCalibraZeroMark2 == 1)
|
||
{
|
||
printf("\r\n收到称2校准零点!\r\n");
|
||
Screen_ScaleCalibraStart(getScaleNum);
|
||
getCalibraParamOkMark2 = 0;
|
||
|
||
beep_contSlowBeepMark = 0;
|
||
beep_contFastBeepMark = 1;
|
||
|
||
timer_restart(&waitingExitTimer);
|
||
setStep = 0x04;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
setStep = 0x00;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 0x04: //等待校准完成
|
||
if(timer_expired(&waitingExitTimer))
|
||
{
|
||
printf("\r\n取得校准零点超时退出!\r\n");
|
||
|
||
beep_contFastBeepMark = 0;
|
||
setStep = 0x10;
|
||
break;
|
||
}
|
||
|
||
switch(getScaleNum)
|
||
{
|
||
case 1: //称盘1
|
||
if(getCalibraParamOkMark1 == 1)
|
||
{
|
||
printf("\r\n收到称1校准完成!\r\n");
|
||
Screen_ScaleCalibraFinish(getScaleNum);
|
||
|
||
beep_contFastBeepMark = 0;
|
||
beep_longBeepMark = 1;
|
||
timer_restart(&waitingTimer);
|
||
setStep = 0x05;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 2: //称盘2
|
||
if(getCalibraParamOkMark2 == 1)
|
||
{
|
||
printf("\r\n收到称2校准完成!\r\n");
|
||
Screen_ScaleCalibraFinish(getScaleNum);
|
||
|
||
beep_contFastBeepMark = 0;
|
||
beep_longBeepMark = 1;
|
||
timer_restart(&waitingTimer);
|
||
setStep = 0x05;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
setStep = 0x00;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 0x05: //退出
|
||
if(timer_expired(&waitingTimer))
|
||
{
|
||
beep_contSlowBeepMark = 0;
|
||
beep_contFastBeepMark = 0;
|
||
|
||
if(deviceWorkStatus == 1)
|
||
{
|
||
Screen_Default();
|
||
}else{
|
||
Screen_DeviceDisable();
|
||
}
|
||
setStep = 0x00;
|
||
}
|
||
break;
|
||
|
||
case 0x10: //校准失败重启称重模块电源
|
||
// ScalePowerOFF(1);
|
||
// ScalePowerOFF(2);
|
||
M_S_CommandSend(0xA5);
|
||
timer_restart(&waitingTimer1S);
|
||
setStep = 0x11;
|
||
break;
|
||
|
||
case 0x11: //校准失败重启称重模块电源
|
||
if(timer_expired(&waitingTimer1S))
|
||
{
|
||
// ScalePowerON(1);
|
||
// ScalePowerON(2);
|
||
setStep = 0x05;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: BoxOpenSetTask
|
||
* 功能说明: 临时打开收运清理门操作任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
|
||
void BoxOpenSetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getBoxOpenMark == 1)
|
||
{
|
||
getBoxOpenMark = 0;
|
||
boxOpenMark = 1;
|
||
printf("\r\n准备打开收运门!\r\n");
|
||
setStep = 0x00;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
// void BoxOpenSetTask(void)
|
||
// {
|
||
// static uint8_t setStep = 0x00;
|
||
//
|
||
// switch(setStep)
|
||
// {
|
||
// case 0x00:
|
||
// if(getBoxOpenMark == 1)
|
||
// {
|
||
// getBoxOpenMark = 0;
|
||
// getConfirmPasswordMark = 0;
|
||
// setParamChangeMark = 0;
|
||
// setStep = 0x01;
|
||
// }
|
||
// break;
|
||
//
|
||
// case 0x01:
|
||
// if(getConfirmPasswordMark == 1)
|
||
// {
|
||
// getConfirmPasswordMark = 0;
|
||
// if(password == getConfirmPassword)
|
||
// {
|
||
// printf("\r\n密码校验正确!\r\n");
|
||
// boxOpenMark = 1;
|
||
// printf("\r\n准备打开收运门!\r\n");
|
||
// setStep = 0x00;
|
||
// break;
|
||
// }else{
|
||
// printf("\r\n密码校验错误!\r\n");
|
||
// break;
|
||
// }
|
||
// }
|
||
//
|
||
// if(setParamChangeMark == 1)
|
||
// {
|
||
// setParamChangeMark = 0;
|
||
// setStep = 0x00;
|
||
// printf("\r\n参数设置命令有切换!!\r\n");
|
||
// break;
|
||
// }
|
||
// break;
|
||
//
|
||
// default:
|
||
// break;
|
||
// }
|
||
// }
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: DeviceParamResetTask
|
||
* 功能说明: 设备参数恢复出厂设置
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void DeviceParamResetTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(getDeviceParamResetMark == 1)
|
||
{
|
||
getDeviceParamResetMark = 0;
|
||
getConfirmPasswordMark = 0;
|
||
setParamChangeMark = 0;
|
||
setStep = 0x01;
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(PasswordCheck() == 1)
|
||
{
|
||
printf("\r\n开始恢复设备参数!\r\n");
|
||
ResetDeviceConfig();
|
||
beep_shortBeepMark = 1;
|
||
// DeviceConfigParamInit(); //设备配置参数初始化
|
||
|
||
|
||
getDeviceParamResetMark = 0;
|
||
setStep = 0x10;
|
||
break;
|
||
}
|
||
|
||
if(setParamChangeMark == 1)
|
||
{
|
||
setParamChangeMark = 0;
|
||
|
||
getDeviceParamResetMark = 0;
|
||
setStep = 0x00;
|
||
printf("\r\n参数设置命令有切换!!\r\n");
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 0x10:
|
||
while(1); //参数恢复完成后重启系统
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: ParamSaveTask
|
||
* 功能说明: 设备参数保存任务(有参数修改确认,则需要进行保存)
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void ParamSaveTask(void)
|
||
{
|
||
static uint8_t setStep = 0x00;
|
||
|
||
static timer waitingTimer;
|
||
|
||
static uint8_t timer_ok = 0;
|
||
|
||
if(timer_ok == 0)
|
||
{
|
||
timer_ok = 1;
|
||
timer_set(&waitingTimer, CLOCK_SECOND*2); //创建1个定时器,用于电磁锁开启时间控制
|
||
}
|
||
|
||
switch(setStep)
|
||
{
|
||
case 0x00:
|
||
if(setParamSaveMark == 1)
|
||
{
|
||
setParamSaveMark = 0;
|
||
|
||
SaveDeviceConfig();
|
||
DeviceParamInit(); //参数有变动,则重新初始化设备参数
|
||
CalcOverflowStartPointParam();
|
||
|
||
DeviceInfoShow();
|
||
setStep = 0x01;
|
||
timer_restart(&waitingTimer);
|
||
}
|
||
break;
|
||
|
||
case 0x01:
|
||
if(timer_expired(&waitingTimer))
|
||
{
|
||
if(deviceWorkStatus == 1)
|
||
{
|
||
Screen_Default();
|
||
}else{
|
||
Screen_DeviceDisable();
|
||
}
|
||
setStep = 0x00;
|
||
}
|
||
break;
|
||
|
||
case 0x02:
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*
|
||
***********************************************************************
|
||
* 函 数 名: ParamSetTask
|
||
* 功能说明: 参数设置任务
|
||
* 形 参:无
|
||
* 返 回 值: 无
|
||
***********************************************************************
|
||
*/
|
||
void ParamSetTask(void)
|
||
{
|
||
if(devSetQrCodeState == 1)
|
||
{
|
||
printf("\r\n进入参数设置操作---->\r\n");
|
||
devSetQrCodeState = 0;
|
||
SetParamDecode(codeBuf); //设置二维码参数解码
|
||
}
|
||
|
||
PasswordSetTask(); //密码修改任务
|
||
PasswordCastSetTask(); //强制修改密码任务
|
||
DeviceTypeSetTask(); //设备类型设置任务
|
||
CustomerIdSetTask(); //客户号设置任务
|
||
|
||
DisableICCardFunSetTask(); //启用/停用“禁用的IC卡不能开门”功能设置任务
|
||
EnableCleanQRCodeSetTask(); //启用/停用“收运二维码开门”功能设置任务
|
||
|
||
OverflowSetTask(); //满溢参数设置任务
|
||
|
||
ScaleCalibrationTask(); //称盘校准操作任务
|
||
BoxOpenSetTask(); //临时打开收运清理门操作任务
|
||
|
||
DeviceParamResetTask(); //设备参数恢复出厂设置任务
|
||
|
||
ParamSaveTask(); //设备参数保存任务
|
||
}
|
||
|
||
|
||
/******************** (C) COPYRIGHT 2017 CXHY *****END OF FILE*******************/
|