Compare commits

...

2 Commits

Author SHA1 Message Date
BlueMatthew cc1a720471 过滤未定义字段的点位 2 years ago
BlueMatthew bd214bc82d 服务端支持多个连接 2 years ago

@ -118,6 +118,7 @@ typedef struct {
typedef struct typedef struct
{ {
int sockid;
int iLength ; // 接收长度 int iLength ; // 接收长度
unsigned short usISUType; // 0,2=I ; 1=S ; 3=U unsigned short usISUType; // 0,2=I ; 1=S ; 3=U
unsigned short usSendNo; // 发送序号 unsigned short usSendNo; // 发送序号

@ -41,7 +41,7 @@
#include <vector> #include <vector>
#include <iostream> #include <iostream>
#define _HT_OPENCV_APP // 图片分析处理程序 // #define _HT_OPENCV_APP // 图片分析处理程序
#define _HT_IEC104_APP // IEC104通讯程序 #define _HT_IEC104_APP // IEC104通讯程序
#define _DEF_HMF_VOLTAGE // 黑麋峰高压侧电流计算 #define _DEF_HMF_VOLTAGE // 黑麋峰高压侧电流计算
#define _DEF_DB_CHANGERATE // 启用偏差率入库功能,否则以设定的间隔时间入库 #define _DEF_DB_CHANGERATE // 启用偏差率入库功能,否则以设定的间隔时间入库
@ -55,27 +55,29 @@ extern int g_Running;
extern TConfig g_TConfig; extern TConfig g_TConfig;
extern TTcpSocket g_Tcp; extern TTcpSocket g_Tcp;
extern ST_IEC104_CTRL g_IecCtrl; // socket linker info and status extern ST_IEC104_CTRL g_IecCtrl; // socket linker info and status
extern mutex g_IecCtrl_mutex; // socket linker on mutex extern int g_MaxScokId; // socket linker info and status
extern std::map<int, ST_IEC104_CTRL> g_IecCtrls;
extern mutex g_IecCtrl_mutex; // socket linker on mutex
extern map<string, ST_BYQWORK_STATUS> g_map_work; // 主变工作状态缓存 extern map<string, ST_BYQWORK_STATUS> g_map_work; // 主变工作状态缓存
extern mutex g_map_work_mutex; // 主变工作状态缓存队列锁 extern mutex g_map_work_mutex; // 主变工作状态缓存队列锁
//extern map<string,ST_BYQ_CACHE> g_map_byq; // 变压器缓存数据 //extern map<string,ST_BYQ_CACHE> g_map_byq; // 变压器缓存数据
extern map<string, ST_BYQ_RUN_STATE_THRESHOLD> g_map_thres_byq; // 变压器缓存数据 extern map<string, ST_BYQ_RUN_STATE_THRESHOLD> g_map_thres_byq; // 变压器缓存数据
extern mutex g_map_byq_mutex; // 变压器缓存数据信息队列锁 extern mutex g_map_byq_mutex; // 变压器缓存数据信息队列锁
//extern map<string,ST_GIS_CACHE> g_map_gis; // GIS缓存数据 //extern map<string,ST_GIS_CACHE> g_map_gis; // GIS缓存数据
//extern mutex g_map_gis_mutex; // GIS缓存数据信息队列锁 //extern mutex g_map_gis_mutex; // GIS缓存数据信息队列锁
extern multimap<string, ST_DEV_RELATION> g_map_relation; // 主设备与外挂设备关系 extern multimap<string, ST_DEV_RELATION> g_map_relation; // 主设备与外挂设备关系
extern mutex g_map_relation_mutex; // GIS缓存数据信息队列锁 extern mutex g_map_relation_mutex; // GIS缓存数据信息队列锁
//extern map<string, ST_GIS_IEC104_DATA> g_map_gis_104; // GIS最近一次104上传数据缓存 //extern map<string, ST_GIS_IEC104_DATA> g_map_gis_104; // GIS最近一次104上传数据缓存
//extern mutex g_map_gis_104_mutex; //extern mutex g_map_gis_104_mutex;
//extern map<string, ST_BLQ_CACHE> g_map_blq; // BLQ缓存数据 //extern map<string, ST_BLQ_CACHE> g_map_blq; // BLQ缓存数据
//extern mutex g_map_blq_mutex; // BLQ缓存数据信息队列锁 //extern mutex g_map_blq_mutex; // BLQ缓存数据信息队列锁
extern map<unsigned int, ST_IECPOINT_TABLE> g_map_iec; // 104报文解析缓存数据 extern map<unsigned int, ST_IECPOINT_TABLE> g_map_iec; // 104报文解析缓存数据
extern mutex g_map_iec_mutex; // 104报文解析缓存数据信息队列锁 extern mutex g_map_iec_mutex; // 104报文解析缓存数据信息队列锁

@ -55,7 +55,6 @@ protected:
}; };
void IEC104EnvFree(); void IEC104EnvFree();
void IEC104EnvLoad(); void IEC104EnvLoad();
void UpdateLastTime();
void *thread_listen_proc(void *arg); void *thread_listen_proc(void *arg);
void *thread_client_proc(void *arg); void *thread_client_proc(void *arg);

@ -50,7 +50,7 @@ static const int MAX_SBUFF_TCP = 2048; //发送最大包长度
#define ErrException -1022 /* socket exceptions close */ #define ErrException -1022 /* socket exceptions close */
class TTcpSocket class TTcpSocket
{ {
public: public:
void clear_tcp_buffer(int socket_fd, int nbytes); void clear_tcp_buffer(int socket_fd, int nbytes);

@ -19,6 +19,8 @@ TTcpSocket g_Tcp;
int g_Running; int g_Running;
ST_IEC104_CTRL g_IecCtrl; // socket linker info and status ST_IEC104_CTRL g_IecCtrl; // socket linker info and status
std::map<int, ST_IEC104_CTRL> g_IecCtrls;
int g_MaxScokId; // socket linker info and status
mutex g_IecCtrl_mutex; // socket linker on mutex mutex g_IecCtrl_mutex; // socket linker on mutex
int g_seqno; // 与MEC之间交换的流水号 int g_seqno; // 与MEC之间交换的流水号

File diff suppressed because it is too large Load Diff

@ -533,6 +533,11 @@ std::string BuildSqlForDeviceData(CACHED_DEV_DATA& cachedDev)
for (it = cachedDev.fields.cbegin(); it != cachedDev.fields.cend(); ++it) for (it = cachedDev.fields.cbegin(); it != cachedDev.fields.cend(); ++it)
#endif #endif
{ {
if (it->second.first.name.empty())
{
continue;
}
fields.append(it->second.first.name); fields.append(it->second.first.name);
fields.append(","); fields.append(",");

@ -337,12 +337,12 @@ int main(int argc, char* argv[])
ht_pthread_create_background(&thread_handle_linkmgr, thread_listen_proc, NULL); // 链路管理线程 ht_pthread_create_background(&thread_handle_linkmgr, thread_listen_proc, NULL); // 链路管理线程
ht_pthread_create_background(&thread_handle_recv, thread_recv_proc, NULL); // ht_pthread_create_background(&thread_handle_recv, thread_recv_proc, NULL);
// ht_pthread_create_background(&thread_handle_linkmgr, thread_client_proc, NULL); // 链路管理线程 // ht_pthread_create_background(&thread_handle_linkmgr, thread_client_proc, NULL); // 链路管理线程
ht_pthread_create_background(&thread_handle_parse, thread_parser_proc, NULL); // 104报文解析线程 ht_pthread_create_background(&thread_handle_parse, thread_parser_proc, NULL); // 104报文解析线程
ht_pthread_create_background(&thread_handle_timer, thread_Timer_proc, NULL); // 104链路超时管理线程 ht_pthread_create_background(&thread_handle_timer, thread_Timer_proc, NULL); // 104链路超时管理线程
ht_pthread_create_background(&thread_handle_active, thread_active_proc, NULL); // 104报文应答线程 // ht_pthread_create_background(&thread_handle_active, thread_active_proc, NULL); // 104报文应答线程
#endif #endif
#ifdef _HT_OPENCV_APP #ifdef _HT_OPENCV_APP
ht_pthread_create_background(&thread_handle_opecvimg, thread_opencv_proc, NULL); // 图片解析线程 ht_pthread_create_background(&thread_handle_opecvimg, thread_opencv_proc, NULL); // 图片解析线程

@ -55,16 +55,22 @@ int TTcpSocket::tcpGetSockID()
//关闭socket //关闭socket
int TTcpSocket::tcpCloseSocket(int sockfd) int TTcpSocket::tcpCloseSocket(int sockfd)
{ {
if(sockfd > 0) { if (sockfd > 0) {
vPrtLogMsg(LOG_WARNG, RET_FAIL, "_close sockid=%d ", sockfd); vPrtLogMsg(LOG_WARNG, RET_FAIL, "_close sockid=%d ", sockfd);
#ifdef _WIN32 #ifdef _WIN32
//if(_close(sockfd) == -1) //if(_close(sockfd) == -1)
if(shutdown(sockfd, 2) == -1) if (shutdown(sockfd, 2) == -1)
#else #else
if(close(sockfd) == -1) if (shutdown(sockfd, SHUT_RDWR) == -1)
#endif #endif
vPrtLogMsg(LOG_WARNG, RET_FAIL, "_close sockid=%d return:%d:%s",sockfd, errno, strerror(errno)); vPrtLogMsg(LOG_WARNG, RET_FAIL, "_close sockid=%d return:%d:%s", sockfd, errno, strerror(errno));
return 1; else
#ifdef _WIN32
closesocket(sockfd);
#else
close(sockfd);
#endif
return 1;
} }
return 0 ; return 0 ;
} }
@ -396,8 +402,9 @@ int TTcpSocket::tcpRecvBuffer(int sockid, char* pBuffer,int nMaxLength, int time
struct timeval st_TimeOut; struct timeval st_TimeOut;
int isel = 0; int isel = 0;
if( sockid <= 0 || pBuffer == NULL) return -1; // if( sockid <= 0 || pBuffer == NULL) return -1;
while(iTop != nMaxLength)
while(iTop != nMaxLength)
{ {
st_TimeOut.tv_sec = timeout ; st_TimeOut.tv_sec = timeout ;
st_TimeOut.tv_usec = 0; st_TimeOut.tv_usec = 0;

Loading…
Cancel
Save