This commit is contained in:
zhouhuang 2024-07-19 17:28:02 +08:00
parent 2826f5720d
commit f8a8868964
9 changed files with 1230 additions and 1024 deletions

View File

@ -4,7 +4,7 @@ set (VERSION 1.0.1)
# set (CMAKE_CXX_STANDARD 11)
option (USE_MQTT "use mqtt protocol" ON)
option (USE_WEBSOCKET "use websocket" OFF)
option (USE_WEBSOCKET "use websocket" ON)
option (USE_SQLITE3 "use sqlite3" ON)
if (USE_SQLITE3)
@ -145,11 +145,10 @@ if (USE_WEBSOCKET)
third_party/nopoll/nopoll_io.c
third_party/nopoll/nopoll_log.c
third_party/nopoll/nopoll_msg.c)
set (APP_SRCS ${APP_SRCS} dlt1867/dlt1867.cpp)
set (APP_LIBS ${APP_LIBS} ssl crypto)
add_definitions(-DUSE_WEBSOCKET)
add_definitions(-DNOPOLL_OS_UNIX=1)
#add_definitions(-DSHOW_DEBUG_LOG)
add_definitions(-DNOPOLL_HAVE_VASPRINTF=1)
add_definitions(-DNOPOLL_HAVE_TLSv10_ENABLED=1)
add_definitions(-DNOPOLL_HAVE_TLSv11_ENABLED=1)

View File

