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

512 lines
22 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//#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;
//}