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
{
int sockid;
int iLength ; // 接收长度
unsigned short usISUType; // 0,2=I ; 1=S ; 3=U
unsigned short usSendNo; // 发送序号

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

@ -55,7 +55,6 @@ protected:
};
void IEC104EnvFree();
void IEC104EnvLoad();
void UpdateLastTime();
void *thread_listen_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 */
class TTcpSocket
class TTcpSocket
{
public:
void clear_tcp_buffer(int socket_fd, int nbytes);

@ -19,6 +19,8 @@ TTcpSocket g_Tcp;
int g_Running;
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
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)
#endif
{
if (it->second.first.name.empty())
{
continue;
}
fields.append(it->second.first.name);
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_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_parse, thread_parser_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
#ifdef _HT_OPENCV_APP
ht_pthread_create_background(&thread_handle_opecvimg, thread_opencv_proc, NULL); // 图片解析线程

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

Loading…
Cancel
Save