@ -32,16 +32,19 @@ CChangeMaster::CChangeMaster()
if (gethostname(hostname, sizeof(hostname)) < 0)
{
vLog(LOG_ERROR, "gethostname error.\n");
return;
exit(EXIT_FAILURE);
}
if (NULL == (m_control.m_node = GetNode(hostname)))
{
vLog(LOG_ERROR, "node table error, cann't run(%s,%s)!\n", m_control.m_node->m_machine_name, hostname);
return;
exit(EXIT_FAILURE);
}
if (m_control.m_node == NULL)
{
vLog(LOG_ERROR, "node table error, cann't change!\n");
return;
exit(EXIT_FAILURE);
}
if ((m_control.m_node->m_tcitype != MASTER_TCI) && (m_control.m_node->m_tcitype != STANDBY_TCI))
@ -444,6 +447,7 @@ void CChangeMaster::ChangeDual()
NODE_STRUCT* CChangeMaster::GetNode(char *name)
{
return &nodes.m_node[0];
int i = 0;
for (i = 0; i < MAX_NODE_NUM; i++)
{
@ -457,6 +461,7 @@ NODE_STRUCT* CChangeMaster::GetNode(char *name)
NODE_STRUCT* CChangeMaster::GetNode(int netno)
{
return &nodes.m_node[0];
int i = 0;
for (i = 0; i < MAX_NODE_NUM; i++)

File diff suppressed because it is too large Load Diff

View File

@ -23,11 +23,6 @@
#include "json.h"
#define ADDR_TYPE_NORMAL 0
#define ADDR_TYPE_HEX 1
#define ADDR_TYPE_IPV4 2
#define ADDR_TYPE_IPV4_FACNO 3
#define PARAMTER_TYPE_MODBUS 1
#define PARAMTER_TYPE_104 2
#define PARAMTER_TYPE_9712 3
@ -1040,6 +1035,7 @@ BOOLEAN WriteDatabaseCFG(void)
return FALSE;
}
#if 0
//此处定义一个map来放置irn和协议的order的关系
typedef std::map<QWORD, int> mapIRN2Order;
BOOLEAN processUartParam(std::string jsonvalue, int ord)
@ -2101,6 +2097,7 @@ BOOLEAN ReadConfigFromSQLite(BOOLEAN enable_auto_platform, const char* issmqtt_c
return TRUE;
}
#endif
void dumpLogs(void)
{
@ -2354,9 +2351,9 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
if (usesqlite)
{
vLog(LOG_DEBUG, "read configuration from sqlite3 db file.\n");
BOOLEAN ret;
ret = ReadConfigFromSQLite(enable_auto_platform, pathName, codeName);
BOOLEAN ret = FALSE;
#if 0
ret = ReadConfigFromSQLite(enable_auto_platform, pathName, codeName);
if (ret)
{
WriteSystemCFG();
@ -2377,6 +2374,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load system config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading node config...\n");
@ -2384,6 +2382,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load node config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading database config...\n");
@ -2391,6 +2390,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load database config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading hardware config...\n");
@ -2398,6 +2398,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load hardware config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading process config...\n");
@ -2405,6 +2406,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load processes config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading unit config...\n");
@ -2412,6 +2414,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load unit config!\n");
alarm();
return FALSE;
}
vLog(LOG_DEBUG, "Loading static unit config...\n");
@ -2419,6 +2422,7 @@ BOOLEAN initialize_system(BOOLEAN usesqlite, BOOLEAN enable_auto_platform, const
{
vLog(LOG_ERROR, "Fail load static unit config!\n");
alarm();
return FALSE;
}
}
return TRUE;

View File

@ -71,7 +71,7 @@ void CSOE::DumpSOE(void)
static_unit = fopen(pathName, "rb");
//打开yx.sta静态摁键
FILE* static_yx;
struUnitYXStatic yx;
struYXStatic yx;
snprintf(pathName, sizeof(pathName), "%s/%s", configpath, FILE_DATABASE_YX_STATIC);
static_yx = fopen(pathName, "rb");
@ -85,9 +85,9 @@ void CSOE::DumpSOE(void)
unit.model[15] = '\0';
}
memset(&yx, 0, sizeof(yx));
if (static_yx != NULL && fseek(static_yx, sizeof(struUnitYXStatic)*m_soes[m_load].order, SEEK_SET) == 0)
if (static_yx != NULL && fseek(static_yx, sizeof(struYXStatic)*m_soes[m_load].order, SEEK_SET) == 0)
{
fread(&yx, sizeof(struUnitYXStatic), 1, static_yx);
fread(&yx, sizeof(struYXStatic), 1, static_yx);
yx.name[63] = '\0';
}
fprintf(pf, "%04d/%02d/%02d %02d:%02d:%02d.%03d;%d;%s;%d;%s;%s;%d;%s\n", \

View File

@ -74,7 +74,7 @@ void CYCBW::DumpYCBW(void)
static_unit = fopen(pathName, "rb");
FILE* static_yc;
struUnitYCStatic yc;
struYCStatic yc;
snprintf(pathName, sizeof(pathName), "%s/%s", configpath, FILE_DATABASE_YC_STATIC);
static_yc = fopen(pathName, "rb");
@ -88,9 +88,9 @@ void CYCBW::DumpYCBW(void)
unit.model[15] = '\0';
}
memset(&yc, 0, sizeof(yc));
if (static_yc != NULL && fseek(static_yc, sizeof(struUnitYCStatic)*m_ycbws[m_load].order, SEEK_SET) == 0)
if (static_yc != NULL && fseek(static_yc, sizeof(struYCStatic)*m_ycbws[m_load].order, SEEK_SET) == 0)
{
fread(&yc, sizeof(struUnitYCStatic), 1, static_yc);
fread(&yc, sizeof(struYCStatic), 1, static_yc);
yc.name[63] = '\0';
}
fprintf(pf, "%s;%d;%d;%d;%s;%s;%d;%s\n",

View File

@ -73,7 +73,7 @@ void CYXBW::DumpYXBW(void)
static_unit = fopen(pathName, "rb");
FILE* static_yx;
struUnitYXStatic yx;
struYXStatic yx;
snprintf(pathName, sizeof(pathName), "%s/%s", configpath, FILE_DATABASE_YX_STATIC);
static_yx = fopen(pathName, "rb");
@ -87,9 +87,9 @@ void CYXBW::DumpYXBW(void)
unit.model[15] = '\0';
}
memset(&yx, 0, sizeof(yx));
if (static_yx != NULL && fseek(static_yx, sizeof(struUnitYXStatic)*m_yxbws[m_load].order, SEEK_SET) == 0)
if (static_yx != NULL && fseek(static_yx, sizeof(struYXStatic)*m_yxbws[m_load].order, SEEK_SET) == 0)
{
fread(&yx, sizeof(struUnitYXStatic), 1, static_yx);
fread(&yx, sizeof(struYXStatic), 1, static_yx);
yx.name[63] = '\0';
}
fprintf(pf, "%s;%d;%s;%d;%s;%s;%d;%s\n",

View File

@ -14,52 +14,28 @@ const char VERSION_NO[] = "1.3.0001";
#include <stdarg.h>
#include <sys/timeb.h>
#include <cstring>
#ifdef WIN32
#include "pthread.h"
#include <WinSock2.h>
#include <WS2tcpip.h>
typedef char optval_t;
typedef int socklen_t;
#define msleep(msec) Sleep(msec)
#define sleep(sec) Sleep(sec * 1000)
void usleep(unsigned long usec);
int close(SOCKET s);
int ioctl(SOCKET s, long cmd, u_long FAR* argp);
int gettimeofday(struct timeval *tp, struct timezone *tz);
int settimeofday(struct timeval *tp, struct timezone *tz);
struct tm *localtime_r(long *close, struct tm *res);
#else
#include <errno.h>
#include <error.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <pthread.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <linux/rtc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/kd.h>
#include <net/if.h>
#include <netdb.h>
#include <sys/syscall.h>
#if 0
#include "threadpool.h"
#define THREADPOOL_MAX_NUM 68
#endif
typedef int optval_t;
typedef int SOCKET;
#endif //WIN32
#include <errno.h>
#include <error.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <pthread.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <linux/rtc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/kd.h>
#include <net/if.h>
#include <netdb.h>
#include <sys/syscall.h>
typedef int optval_t;
typedef int SOCKET;
#include <string>
#include <vector>
#include <sys/stat.h>
@ -212,30 +188,36 @@ const char VERSION_NO[] = "1.3.0001";
#define PROTOCOL_HOST_MODBUS_TCP 16 //MODBUS tcp主
#define PROTOCOL_SUB_MODBUS_TCP 17 //MODBUS RTU over tcp从
#define PROTOCOL_HOST_MODBUS_RTU_TCP 18 //MODBUS RTU over tcp主
#define PROTOCOL_HOST_MODBUS_RTU_NCY 19 //NCY-6100系列微机保护装置MODBUS RTU主
#define PROTOCOL_HOST_MODBUS_RTU_LIYEZG 20 //浙江立业电器MODBUS RTU主
//#define PROTOCOL_HOST_MODBUS_RTU_NCY 19 //NCY-6100系列微机保护装置MODBUS RTU主
//#define PROTOCOL_HOST_MODBUS_RTU_LIYEZG 20 //浙江立业电器MODBUS RTU主
#define PROTOCOL_RTU_STATE 21 //主控状态
#define PROTOCOL_LOCAL_DEBUG 22 //本地调试
#define PROTOCOL_SUB_XT9712 23 //XT9712从
#define PROTOCOL_HISDATA 24 //历史数据协议
//#define PROTOCOL_SUB_XT9712 23 //XT9712从
//#define PROTOCOL_HISDATA 24 //历史数据协议
#define PROTOCOL_BF_FTP 25 //倍福FTP数据协议
#define PROTOCOL_HOST_NSA 27 //NSA主
//#define PROTOCOL_HOST_NSA 27 //NSA主
#define PROTOCOL_HOST_DLT645V2007 30 //dlt645v2007协议
#define PROTOCOL_HOST_DLT645V2007_HR 31 //中电华瑞dlt645v2007协议
#define PROTOCOL_HOST_DLT645V2007_OVERTCP 32 //中电华瑞dlt645v2007 over tcp协议
#define PROTOCOL_CALC 37 //计算
#define PROTOCOL_DLT_1867 40 //需求响应协议dlt1867-2008
//#define PROTOCOL_DLT_1867 40 //需求响应协议dlt1867-2008
#define PROTOCOL_SUB_GDW104 47 //国网104从
#define PROTOCOL_AGC 50 //功率自动控制app
#define PROTOCOL_AVC 51 //电压自动控制app
//#define PROTOCOL_AGC 50 //功率自动控制app
//#define PROTOCOL_AVC 51 //电压自动控制app
#define PROTOCOL_HW_MQTT 72 //华为物联平台ROMA
#define PROTOCOL_ISS_MQTT 73 //软通动力mqtt
#define PROTOCOL_LM_MQTT 74 //罗米mqtt
#define PROTOCOL_GRPC_PUBLISH 76 //gRPC上传发布
#define PROTOCOL_GRPC_SUBSCRIBE 77 //gRPC下载订阅
//#define PROTOCOL_ISS_MQTT 73 //软通动力mqtt
//#define PROTOCOL_LM_MQTT 74 //罗米mqtt
//#define PROTOCOL_GRPC_PUBLISH 76 //gRPC上传发布
//#define PROTOCOL_GRPC_SUBSCRIBE 77 //gRPC下载订阅
#define PROTOCOL_OPCUA 78 //opcua协议
#define PROTOCOL_HOST_MODBUS_RTU_RDS100AFT 80 //珠海瑞捷电气股份有限公司RD系列保护装置MODBUS RTU主
#define PROTOCOL_HOST_MODBUS_RTU_APF 81 //江苏沃海电气有限公司APFSVGMODBUS RTU主
//#define PROTOCOL_HOST_MODBUS_RTU_RDS100AFT 80 //珠海瑞捷电气股份有限公司RD系列保护装置MODBUS RTU主
//#define PROTOCOL_HOST_MODBUS_RTU_APF 81 //江苏沃海电气有限公司APFSVGMODBUS RTU主
#define ADDR_TYPE_NORMAL 0
#define ADDR_TYPE_HEX 1
#define ADDR_TYPE_IPV4 2
#define ADDR_TYPE_IPV4_FACNO 3
#define YKS_IDLE 0
@ -858,6 +840,7 @@ typedef struct
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
short order;
BYTE value;
BYTE qds; //品质描述
@ -865,18 +848,20 @@ typedef struct
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
DWORD update_time;
QLONG irn;
//是否取反,default: 0
BOOLEAN invert;
} struUnitYX;
#if 0
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
} struUnitYXStatic;
#if 0
#define EXTREME_SAMPLE_NUM 32
#endif
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
short order;
short factor; //比例系数
LONG value; //遥测值
@ -888,12 +873,31 @@ typedef struct
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
DWORD update_time;
QLONG irn;
//上界
float upBound;
//下界
float lowBound;
//限值1, default: 0
BOOLEAN limit1Enable;
//限值1下限
float limit1Low;
//限值1上限
float limit1High;
//限值2, default: 0
BOOLEAN limit2Enable;
//限值2上限
float limit2High;
//限值2下限
float limit2Low;
} struUnitYC;
#if 0
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
} struUnitYCStatic;
#endif
typedef struct
{
@ -908,6 +912,7 @@ typedef struct
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
short order;
DWORD value;
float coef;
@ -917,13 +922,16 @@ typedef struct
QLONG irn;
} struUnitYM;
#if 0
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
} struUnitYMStatic;
#endif
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
short order;
BOOLEAN selected;
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
@ -937,16 +945,19 @@ typedef struct
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
short order;
BOOLEAN selected;
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
QLONG irn;
} struUnitYT;
#if 0
typedef struct
{
char name[(MAX_NAME_SIZE << 2)];
} struUnitYTStatic;
#endif
typedef struct
{

View File

@ -301,6 +301,8 @@ bool Reader::parse(const char* beginDoc,
const char* endDoc,
Value& root,
bool collectComments) {
fprintf(stderr, "here.\n");
if (!features_.allowComments_) {
collectComments = false;
}