兼容金川中心灌区代码

This commit is contained in:
2584532475@qq.com committed 2024-04-08 20:39:37 +08:00
1 parent f8591b8b99
commit 3a537f633c
14 files changed
+217 -62

No files matched your search

+46 -9
View File
@@ -3,6 +3,17 @@
/******************************************
* 版本信息
******************************************/
volatile const char _makeData[] = __DATE__; //12字节,编译日期
volatile const char _makeTime[] = __TIME__; //9字节
volatile const char cBootv[] = "Ver3.0.0"; //获取时添加上面两个时间信息,最大长度64字节
char _versionTemp[64];
const StrIndex_t cDownDataType[] =
{
{"run",DownRun} ,
@@ -14,7 +25,8 @@ const StrIndex_t cDownDataType[] =
{"update",DownUpdate},
{"reboot",DownReboot},
{"config",DownConfig},
{"read",DownRead}
{"read",DownRead} ,
{"fact",DownFact}
};
@@ -24,20 +36,25 @@ const StrIndex_t cSiteType[] =
{"sluice",SiteSluice} ,
{"flow",SiteFlow} ,
{"press",SiteSee} ,
{"auto",SiteColl} ,
{"auto",SiteColl} , // 自动化采集站
{"trans",SiteServer} ,
{"level",SiteLevel}
{"level",SiteLevel},
{"skew",SiteSkew} //测斜仪
};
const StrIndex_t cMotorType[] =
{
{"mg1000",MT_MG_1000} ,
{"qh100",MT_QH_V100} ,
{"qh200",MT_QH_V200} ,
{"zs100",MT_ZS_V100} ,
{"dy100",MT_DY_V100} ,
{"kg100",MT_KG_V100}
{"qh100", MT_QH_V100} ,
{"qh200", MT_QH_V200} ,
{"zs100", MT_ZS_V100} ,
{"jz200", MT_JZ_V200} , // 金志 4-20 ma
{"dy100", MT_DY_V100}, // 大禹锥型阀
{"kg100", MT_KG_V100}, // 开关量模块
{"kr100", MT_KR_V100}, // 闸位计
{"asca3", MT_ASC_A3}, // A3 驱动器
{"ascws", MT_ASC_WS}, // A3 驱动器
};
const StrIndex_t c4851Type[] =
@@ -47,6 +64,7 @@ const StrIndex_t c4851Type[] =
{"qh200",ST_QH_V200} ,
{"dy100",ST_DY_V100} ,
{"kg100",ST_KG_V100} ,
{"at100",ST_AT_V100} ,
};
const StrIndex_t cU485Type[] =
@@ -54,6 +72,7 @@ const StrIndex_t cU485Type[] =
{"modbus",0}
};
// 485 2 通道
const StrIndex_t c4852Type[] =
{
{"rds600",ST_RDS_600} ,
@@ -61,7 +80,8 @@ const StrIndex_t c4852Type[] =
{"ht100",ST_HT_V100} ,
{"zkjszk",ST_ZK_JSZK},
{"djx100",ST_DJX_100},
{"rds300",ST_RDS_300}
{"rds300",ST_RDS_300},
{"mi600",ST_MI_600} // 测斜仪
};
@@ -98,7 +118,13 @@ const ParShallInfo_t ParShallTale[] =
SluiceData_t SluiceData[SLUICE_COUTN];
WaterData_t WaterData[WATER_COUTN];
InclinometerData_t IncData[6]; // 测斜仪数据
SysData_t SysData;
SOFTRTC_t g_SoftRtc = {
23,10,1,0,0,0
};
uint32_t g_ifconfig = 0;
uint32_t g_ifupdate = 0;
@@ -186,6 +212,17 @@ int cSiteType2Index(char * str)
/**********************************************
获取boot版本信息
**********************************************/
void *GetVersion(void)
{
int i = rt_sprintf(_versionTemp,"%s-%s %s",cBootv, _makeData, _makeTime);
_versionTemp[i] = 0;
return (void*)_versionTemp;
}
+38 -5
View File
@@ -3,8 +3,10 @@
#include <stdint.h>
#define SLUICE_COUTN 1// 当前处理几口闸
#define WATER_COUTN 6// 当前接入n个流量计
#define SUBTOPIC_COUNT 1 // 订阅topic 数量
#define SLUCIE_EXEC_COUNT 20// 闸门异常时间
@@ -13,6 +15,9 @@
extern uint32_t g_ifconfig;
extern uint32_t g_ifupdate;
@@ -78,18 +83,37 @@ typedef struct SysData_t
int fileSize; // 文件大小
} SysData_t;
typedef struct SOFTRTC_t
{
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minutes;
uint8_t second;
}SOFTRTC_t;
// 水量参数
typedef struct InclinometerData_t
{
uint8_t dir; // 方向
uint32_t data;// 数据
} InclinometerData_t;
// 测斜数据
typedef struct WaterData_t
{
int64_t ttWater; // 累计流量 单位 m3
int32_t thisFlow; // 瞬时流量 单位 m3
int32_t thisLevel; // 水位
int32_t thisSpeed; // 流速
int64_t ttWater; // 累计流量 单位 m3
int32_t thisFlow; // 瞬时流量 单位 m3
int32_t thisLevel; // 水位
int32_t thisSpeed; // 流速
int32_t thisPress; // 压力
int32_t thisTemp; // 温度
int retry ; // 重试次数
} WaterData_t;
@@ -111,6 +135,8 @@ typedef enum MotorType_t
MT_DY_V100, // 大禹锥型阀
MT_KG_V100, // 开关量模块
MT_KR_V100, // 徐州正天闸位计
MT_ASC_A3, // A3驱动器
MT_ASC_WS, // 金昌无刷电机
} MotorType_t;
typedef enum S4851Type_t
@@ -132,6 +158,7 @@ typedef enum S4852Type_t
ST_ZK_JSZK, // 精水中科多普勒
ST_DJX_100, // 丁家峡闸门 读取开度
ST_RDS_300, // 雷达流量计
ST_MI_600, // 鹦鸽嘴测斜仪
} S4852Type_t;
@@ -151,7 +178,8 @@ typedef enum SiteType_t
SiteSee, // 渗流渗压站
SiteColl, // 采集站
SiteServer, // 串口服务器
SiteLevel // 水位站
SiteLevel, // 水位站
SiteSkew // 测斜仪
}SiteType_t;
@@ -167,6 +195,7 @@ typedef enum DownDataType_t
DownReboot = 7, // 重启
DownConfig = 8, // 修改参数
DownRead = 9, // 读取参数
DownFact = 10, // 读取参数
}DownDataType_t;
@@ -185,9 +214,11 @@ typedef struct TypeIndexMail_t
extern SluiceData_t SluiceData[SLUICE_COUTN];
extern WaterData_t WaterData[WATER_COUTN];
extern InclinometerData_t IncData[6];
extern SysData_t SysData;
extern const WaterLeveInfo_t LeveInfo;
extern const ParShallInfo_t ParShallTale[];
extern SOFTRTC_t g_SoftRtc;
int cMotorGetType (char * str);
@@ -208,6 +239,8 @@ int cDownType2Index(char * str);
int cSiteType2Index(char * str);
void *GetVersion(void);
#endif
+9 -8
View File
@@ -1,39 +1,40 @@
#include "main.h"
#include "di-board.h"
int DiReadChann (int chann)
DIState_t MX_Din_Pull (int chann)
{
int ret = -1;
DIState_t ret;
switch (chann)
{
case 1:
{
ret = HAL_GPIO_ReadPin (DI1_GPIO_Port, DI1_Pin);
ret = (DIState_t) HAL_GPIO_ReadPin (DI1_GPIO_Port, DI1_Pin);
break;
}
case 2:
{
ret = HAL_GPIO_ReadPin (DI2_GPIO_Port, DI2_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI2_GPIO_Port, DI2_Pin);
break;
}
case 3:
{
ret = HAL_GPIO_ReadPin (DI3_GPIO_Port, DI4_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI3_GPIO_Port, DI3_Pin);
break;
}
case 4:
{
ret = HAL_GPIO_ReadPin (DI4_GPIO_Port, DI4_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI4_GPIO_Port, DI4_Pin);
break;
}
case 5:
{
ret = HAL_GPIO_ReadPin (DI5_GPIO_Port, DI5_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI5_GPIO_Port, DI5_Pin);
break;
}
case 6:
{
ret = HAL_GPIO_ReadPin (DI6_GPIO_Port, DI6_Pin);
ret = (DIState_t) HAL_GPIO_ReadPin (DI6_GPIO_Port, DI6_Pin);
break;
}
}
+7 -1
View File
@@ -1,8 +1,14 @@
#ifndef _DI_BOARD_H
#define _DI_BOARD_H
typedef enum DIState_t
{
DI_HIGH = 1,
DI_LOW = 0
}DIState_t;
void DiInit (void);
int DiReadChann (int chann);
DIState_t MX_Din_Pull (int chann);
#endif
+29 -1
View File
@@ -165,7 +165,7 @@ static CommRet_T cat1_sendcmd_and_responce (int time, char * tx, int size, char
{
if (RT_EOK == rt_event_recv (gUartEvents, EVENT_UART_GSM_RX, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, 0, RT_NULL))
{
// rt_kprintf ("[%.*s]", g_GSMDrv.rx_size, g_GSMDrv.rx_buffer) ;
//rt_kprintf ("[%.*s]", g_GSMDrv.rx_size, g_GSMDrv.rx_buffer) ;
if (NULL != rt_strstr ( (char *) g_GSMDrv.rx_buffer, ack))
{
if (call != NULL)
@@ -278,6 +278,26 @@ CAT1RST:
rt_kprintf ("NET:+CME:ERROR QIRD\r\n");
goto CAT1RST;
}
// // 通过通道2上报数据
// if (RT_EOK == rt_event_recv (gTrigEvents, EVENT_TRIG_NETMODE_TX2, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_NO, RT_NULL)) // 需要发送数据
// {
// if (g_cat1Drv.txbuff != NULL)
// {
// rt_sprintf (at_cmd, "AT+QISEND=0,%d\r\n", g_cat1Drv.tx_size);
// rt_thread_mdelay (10);
// if (cat1_sendcmd_and_responce (1000, at_cmd, strlen (at_cmd), ">", NULL) != RetSucc)
// {
// rt_kprintf ("NET:+CME:ERROR QISEND\r\n");
// goto CAT1RST;
// }
// if (cat1_sendcmd_and_responce (3000, g_cat1Drv.txbuff, g_cat1Drv.tx_size, "SEND OK", NULL) != RetSucc)
// {
// rt_kprintf ("NET:+CME:ERROR QPUSH\r\n");
// goto CAT1RST;
// }
// }
// }
}
rt_thread_mdelay (3000);
}
@@ -292,6 +312,14 @@ void cat1_service_tx (char * buff, int size)
rt_event_send (gTrigEvents, EVENT_TRIG_NETMODE_TX1) ;
}
// 通过网络通道2发送数据
void cat1_service2_tx (char * buff, int size)
{
rt_memcpy (g_cat1Drv.txbuff, buff, size);
g_cat1Drv.tx_size = size;
rt_event_send (gTrigEvents, EVENT_TRIG_NETMODE_TX2) ;
}
void CAT1ThreadStart (void)
{
+20 -4
View File
@@ -26,15 +26,15 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
cJSON_AddItemToObject (root, "site_type", cJSON_CreateString (p)); // 表示流量计
cJSON_AddItemToObject (root, "pver", cJSON_CreateString (PROTO_VER)); // 表示流量计
cJSON_AddItemToObject (root, "iccid", cJSON_CreateString (SysData.iccid)); // 表示流量计
cJSON_AddItemToObject (root, "ver", cJSON_CreateString (VERSION)); // 表示流量计
cJSON_AddItemToObject (root, "ver", cJSON_CreateString (GetVersion())); // 表示流量计
cJSON_AddItemToObject (root, "vol", cJSON_CreateNumber (12.3)); // 表示电池电压
cJSON_AddItemToObject (root, "temp", cJSON_CreateNumber (32.5)); // 表示流量计
p = ef_get_env ("net_drv");
cJSON_AddItemToObject (root, "netdrv", cJSON_CreateString (p)); // 表示流量计
p = ef_get_env ("iap_app_filename");
//uint32_t max_open = atoi (p);
cJSON_AddItemToObject (root, "filename", cJSON_CreateString (p)); // 表示电池电压
cJSON_AddItemToObject (root, "chancnt", cJSON_CreateNumber (1)); // 表示电池电压
p = ef_get_env ("chancnt");
cJSON_AddItemToObject (root, "chancnt", cJSON_CreateString (p)); // 表示电池电压
//cJSON_AddItemToObject (root, "chancnt", cJSON_CreateNumber (1)); // 表示电池电压
// 瞬时流速
for (int i = 0; i < 6; i++)
@@ -63,7 +63,7 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
// 当前水位
for (int i = 0; i < 6; i++)
{
dbl[i] = WaterData[i].thisLevel;
dbl[i] = (double)WaterData[i].thisLevel/100;
}
cJSON * ArrNumLeve = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisLeve", ArrNumLeve);
@@ -82,6 +82,22 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
}
cJSON * ArrNumTemp = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thistemp", ArrNumTemp);
// 当前测斜方向
for (int i = 0; i < 6; i++)
{
dbl[i] = IncData[i].dir;
}
cJSON * ArrNumIncDir = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisincdir", ArrNumIncDir);
// 当前测斜数据
for (int i = 0; i < 6; i++)
{
dbl[i] = IncData[i].data;
}
cJSON * ArrNumIncData = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisincdata", ArrNumIncData);
//---------------------------------------------以下不准修改
result = cJSON_PrintUnformatted (root);
+20
View File
@@ -7,9 +7,13 @@
#include <stdlib.h>
#include "data.h"
#include "os-app.h"
#include "main.h"
char config_list[16][32] = {NULL};
int config_list_size = 0;
// 用于远程出厂设置时保留配置
char backdevice_id[12] = {0};
char backnetdrv[12] = {0};
@@ -66,6 +70,7 @@ void JsonUnPacket (int index, char *buff)
UpgradeThreadStart();
break;
case DownReboot :
HAL_NVIC_SystemReset();
break;
case DownConfig: // 设置参数
// 读取参数列表
@@ -80,6 +85,9 @@ void JsonUnPacket (int index, char *buff)
ef_set_env (key, value);
}
}
mail.Type = MAIL_COMM_ACK;
mail.index = index + 1; // 0通道用来升级的通道
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
break;
case DownRead: // 读取参数
list = cJSON_GetObjectItem (root, "list");
@@ -94,6 +102,18 @@ void JsonUnPacket (int index, char *buff)
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
// 读取参数列表
break;
case DownFact:
p = ef_get_env("device_id");
rt_sprintf(backdevice_id,"%s",p);
p = ef_get_env("net_drv") ;
rt_sprintf(backnetdrv,"%s",p);
ef_env_set_default();
ef_set_env("device_id",backdevice_id) ;
ef_set_env("net_drv",backnetdrv) ;
mail.Type = MAIL_COMM_ACK;
mail.index = index + 1; // 0通道用来升级的通道
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
break;
default:
break;
}