Files
g0b1vetx-board/Comm/package.c
T
2023-04-29 09:09:12 +08:00

512 lines
22 KiB
C

//#include "sysinfo-app.h"
#include "proto-sl651.h"
#include "rtc.h"
//#include "ff-collected.h"
//#include "mjson.h"
#include "elog.h"
//#include "base64.h"
// static uint8_t g_651txbuff[255];
// static uint16_t g_651txbuff_length;
static union //如果是切换页面,显示为页面ID
{
uint32_t Int;
uint8_t Byte[4];
} Int;
static int g_syn_number = 0;
// 打包数据帧
int PP_AddHeader (uint8_t func, char *data, int length, char *txbuff)
{
int tx_size = 0;
uint16_t crc = 0;
txbuff[tx_size++] = 0x7E;
txbuff[tx_size++] = 0x7E;
txbuff[tx_size++] = 0x02; // 根据中心站地址区分版本号
txbuff[tx_size++] = 0xFF;
txbuff[tx_size++] = 0xFF;
txbuff[tx_size++] = 0;//SysInfo.baseAddr[0];
txbuff[tx_size++] = 0;//SysInfo.baseAddr[1]; //(uint8_t) ( (SysInfo.Addr >> 24) & 0x000000FF);
txbuff[tx_size++] = 0;//SysInfo.baseAddr[2]; //(uint8_t) ( (SysInfo.Addr >> 16) & 0x000000FF);
txbuff[tx_size++] = 0;//SysInfo.baseAddr[3]; //(uint8_t) ( (SysInfo.Addr >> 8) & 0x000000FF);
txbuff[tx_size++] = 0;//SysInfo.baseAddr[4]; //(uint8_t) (SysInfo.Addr & 0x000000FF);
txbuff[tx_size++] = func;
txbuff[tx_size++] = 0x00;
txbuff[tx_size++] = length; // 长度
txbuff[tx_size++] = _651_STX;
// dbg_printf ("sizeof (_651_U_Header_t):%d\r\n", tx_size);
for (int i = 0; i < length; i++)
{
txbuff[tx_size++] = data[i];
}
txbuff[tx_size++] = 0x03;
crc = 0;//bsp_crc_calc16 ( (uint8_t *) txbuff, tx_size);
txbuff[tx_size++] = (crc >> 8) & 0x00FF;
txbuff[tx_size++] = crc & 0x00FF;
return tx_size;
//
// 计算校验
}
// 均匀时段报
int PP_PacketUnifData (char *tx_data)
{
uint8_t powerdata[26];
//RtcTime rtcTime;
//Get_Time (&rtcTime);
int tx_size = 0;
g_syn_number++;
tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF;
tx_data[tx_size++] = g_syn_number & 0xFF;
tx_data[tx_size++] = 0x00; // 要素1 瞬时流速
tx_data[tx_size++] = 0x00; // 要素1 瞬时流速
tx_data[tx_size++] = 0x00; // 要素1 瞬时流速
tx_data[tx_size++] = 0x00; // 要素1 瞬时流速
tx_data[tx_size++] = 0x00; // 要素2 瞬时流量
tx_data[tx_size++] = 0x00; // 要素2 瞬时流量
tx_data[tx_size++] = 0x00; // 要素2 瞬时流量
tx_data[tx_size++] = 0x00; // 要素2 瞬时流量
tx_data[tx_size++] = 0x00; // 要素3 累计流量
tx_data[tx_size++] = 0x00; // 要素3 累计流量
tx_data[tx_size++] = 0x00; // 要素3 累计流量
tx_data[tx_size++] = 0x00; // 要素3 累计流量
Int.Int = 0;//= (FF_ReadEcodeData() - SysInfo.SlMinEcode) / SysInfo.SlEcodeCoeff * 100 ;
tx_data[tx_size++] = Int.Byte[3]; // 要素4 闸门开度
tx_data[tx_size++] = Int.Byte[2]; // 要素4 闸门开度
tx_data[tx_size++] = Int.Byte[1]; // 要素4 闸门开度
tx_data[tx_size++] = Int.Byte[0]; // 要素4 闸门开度
Int.Int = 0;// (int) bsp_rng_get_number (1000, 1200) * 100; // MbusReadSensorValue (EcodeType) * 100;
tx_data[tx_size++] = 0x00; // 要素5 闸门荷重
tx_data[tx_size++] = 0x00; // 要素5 闸门荷重
tx_data[tx_size++] = 0x00; // 要素5 闸门荷重
tx_data[tx_size++] = 0x00; // 要素5 闸门荷重
// 要素6 最大开度
Int.Int = 0;// SysInfo.SlMaxOpen * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 要素7 电池电压
Int.Int = 23.5 * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 要素8 机箱温度
Int.Int = 52.6 * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 要素9 闸前水位
Int.Int = 0 * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 要素10 充电控制器数据
//FF_ReadPowerData (powerdata) ;
for (int i = 0; i < 26; i++)
{
tx_data[tx_size++] = powerdata[i];
}
return tx_size;
}
// 闸门状态自报
int _651PacketDataSluiceUp (char *tx_data)
{
// RtcTime rtcTime;
// Get_Time (&rtcTime);
int tx_size = 0;
g_syn_number++;
tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF;
tx_data[tx_size++] = g_syn_number & 0xFF;
tx_data[tx_size++] = 0x01;
tx_data[tx_size++] = 0x01;
// 闸门开度
// Int.Int = MbusReadSensorValue (EcodeType) * 100;
//dbg_printf ("%d\r\n", Int.Int);
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 闸门荷重
Int.Int = 0;//(int) bsp_rng_get_number (1200, 1400) * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 闸前水位
Int.Int = 0 * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
// 瞬时流量
Int.Int = 0 * 100;
tx_data[tx_size++] = Int.Byte[3];
tx_data[tx_size++] = Int.Byte[2];
tx_data[tx_size++] = Int.Byte[1];
tx_data[tx_size++] = Int.Byte[0];
return tx_size;
}
int _651PacketDataSluiceAck (char *tx_data)
{
// RtcTime rtcTime;
// Get_Time (&rtcTime);
int tx_size = 0;
g_syn_number++;
tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF;
tx_data[tx_size++] = g_syn_number & 0xFF;
tx_data[tx_size++] = 0;//rtcTime.year;
tx_data[tx_size++] = 0;//rtcTime.month;
tx_data[tx_size++] = 0;//rtcTime.day;
tx_data[tx_size++] = 0;//rtcTime.hour;
tx_data[tx_size++] = 0;//rtcTime.minute;
tx_data[tx_size++] = 0;//rtcTime.second;
tx_data[tx_size++] = 0;//SysInfo.baseAddr[0];
tx_data[tx_size++] = 0;//SysInfo.baseAddr[1]; //(uint8_t) ( (SysInfo.Addr >> 24) & 0x000000FF);
tx_data[tx_size++] = 0;//SysInfo.baseAddr[2]; //(uint8_t) ( (SysInfo.Addr >> 16) & 0x000000FF);
tx_data[tx_size++] = 0;//SysInfo.baseAddr[3]; //(uint8_t) ( (SysInfo.Addr >> 8) & 0x000000FF);
tx_data[tx_size++] = 0;//SysInfo.baseAddr[4]; //(uint8_t) (SysInfo.Addr & 0x000000FF);
return tx_size;
}
// 打包 基础参数
int Json651PacketBaseInfo (char *outBuffer, int length)
{
// char devidstr[11];
// int k = 0;
// memset (devidstr, 0, sizeof (devidstr));
// hexbyte_to_hex_str (SysInfo.baseAddr, devidstr, 5);
// // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5);
// struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0};
// k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%Q,%Q:%d,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%u}",
// "type", 1,
// "baseaddr", devidstr,
// "bute", 9600,
// "remoteAddr", SysInfo.baseRemoteAddr,
// "remoteUser", SysInfo.baseRemoteuser,
// "remotePass", SysInfo.baseRemotepass,
// "userPass", SysInfo.baseUserPassword,
// "sysPass", SysInfo.baseSysPassword,
// "topic", SysInfo.baseTopic,
// "remotePort", SysInfo.baseRemotePort,
// "LogInfo", SysInfo.baseLogInfo,
// "NetDev", SysInfo.baseNetDev,
// "StandTime", SysInfo.baseStandbyTime);
// return k;
return 0;
}
// 接口参数设置
int Json651PacketInterfaceInfo (char *outBuffer, int length)
{
// char u4851funstr[17], u4852funstr[17];
// int k = 0;
// memset (u4851funstr, 0, sizeof (u4851funstr));
// memset (u4852funstr, 0, sizeof (u4852funstr));
// hexbyte_to_hex_str ( (char *) SysInfo.u4851Func, u4851funstr, 8);
// hexbyte_to_hex_str ( (char *) SysInfo.u4852Func, u4852funstr, 8);
// // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5);
// struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0};
// k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d}",
// "type", 2,
// "u4851fun", u4851funstr,
// "u4851num", SysInfo.u4851FuncNum,
// "u4851bute", SysInfo.u4851Bute,
// "u4851para", SysInfo.u4851Para,
// "u4852fun", u4852funstr,
// "u4852num", SysInfo.u4852FuncNum,
// "u4852bute", SysInfo.u4852Bute,
// "u4852para", SysInfo.u4852Para,
// "di1", SysInfo.DIFunc[0],
// "di2", SysInfo.DIFunc[1],
// "di3", SysInfo.DIFunc[2],
// "di4", SysInfo.DIFunc[3],
// "pi1", SysInfo.PIFunc[0],
// "pi2", SysInfo.PIFunc[1],
// "pi3", SysInfo.PIFunc[2],
// "pi4", SysInfo.PIFunc[3],
// "ai1", SysInfo.AIFunc[0],
// "ai2", SysInfo.AIFunc[1],
// "k1", SysInfo.KEYFunc[0],
// "k2", SysInfo.KEYFunc[1],
// "pwm1", SysInfo.PWMFunc[0],
// "pwm2", SysInfo.PWMFunc[1],
// "pwm3", SysInfo.PWMFunc[2],
// "pwm4", SysInfo.PWMFunc[3]);
// return k;
return 0;
}
int Json651PacketSluiceInfo (char *outBuffer, int length)
{
// char devidstr[11];
// int k = 0;
// memset (devidstr, 0, sizeof (devidstr));
// hexbyte_to_hex_str (SysInfo.baseAddr, devidstr, 5);
// // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5);
// struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0};
// k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d}",
// "type", 3,
// "maxopen", SysInfo.SlMaxOpen,
// "maxcode", SysInfo.SlMaxEcode,
// "mincode", SysInfo.SlMinEcode,
// "codecoff", SysInfo.SlEcodeCoeff,
// "codetype", SysInfo.SlEcodeType,
// "loadtype", SysInfo.SlLoadType,
// "motortype", SysInfo.SlMotorType,
// "flowtype", SysInfo.SlFlowType,
// "motorspeed", SysInfo.SlMotorSpeed);
// return k;
return 0;
}
// uint16_t WTWidth;// = 100; // 宽度 cm
// Uint16_t WTSpeed[16];// = 100.0; // 流速 cm/s
// Uint16_t WTSenLoc[16]; //
// Uint16_t WTFlow[16]; // 流量
// uint8_t WTSenCount;// 层数
int Json651PacketWaterInfo (char *outBuffer, int length)
{
// int k = 0;
// char flowbuff[64];
// char speedbuff[64];
// char locbuff[64];
// memset (flowbuff, 0, 64);
// memset (speedbuff, 0, 64);
// memset (locbuff, 0, 64);
// B64Encode ( (uint8_t *) SysInfo.WTFlow, 32, flowbuff, 64);
// B64Encode ( (uint8_t *) SysInfo.WTSpeed, 32, speedbuff, 64);
// B64Encode ( (uint8_t *) SysInfo.WTSenLoc, 32, locbuff, 64);
// struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0};
// k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%d,%Q:%d,%Q:%Q,%Q:%Q,%Q:%Q}",
// "type", 4,
// "wtwidth", SysInfo.WTWidth,
// "wtsencount", SysInfo.WTSenCount,
// "wtflow", flowbuff,
// "wtspeed", speedbuff,
// "wtsenloc", locbuff
// );
// return k;
return 0;
}
//int Json651UnpackInfo (char *input, int length, SysInfoConfig_t *info)
//{
// double Number;
// int responce, resonces[32] = {0};
// char acs_data[64];
// int k = 0;
// //char test[64] = {0};
// if (mjson ( (char const *) input, strlen ( (char const *) input), NULL, NULL) != strlen ( (char const *) input))
// {
// // 乱码或者格式不对
// dbg_printf ("&&&&&&&&&&&&&&&&&\r\n");
// return -1;
// }
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.type", &Number);
// info->type = Number;
// if (info->type == 1) // base info
// {
// // 设备编码
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.baseaddr", (char*) acs_data, sizeof (acs_data) - 1) ;
// resonces[k++] = responce;
// hexstr_to_hexbyte (acs_data, info->info.base.baseAddr, responce);
// // 波特率
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.bute", &Number);
// info->info.base.baseBute = Number;
// // 远程地址
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remoteAddr", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// memcpy (info->info.base.baseRemoteAddr, acs_data, 32);
// //mqtt用户
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remoteUser", (char*) acs_data, sizeof (acs_data) - 1) ;
// resonces[k++] = responce;
// memcpy (info->info.base.baseRemoteuser, acs_data, 32);
// //mqtt密码
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remotePass", (char*) acs_data, sizeof (acs_data) - 1) ;
// resonces[k++] = responce;
// memcpy (info->info.base.baseRemotepass, acs_data, 32);
// //屏幕用户登录密码
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.userPass", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// memcpy (info->info.base.baseUserPassword, acs_data, 32);
// //屏幕管理员登录密码
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.sysPass", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// memcpy (info->info.base.baseSysPassword, acs_data, 32);
// //订阅topic
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.topic", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// memcpy (info->info.base.baseTopic, acs_data, 32);
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.remotePort", &Number);
// info->info.base.baseRemotePort = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.LogInfo", &Number);
// info->info.base.baseLogInfo = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.NetDev", &Number);
// info->info.base.baseNetDev = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.StandTime", &Number);
// info->info.base.baseStandbyTime = Number;
// }
// else if (info->type == 2) //
// {
// // 4851 func
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.u4851fun", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4851Func, responce);
// // 4852 func
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.u4852fun", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4852Func, responce);
// //memcpy(info->info.interface.u4851Func,acs_data,32);
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851num", &Number);
// info->info.interface.u4851FuncNum = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852num", &Number);
// info->info.interface.u4852FuncNum = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851para", &Number);
// info->info.interface.u4851Para = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852para", &Number);
// info->info.interface.u4852Para = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851bute", &Number);
// info->info.interface.u4851Bute = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852bute", &Number);
// info->info.interface.u4852Bute = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di1", &Number);
// info->info.interface.DI1Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di2", &Number);
// info->info.interface.DI2Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di3", &Number);
// info->info.interface.DI3Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di4", &Number);
// info->info.interface.DI4Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi1", &Number);
// info->info.interface.PI1Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi2", &Number);
// info->info.interface.PI2Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi3", &Number);
// info->info.interface.PI3Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi4", &Number);
// info->info.interface.PI4Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.ai1", &Number);
// info->info.interface.AI1Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.ai2", &Number);
// info->info.interface.AI2Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.k1", &Number);
// info->info.interface.KEY1Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.k2", &Number);
// info->info.interface.KEY2Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm1", &Number);
// info->info.interface.PWM1Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm2", &Number);
// info->info.interface.PWM2Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm3", &Number);
// info->info.interface.PWM3Func = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm4", &Number);
// info->info.interface.PWM4Func = Number;
// }
// else if (info->type == 3) //
// {
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.maxopen", &Number);
// info->info.sluice.SlMaxOpen = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.mincode", &Number);
// info->info.sluice.SlMinEcode = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.maxcode", &Number);
// info->info.sluice.SlMaxEcode = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.codecoff", &Number);
// info->info.sluice.SlEcodeCoeff = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.codetype", &Number);
// info->info.sluice.SlEcodeType = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.loadtype", &Number);
// info->info.sluice.SlLoadType = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.flowtype", &Number);
// info->info.sluice.SlFlowType = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motorspeed", &Number);
// info->info.sluice.SlMotorSpeed = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motortype", &Number);
// info->info.sluice.SlMotorType = Number;
//// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motortype", &Number);
//// info->info.sluice.SlMotorType = Number;
// }
// else if (info->type == 4) //
// {
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.wtwidth", &Number);
// info->info.water.WTWidth = Number;
// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.wtsencount", &Number);
// info->info.water.WTSenCount = Number;
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtflow", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTFlow);
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtspeed", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTSpeed);
// memset (acs_data, 0, 64);
// responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtsenloc", (char*) acs_data, sizeof (acs_data) - 1);
// resonces[k++] = responce;
// dbg_printf ("%s\r\n", acs_data);
// B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTSenLoc);
// //memcpy((uint8_t *)info->info.water.WTSenLoc,test,32);
//// for(int i =0;i <32;i++)
//// {
//// dbg_printf("%02X ",test[i]);
//// }
//// dbg_printf("\r\n");
// //dbg_printf("%u,%u,%u,%u\r\n",info->info.water.WTSenLoc[0],info->info.water.WTSenLoc[1],info->info.water.WTSenLoc[2],info->info.water.WTSenLoc[3]) ;
// //hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4852Func, responce);
// }
// else
// {
// return -1;
// }
// for (int t = 0; t < k; t++)
// {
// if (resonces[t] < 0)
// return -2;
// }
// return 0;
//return 0;
//}