修复Linux上编译问题

main
Matthew 2 years ago
parent 034d5c5040
commit 7724d0aa98

@ -12,6 +12,7 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g")
project ("iec103") project ("iec103")
set_property( GLOBAL PROPERTY CXX_STANDARD 11) set_property( GLOBAL PROPERTY CXX_STANDARD 11)
add_definitions(-DOS_UNIX)
# Add source to this project's executable. # Add source to this project's executable.
add_executable (iec103 basefunc.cpp add_executable (iec103 basefunc.cpp
@ -31,9 +32,9 @@ add_executable (iec103 basefunc.cpp
os_heap.cpp os_heap.cpp
Profile_Hash.cpp Profile_Hash.cpp
scadaprotect.cpp scadaprotect.cpp
tcphost.cpp # tcphost.cpp
udpcomm.cpp # udpcomm.cpp
udpping.cpp # udpping.cpp
widgets.cpp) widgets.cpp)
# set(THREADS_PREFER_PTHREAD_FLAG ON) # set(THREADS_PREFER_PTHREAD_FLAG ON)

@ -74,8 +74,9 @@
#include "string.h" #include "string.h"
#include "stdio.h" #include "stdio.h"
#include "inifile.h"
#include "common.h" #include "common.h"
#include "inifile.h"
#include <stdlib.h>
//#include <qglobal.h> //#include <qglobal.h>
/*------------------------------------------------------------------------------------- /*-------------------------------------------------------------------------------------
INI(),API,const char*char* INI(),API,const char*char*
@ -83,14 +84,14 @@
(int),使 (int),使
-------------------------------------------------------------------------------------*/ -------------------------------------------------------------------------------------*/
int QGetPrivateProfileString( int QGetPrivateProfileString(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
char* lpszDefault, //缺省字符串 const char* lpszDefault, //缺省字符串
char* lpszReturnedString, //结果字符串 char* lpszReturnedString, //结果字符串
u_32 nSize, //结果字符串长度 u_32 nSize, //结果字符串长度
char* lpszFileName, //ini文件名 const char* lpszFileName, //ini文件名
char* lpszRemarkInLineStr, //行内注释符 const char* lpszRemarkInLineStr, //行内注释符
char chContinueLineChar //续行符号 const char chContinueLineChar //续行符号
) )
{ {
FILE* IniFile = NULL; FILE* IniFile = NULL;
@ -367,12 +368,12 @@ func_end:
UINTint UINTint
-------------------------------------------------------------------------------------*/ -------------------------------------------------------------------------------------*/
int QGetPrivateProfileInt( int QGetPrivateProfileInt(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
int nDefault, //缺省值 int nDefault, //缺省值
char* lpszFileName, //ini文件名 const char* lpszFileName, //ini文件名
char* lpszRemarkInLineStr, //行内注释符 const char* lpszRemarkInLineStr, //行内注释符
char chContinueLineChar //续行符号 const char chContinueLineChar //续行符号
) )
{ {
int iRet, iResult; int iRet, iResult;
@ -425,10 +426,10 @@ int QGetPrivateProfileInt(
-------------------------------------------------------------------------------------*/ -------------------------------------------------------------------------------------*/
BOOL QWritePrivateProfileString( BOOL QWritePrivateProfileString(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
char* lpszString, //要写入的字符串 const char* lpszString, //要写入的字符串
char* lpszFileName //INI文件名 const char* lpszFileName //INI文件名
) )
{ {
FILE* IniFile; FILE* IniFile;

@ -107,11 +107,14 @@
//#include <global_errno.h> //#include <global_errno.h>
// #include <sys/uswitch.h> // #include <sys/uswitch.h>
#include <errno.h> #include <errno.h>
#include <string.h>
#include <ctype.h>
#endif #endif
#include "Profile_Hash.h" #include "Profile_Hash.h"
#include "confrw_errno.h" #include "confrw_errno.h"
//#include "util.h" //#include "util.h"
#include "common.h"
#include "basefunc.h"
//定义句柄记录数组 //定义句柄记录数组
static SProfileHanleInfo g_pHandleIndex[MAX_PROFILEHANDLE_NUM]; static SProfileHanleInfo g_pHandleIndex[MAX_PROFILEHANDLE_NUM];
@ -233,7 +236,7 @@ pgc32 profile_search_sequence ( SItemInCache **pindex_base,
{ {
//以下执行大小写转换 //以下执行大小写转换
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(index.szSecName, szSecName, MAX_CHAR_LINE); lstrcpyn((LPWSTR)index.szSecName, (LPCWSTR)szSecName, MAX_CHAR_LINE);
// strupr(index.szSecName); // strupr(index.szSecName);
#else #else
strncpy(index.szSecName, szSecName, MAX_CHAR_LINE - 1); strncpy(index.szSecName, szSecName, MAX_CHAR_LINE - 1);
@ -243,7 +246,7 @@ pgc32 profile_search_sequence ( SItemInCache **pindex_base,
if (szItemName != NULL) if (szItemName != NULL)
{ {
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(index.szItemName, szItemName, MAX_CHAR_LINE); lstrcpyn((LPWSTR)index.szItemName, (LPCWSTR)szItemName, MAX_CHAR_LINE);
// strupr(index.szItemName); // strupr(index.szItemName);
#else #else
strncpy(index.szItemName, szItemName, MAX_CHAR_LINE - 1); strncpy(index.szItemName, szItemName, MAX_CHAR_LINE - 1);
@ -274,7 +277,7 @@ static u32 fnhash_index_of(const void * pKey, u32 hash_size)
memcpy(&sindex, pindex, sizeof(SItemInCache)); memcpy(&sindex, pindex, sizeof(SItemInCache));
//以下执行大小写转换 //以下执行大小写转换
#ifdef OS_WINDOWS #ifndef OS_WINDOWS
strupr(sindex.szSecName); strupr(sindex.szSecName);
strupr(sindex.szItemName); strupr(sindex.szItemName);
#else #else
@ -494,7 +497,7 @@ PGCBOOL DigItemContent( pgcchar *szString, pgcchar *szItemName, pgcchar *szItemV
//获取项目值 //获取项目值
memset(szTemp, 0, MAX_CHAR_LINE); memset(szTemp, 0, MAX_CHAR_LINE);
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(szTemp, pcBeval + 1, MAX_CHAR_LINE); lstrcpyn((LPWSTR)szTemp, (LPCWSTR)pcBeval + 1, MAX_CHAR_LINE);
#else #else
strncpy(szTemp ,pcBeval + 1, MAX_CHAR_LINE - 1); strncpy(szTemp ,pcBeval + 1, MAX_CHAR_LINE - 1);
#endif #endif
@ -952,11 +955,11 @@ pgc32 ProcessCreateCache(HPROFILE hProfile)
memset(szProfileName, 0, MAX_PATH_NUM); memset(szProfileName, 0, MAX_PATH_NUM);
//保存文件全路径名 //保存文件全路径名
//#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn((LPWSTR)szProfileName, (LPWSTR)g_pHandleIndex[hProfile].szPathName, MAX_PATH_NUM); lstrcpyn((LPWSTR)szProfileName, (LPWSTR)g_pHandleIndex[hProfile].szPathName, MAX_PATH_NUM);
/*#else #else
strncpy(szProfileName, g_pHandleIndex[hProfile].szPathName, MAX_PATH_NUM - 1); strncpy(szProfileName, g_pHandleIndex[hProfile].szPathName, MAX_PATH_NUM - 1);
#endif*/ #endif
memset(&g_pHandleIndex[hProfile], 0, sizeof(SProfileHanleInfo)); memset(&g_pHandleIndex[hProfile], 0, sizeof(SProfileHanleInfo));
//#ifdef OS_WINDOWS //#ifdef OS_WINDOWS
@ -1294,7 +1297,7 @@ pgc32 ProcessCreateCache(HPROFILE hProfile)
fclose(fstream); fclose(fstream);
//保存文件全路径名 //保存文件全路径名
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(g_pHandleIndex[hProfile].szPathName, szProfileName, MAX_PATH_NUM); lstrcpyn((LPWSTR)g_pHandleIndex[hProfile].szPathName, (LPCWSTR)szProfileName, MAX_PATH_NUM);
#else #else
strncpy(g_pHandleIndex[hProfile].szPathName, szProfileName, MAX_PATH_NUM - 1); strncpy(g_pHandleIndex[hProfile].szPathName, szProfileName, MAX_PATH_NUM - 1);
#endif #endif
@ -1357,11 +1360,11 @@ int create_profile_cache(pgcchar *szProfileName, int *phfile)
} }
//保存文件全路径名 //保存文件全路径名
//#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn((LPWSTR)g_pHandleIndex[hCurCacher].szPathName, (LPWSTR)szProfileName, MAX_PATH_NUM); lstrcpyn((LPWSTR)g_pHandleIndex[hCurCacher].szPathName, (LPWSTR)szProfileName, MAX_PATH_NUM);
/*#else #else
strncpy(g_pHandleIndex[hCurCacher].szPathName, szProfileName, MAX_PATH_NUM - 1); strncpy(g_pHandleIndex[hCurCacher].szPathName, szProfileName, MAX_PATH_NUM - 1);
#endif*/ #endif
pgc32 iExeRev = 0; pgc32 iExeRev = 0;
if ((iExeRev = ProcessCreateCache(hCurCacher)) != SUCCESS) if ((iExeRev = ProcessCreateCache(hCurCacher)) != SUCCESS)
return iExeRev; return iExeRev;
@ -1619,7 +1622,7 @@ int write_pgcprofile_string(
{ {
psTemp = &psCacheEntry[iCurItem]; psTemp = &psCacheEntry[iCurItem];
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(psTemp->szSecName, lpAppName, MAX_CHAR_LINE); lstrcpyn((LPWSTR)psTemp->szSecName, (LPCWSTR)lpAppName, MAX_CHAR_LINE);
#else #else
memset(psTemp->szSecName, 0, MAX_CHAR_LINE); memset(psTemp->szSecName, 0, MAX_CHAR_LINE);
strncpy(psTemp->szSecName, lpAppName, MAX_CHAR_LINE - 1); strncpy(psTemp->szSecName, lpAppName, MAX_CHAR_LINE - 1);
@ -1639,9 +1642,9 @@ int write_pgcprofile_string(
psTemp = &psCacheEntry[iCurItem]; psTemp = &psCacheEntry[iCurItem];
#ifdef OS_WINDOWS #ifdef OS_WINDOWS
lstrcpyn(psTemp->szSecName, lpAppName, MAX_CHAR_LINE); lstrcpyn((LPWSTR)psTemp->szSecName, (LPCWSTR)lpAppName, MAX_CHAR_LINE);
lstrcpyn(psTemp->szItemName, lpKeyName, MAX_CHAR_LINE); lstrcpyn((LPWSTR)psTemp->szItemName, (LPCWSTR)lpKeyName, MAX_CHAR_LINE);
lstrcpyn(psTemp->szItemVal, lpString, MAX_CHAR_LINE); lstrcpyn((LPWSTR)psTemp->szItemVal, (LPCWSTR)lpString, MAX_CHAR_LINE);
#else #else
memset(psTemp, 0, sizeof(SItemInCache)); memset(psTemp, 0, sizeof(SItemInCache));
strncpy(psTemp->szSecName, lpAppName, MAX_CHAR_LINE - 1); strncpy(psTemp->szSecName, lpAppName, MAX_CHAR_LINE - 1);

@ -90,12 +90,12 @@
//#include <util/util.h> //#include <util/util.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
//#ifdef OS_LINUX #ifndef _WIN32
// #include <sys/time.h> // #include <sys/time.h>
//#else #else
#include <winsock.h> #include <winsock.h>
#include <time.h> #include <time.h>
//#endif //OS_LINUX #endif //OS_LINUX
#include "global_errno.h" #include "global_errno.h"
#include "typedef.h" #include "typedef.h"

@ -54,7 +54,9 @@ void YkYtCommandProcess( int port, u_char *buf, int len );
// 读设备信息,检查芯片状态和读芯片类型和频率 // 读设备信息,检查芯片状态和读芯片类型和频率
void ReadPortConfigInfo( u_short netport ); void ReadPortConfigInfo( u_short netport );
#ifdef OS_WINDOWS
void DataDisp( HWND ); void DataDisp( HWND );
#endif
void CloseUdpSetSock( void ); void CloseUdpSetSock( void );
void PageUp( void ); void PageUp( void );

@ -74,6 +74,21 @@ int CmpString2(const char *str1, const char *str2)
return 1; return 1;
} }
#ifdef OS_UNIX
char *strupr(char *str)
{
char *ptr = str;
while (*ptr != '\0') {
if (islower(*ptr))
*ptr = toupper(*ptr);
ptr++;
}
return str;
}
#endif
BOOL IsRemarkLine(const char *str) BOOL IsRemarkLine(const char *str)
{ {
int i, iLen; int i, iLen;

@ -3,6 +3,7 @@
#if !defined(_BASEFUNC_H_200506101543__INCLUDED_) #if !defined(_BASEFUNC_H_200506101543__INCLUDED_)
#define _BASEFUNC_H_200506101543__INCLUDED_ #define _BASEFUNC_H_200506101543__INCLUDED_
#include "basetype.h" #include "basetype.h"
#include "common.h"
DSLIB_API void DebugPrint(char *szDebug); DSLIB_API void DebugPrint(char *szDebug);
@ -43,4 +44,8 @@ int SequenceHostToRtuint(int iValue);
DWORD SequenceHostToRtuDWord(DWORD dwValue); DWORD SequenceHostToRtuDWord(DWORD dwValue);
DWORD SequenceRtuToHostDWord(DWORD dwValue); DWORD SequenceRtuToHostDWord(DWORD dwValue);
#ifdef OS_UNIX
char *strupr(char *str);
#endif
#endif // !defined(_BASEFUNC_H_200506101543__INCLUDED_) #endif // !defined(_BASEFUNC_H_200506101543__INCLUDED_)

@ -36,9 +36,9 @@ typedef struct tagCMDDEF
} CMDDEF, *pCMDDEF; } CMDDEF, *pCMDDEF;
#ifndef _WIN32 #ifndef _WIN32
typedef long long _int64; // typedef long long _int64;
typedef unsigned long long _uint64; // typedef unsigned long long _uint64;
typedef int SOCKET; // typedef int SOCKET;
#endif #endif
/*#ifndef OS_WINDOWS /*#ifndef OS_WINDOWS

@ -364,8 +364,8 @@ void Buban103RecvData(int commid, u_char *buf, int len)//
#ifndef OS_LINUX #ifndef OS_LINUX
if((GetCurPort() == commid) && IsRealDataDisp()) if((GetCurPort() == commid) && IsRealDataDisp())
{ {
WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA, // WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA,
(BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen); // (BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen);
} }
#endif #endif
break; break;
@ -378,8 +378,10 @@ void Buban103RecvData(int commid, u_char *buf, int len)//
// wen 2004.11.22 Ôö¼ÓÏÔʾ // wen 2004.11.22 Ôö¼ÓÏÔʾ
if((GetCurPort() == commid) && IsRealDataDisp()) if((GetCurPort() == commid) && IsRealDataDisp())
{ {
#if 0
WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA, WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA,
(BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen); (BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen);
#endif
} }
#endif #endif
Buban103ProcessData(commid, pPortParam, FALSE); Buban103ProcessData(commid, pPortParam, FALSE);
@ -395,8 +397,10 @@ void Buban103RecvData(int commid, u_char *buf, int len)//
// wen 2004.11.22 Ôö¼ÓÏÔʾ // wen 2004.11.22 Ôö¼ÓÏÔʾ
if((GetCurPort() == commid) && IsRealDataDisp()) if((GetCurPort() == commid) && IsRealDataDisp())
{ {
#if 0
WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA, WatchDataPutDispBuf(commid, SDS_SIO_RECV_DATA,
(BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen); (BYTE *)pPortParam->m_achRecvBuf, pPortParam->m_iRecvLen);
#endif
} }
#endif #endif
Buban103ProcessData(commid, pPortParam, FALSE); Buban103ProcessData(commid, pPortParam, FALSE);
@ -1247,7 +1251,7 @@ BOOL InitBuban103InfoFromTempletFile(int commid,
break; break;
case PARAM_DEV: case PARAM_DEV:
bVal = GetDevParamFromTemplateFile(commid, hFile, psLink); // bVal = GetDevParamFromTemplateFile(commid, hFile, psLink);
break; break;
default: default:

@ -10,6 +10,11 @@
#ifndef __COMMON_H_ICL__ #ifndef __COMMON_H_ICL__
#define __COMMON_H_ICL__ #define __COMMON_H_ICL__
#ifdef _WIN32
#else
#define OS_UNIX
#endif
#ifdef _WIN32 #ifdef _WIN32
#ifdef _DEBUG #ifdef _DEBUG
@ -28,6 +33,7 @@
#include <netinet/in.h> #include <netinet/in.h>
#endif #endif
#include "platform_def.h"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
@ -90,6 +96,7 @@ typedef u_short WORD;
typedef u_long DWORD; typedef u_long DWORD;
#ifndef _WIN32 #ifndef _WIN32
#define OS_UNIX
typedef unsigned long long ULONG_PTR, *PULONG_PTR; typedef unsigned long long ULONG_PTR, *PULONG_PTR;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
@ -101,6 +108,9 @@ typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
#define _getpid getpid #define _getpid getpid
#define _stricmp strcasecmp #define _stricmp strcasecmp
#define Sleep(x) usleep(1000*x) #define Sleep(x) usleep(1000*x)
// #define GetPrivateProfileString QGetPrivateProfileString
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif #endif
#define BYTE3(a) (((a)&0xff)<<24) #define BYTE3(a) (((a)&0xff)<<24)
#define BYTE2(a) (((a)&0xff)<<16) #define BYTE2(a) (((a)&0xff)<<16)
@ -1221,7 +1231,7 @@ typedef struct
}DEVPROVSOE; }DEVPROVSOE;
// 所有规约的通用函数接口指针 // 所有规约的通用函数接口指针
typedef const struct typedef const struct tagFUNCTION_CALL
{ {
char *ProtocolName; // 规约名称 char *ProtocolName; // 规约名称
char *Account; // 规约说明 char *Account; // 规约说明

@ -10,10 +10,12 @@
//#include "stdafx.h" //#include "stdafx.h"
//#include "resource.h" //#include "resource.h"
#include "commport.h" #include "commport.h"
#include "common.h"
#include "udpcomm.h" #include "udpcomm.h"
#include "udpping.h" #include "udpping.h"
#include "tcphost.h" #include "tcphost.h"
#include "netport.h" #include "netport.h"
#ifdef _WIN32 #ifdef _WIN32
#include <winsock.h> #include <winsock.h>
#else #else
@ -23,6 +25,7 @@
#include <netinet/in.h> #include <netinet/in.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <math.h> #include <math.h>
#include "inifile.h"
#endif #endif
//#include "..\confrwlib\confrw.h" //#include "..\confrwlib\confrw.h"
@ -32,9 +35,9 @@ extern int CurPort;
extern int RealDataDispFlag; extern int RealDataDispFlag;
extern int iCurDevIdx; extern int iCurDevIdx;
extern DEV_DEF DevParam[]; // extern DEV_DEF DevParam[];
extern UDP_SET_DEF UdpParam; // extern UDP_SET_DEF UdpParam;
extern int RealDataDispFlag; extern int RealDataDispFlag;
FUNCTION_CALL *FunCallPtr; FUNCTION_CALL *FunCallPtr;
@ -92,7 +95,11 @@ u_long GetPrivateProString(const char *section, const char *entry, const char *d
} }
else //其它情况使用老办法读配置 else //其它情况使用老办法读配置
{ {
#ifdef _WIN32
GetPrivateProfileString((LPWSTR)section, (LPWSTR)entry, (LPWSTR)defaultstr, (LPWSTR)result, len, (LPWSTR)inifile); GetPrivateProfileString((LPWSTR)section, (LPWSTR)entry, (LPWSTR)defaultstr, (LPWSTR)result, len, (LPWSTR)inifile);
#else
GetPrivateProfileString(section, entry, defaultstr, result, len, inifile);
#endif
printf("\nTIP_(%04d): GetPrivateProString used GetPrivateProfileString(inifile=%s,section=%s, item=%s,result=%s)\n", inifile, section, entry, result); printf("\nTIP_(%04d): GetPrivateProString used GetPrivateProfileString(inifile=%s,section=%s, item=%s,result=%s)\n", inifile, section, entry, result);
result[0] = 0; result[0] = 0;
} }
@ -818,7 +825,11 @@ void ReadPortConfigInfo(u_short netport)
// wen 2005.03.01 增加遥控遥调转发处理 // wen 2005.03.01 增加遥控遥调转发处理
//"ProvYkYtTimeOut"="转发遥控超时时间" //"ProvYkYtTimeOut"="转发遥控超时时间"
#ifdef _WIN32
GetPrivateProfileString((LPWSTR)entry, (LPWSTR)"ProvYkYtTimeOut", (LPWSTR)"10", (LPWSTR)szbuf, 120, (LPWSTR)szPortConfig); GetPrivateProfileString((LPWSTR)entry, (LPWSTR)"ProvYkYtTimeOut", (LPWSTR)"10", (LPWSTR)szbuf, 120, (LPWSTR)szPortConfig);
#else
GetPrivateProfileString(entry, "ProvYkYtTimeOut", "10", szbuf, 120, szPortConfig);
#endif
SioParam[i].m_psBaoHu->ProvYkYtMsg.m_iTimeOut = atoi(szbuf); SioParam[i].m_psBaoHu->ProvYkYtMsg.m_iTimeOut = atoi(szbuf);
#ifdef _OS_WINDOWS_DEBUG_ #ifdef _OS_WINDOWS_DEBUG_
@ -1053,7 +1064,11 @@ mallocdbflag:
// wen 2005.03.01 增加遥控遥调转发处理 // wen 2005.03.01 增加遥控遥调转发处理
//"ProvYkYtTimeOut"="转发遥控超时时间" //"ProvYkYtTimeOut"="转发遥控超时时间"
#ifdef _WIN32
GetPrivateProfileString((LPWSTR)entry, (LPWSTR)"ProvYkYtTimeOut", (LPWSTR)"10", (LPWSTR)szbuf, 120, (LPWSTR)szPortConfig); GetPrivateProfileString((LPWSTR)entry, (LPWSTR)"ProvYkYtTimeOut", (LPWSTR)"10", (LPWSTR)szbuf, 120, (LPWSTR)szPortConfig);
#else
GetPrivateProfileString(entry, "ProvYkYtTimeOut", "10", szbuf, 120, szPortConfig);
#endif
SioParam[i].m_psBaoHu->ProvYkYtMsg.m_iTimeOut = atoi(szbuf); SioParam[i].m_psBaoHu->ProvYkYtMsg.m_iTimeOut = atoi(szbuf);
#ifdef _OS_WINDOWS_DEBUG_ #ifdef _OS_WINDOWS_DEBUG_
@ -2212,6 +2227,7 @@ void SendCmdFormPollCmdBuf(int port)
if (len < 3) if (len < 3)
return; return;
#if 0
if (UdpParam.Socket) if (UdpParam.Socket)
{ {
FillAndSendCmd(0, port, SDS_SIO_SEND_DATA, FillAndSendCmd(0, port, SDS_SIO_SEND_DATA,
@ -2223,6 +2239,7 @@ void SendCmdFormPollCmdBuf(int port)
SioParam[port].m_psBaoHu->RevCmdFlag = 0; SioParam[port].m_psBaoHu->RevCmdFlag = 0;
} }
if ((FAST_CMD_TYPE == SioParam[port].m_psBaoHu->LastGetCmdBuf) if ((FAST_CMD_TYPE == SioParam[port].m_psBaoHu->LastGetCmdBuf)
|| (UdpParam.Socket == 0)) || (UdpParam.Socket == 0))
{ {
@ -2237,6 +2254,7 @@ void SendCmdFormPollCmdBuf(int port)
//ClearCmdAllFlag(port); // 清除当前命令 //ClearCmdAllFlag(port); // 清除当前命令
} }
} }
#endif
} }
void TimerProc(void) void TimerProc(void)
@ -2550,7 +2568,7 @@ void SendDataToPort(int commid, char *buf, int len)
#ifdef OS_LINUX #ifdef OS_LINUX
AddNode(commid, (char *)buf, len); AddNode(commid, (char *)buf, len);
#else #else
FillAndSendCmd(0, commid, SDS_SIO_SEND_DATA, (u_char*)buf, len); // FillAndSendCmd(0, commid, SDS_SIO_SEND_DATA, (u_char*)buf, len);
// wen 2004.12.21 发送计数已经在发送时做了计算 // wen 2004.12.21 发送计数已经在发送时做了计算
SioParam[commid].SendCharNum += len; SioParam[commid].SendCharNum += len;
#endif #endif
@ -2690,7 +2708,7 @@ BOOL SendYkYtCommand2(int commid, YKYT_PARAM *pParam)
{ {
Val[2] = 1; Val[2] = 1;
} }
SetYkYtAckData(commid, Val); // SetYkYtAckData(commid, Val);
return TRUE; return TRUE;
} }
@ -4330,7 +4348,9 @@ int GetSioParam(SIO_PARAM_DEF **ppParam)
int GetDevParam(DEV_DEF **ppParam) int GetDevParam(DEV_DEF **ppParam)
{ {
#if 0
*ppParam = &DevParam[iCurDevIdx]; *ppParam = &DevParam[iCurDevIdx];
#endif
return GetMaxPort(); return GetMaxPort();
} }

@ -1,26 +1,26 @@
[网络设置] [网络设置]
主机网络端口=7119 主机网络端口=7119
PING接收端口=13124 PING接收端口=13124
PING发送端口=13123 PING发送端口=13123
[主机地址] [主机地址]
主机A地址1=192.168.1.199 主机A地址1=192.168.1.199
停止向主机发送端口全数据=0 停止向主机发送端口全数据=0
[前置机] [前置机]
前置机A地址1=192.168.1.143 前置机A地址1=192.168.1.143
前置机A地址2=192.168.2.143 前置机A地址2=192.168.2.143
前置机B地址1=192.168.1.113 前置机B地址1=192.168.1.113
前置机B地址2=192.168.2.113 前置机B地址2=192.168.2.113
前置机A地址1掩码=255.255.255.0 前置机A地址1掩码=255.255.255.0
前置机A地址2掩码=255.255.255.0 前置机A地址2掩码=255.255.255.0
前置机B地址1掩码=255.255.255.0 前置机B地址1掩码=255.255.255.0
前置机B地址2掩码=255.255.255.0 前置机B地址2掩码=255.255.255.0
允许前置机连接=1 允许前置机连接=1
前置机连接=2 前置机连接=2
起始厂站号=0 起始厂站号=0
运行方式=0 运行方式=0
主备切换端口屏蔽字=0x00000000 主备切换端口屏蔽字=0x00000000
[对时] [对时]
对时方式=1 对时方式=1
[NetCommPort] [NetCommPort]
UdpCommPort=0xfe00 UdpCommPort=0xfe00
TcpCommPort=0xff01 TcpCommPort=0xff01

@ -7,9 +7,11 @@
extern SIO_PARAM_DEF SioParam[]; extern SIO_PARAM_DEF SioParam[];
extern int iCurDevIdx; extern int iCurDevIdx;
extern DEV_DEF DevParam[]; // extern DEV_DEF DevParam[];
#ifdef _WIN32
HWND hMainWnd; HWND hMainWnd;
#endif
int RealDataDispFlag; int RealDataDispFlag;
@ -413,7 +415,8 @@ void RealPiDataDisp( HDC hdc )
void WatchDataDisp( HDC hdc ) void WatchDataDisp( HDC hdc )
{ {
UINT xWd, yHg, lineh; #if 0
UINT xWd, yHg, lineh;
int i, j, total, idx, type; int i, j, total, idx, type;
char szbuf[256]; char szbuf[256];
RECT rc; RECT rc;
@ -470,6 +473,8 @@ void WatchDataDisp( HDC hdc )
rc.top += lineh; rc.top += lineh;
} }
#endif
} }
//*************************************************************** //***************************************************************

@ -25,32 +25,32 @@ bool IfBeforeHasRet(FILE* pFile); //
//读配置文件中指定段下指定键的值(字符串) //读配置文件中指定段下指定键的值(字符串)
int QGetPrivateProfileString( int QGetPrivateProfileString(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
char* lpszDefault, //缺省字符串 const char* lpszDefault, //缺省字符串
char* lpszReturnedString, //结果字符串 char* lpszReturnedString, //结果字符串
u_32 nSize, //结果字符串长度 u_32 nSize, //结果字符串长度
char* lpszFileName, //ini文件名 const char* lpszFileName, //ini文件名
char* lpszRemarkInLineStr = (char*)";", //行内注释符 const char* lpszRemarkInLineStr = (char*)";", //行内注释符
char chContinueLineChar = '\\' //续行符号 const char chContinueLineChar = '\\' //续行符号
); );
//读配置文件中指定段下指定键的值(整数) //读配置文件中指定段下指定键的值(整数)
int QGetPrivateProfileInt( int QGetPrivateProfileInt(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
int nDefault, //缺省值 int nDefault, //缺省值
char* lpszFileName, //ini文件名 const char* lpszFileName, //ini文件名
char* lpszRemarkInLineStr = (char*)";", //行内注释符 const char* lpszRemarkInLineStr = (char*)";", //行内注释符
char chContinueLineChar = '\\' //续行符号 const char chContinueLineChar = '\\' //续行符号
); );
//向配置文件写入指定段下指定键的值(字符串) //向配置文件写入指定段下指定键的值(字符串)
int QWritePrivateProfileString( int QWritePrivateProfileString(
char* lpszSectionName, //段名 const char* lpszSectionName, //段名
char* lpszKeyName, //键名 const char* lpszKeyName, //键名
char* lpszString, //要写入的字符串 const char* lpszString, //要写入的字符串
char* lpszFileName //INI文件名 const char* lpszFileName //INI文件名
); );
#endif #endif

@ -10,6 +10,11 @@
//#include "serialport.h" //#include "serialport.h"
#include "netport.h" #include "netport.h"
#include "commport.h" #include "commport.h"
#include "common.h"
#ifndef _WIN32
#include <sys/ioctl.h>
#endif
int netWSAStartupErr = FALSE; int netWSAStartupErr = FALSE;
@ -19,12 +24,12 @@ extern u_short MaxSerialPortNum;
extern u_short MaxNetPortNum; extern u_short MaxNetPortNum;
extern u_short MaxPortNum; extern u_short MaxPortNum;
//创建 UDP 通讯 socket //创建 UDP 通讯 socket
BYTE CreateUdpSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr) BYTE CreateUdpSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
{ {
int tmp, retval; int tmp, retval;
struct sockaddr_in addr; struct sockaddr_in addr;
u_long largp = 1L; //非阻塞模式 u_long largp = 1L; //非阻塞模式
char tmp_buf[256]; char tmp_buf[256];
if(*CommSock > -1) if(*CommSock > -1)
@ -40,22 +45,25 @@ BYTE CreateUdpSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
return FAIL_GREATE; return FAIL_GREATE;
} }
// 将socket设置为非阻塞模式 // 将socket设置为非阻塞模式
//tmp = fcntl(*CommSock, F_GETFL, 0); #ifdef OS_UNIX
//fcntl(*CommSock, F_SETFL, tmp|O_NONBLOCK); tmp = fcntl(*CommSock, F_GETFL, 0);
fcntl(*CommSock, F_SETFL, tmp|O_NONBLOCK);
#else
retval = ioctlsocket(*CommSock, FIONBIO, (u_long FAR *)&largp); retval = ioctlsocket(*CommSock, FIONBIO, (u_long FAR *)&largp);
#endif
if (SOCKET_ERROR == retval) if (SOCKET_ERROR == retval)
{ {
retval = WSAGetLastError();
sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *CommSock); // retval = WSAGetLastError();
DebugPrint(tmp_buf); // sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *CommSock);
// DebugPrint(tmp_buf);
closesocket(*CommSock); closesocket(*CommSock);
*CommSock = -1; *CommSock = -1;
return FAIL_GREATE; return FAIL_GREATE;
} }
//设置socket输入输出缓冲 //设置socket输入输出缓冲
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
setsockopt(*CommSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp)); setsockopt(*CommSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp));
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
@ -65,13 +73,13 @@ BYTE CreateUdpSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
setsockopt(*CommSock, SOL_SOCKET, SO_KEEPALIVE, (char*)&tmp, sizeof(tmp)); setsockopt(*CommSock, SOL_SOCKET, SO_KEEPALIVE, (char*)&tmp, sizeof(tmp));
setsockopt(*CommSock, SOL_SOCKET, SO_REUSEADDR, (char*)&tmp, sizeof(tmp)); setsockopt(*CommSock, SOL_SOCKET, SO_REUSEADDR, (char*)&tmp, sizeof(tmp));
// 增加udp广播通讯(广播地址) // 增加udp广播通讯(广播地址)
if((NetCommIpAddr & 0x000000FF) == 0x000000FF) if((NetCommIpAddr & 0x000000FF) == 0x000000FF)
{ {
setsockopt(*CommSock, SOL_SOCKET, SO_BROADCAST, (char*)&tmp, sizeof(tmp)); setsockopt(*CommSock, SOL_SOCKET, SO_BROADCAST, (char*)&tmp, sizeof(tmp));
} }
//让配置socket 能收不同网段的配置命令 //让配置socket 能收不同网段的配置命令
//bzero(&addr, sizeof(addr)); //bzero(&addr, sizeof(addr));
memset((char*)&addr, 0, sizeof(addr)); memset((char*)&addr, 0, sizeof(addr));
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
@ -87,16 +95,21 @@ BYTE CreateUdpSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
return SUCCEED_GREATE; return SUCCEED_GREATE;
} }
//创建 TCP Server socket //创建 TCP Server socket
BYTE CreateTcpServerSock(int *LiSock, DWORD NetPort) BYTE CreateTcpServerSock(int *LiSock, DWORD NetPort)
{ {
int i, tmp, ret, retval, len; int i, tmp, ret, retval;
int keep_alive = 1; // 设定KeepAlive #ifdef _WIN32
int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间(s) int len;
int keep_interval = 3; // 两次KeepAlive探测间的时间间隔(s) #else
int keep_count = 3; // 判定断开前的KeepAlive探测次数 socklen_t len;
#endif
int keep_alive = 1; // 设定KeepAlive
int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间(s)
int keep_interval = 3; // 两次KeepAlive探测间的时间间隔(s)
int keep_count = 3; // 判定断开前的KeepAlive探测次数
struct sockaddr_in addr; struct sockaddr_in addr;
u_long largp = 1L; //非阻塞模式 u_long largp = 1L; //非阻塞模式
char tmp_buf[256]; char tmp_buf[256];
if(-1 < *LiSock) if(-1 < *LiSock)
@ -111,26 +124,29 @@ BYTE CreateTcpServerSock(int *LiSock, DWORD NetPort)
if(*LiSock < 0) if(*LiSock < 0)
{ {
retval = WSAGetLastError(); // retval = WSAGetLastError();
sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *LiSock); // sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *LiSock);
*LiSock = -1; *LiSock = -1;
return FAIL_GREATE; return FAIL_GREATE;
} }
// 将socket设置为非阻塞模式 // 将socket设置为非阻塞模式
//tmp = fcntl(*LiSock, F_GETFL, 0); #ifdef OS_UNIX
//fcntl(*LiSock, F_SETFL, tmp|O_NONBLOCK); tmp = fcntl(*LiSock, F_GETFL, 0);
retval = ioctlsocket(*LiSock, FIONBIO, (u_long FAR *)&largp); fcntl(*LiSock, F_SETFL, tmp|O_NONBLOCK);
#else
retval = ioctlsocket(*LiSock, FIONBIO, (u_long FAR*)&largp);
#endif
if (SOCKET_ERROR == retval) if (SOCKET_ERROR == retval)
{ {
retval = WSAGetLastError(); // retval = WSAGetLastError();
sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *LiSock); // sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", retval, *LiSock);
DebugPrint(tmp_buf); // DebugPrint(tmp_buf);
closesocket(*LiSock); closesocket(*LiSock);
*LiSock = -1; *LiSock = -1;
return FAIL_GREATE; return FAIL_GREATE;
} }
///设置socket的输入输出缓冲区大小 ///设置socket的输入输出缓冲区大小
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
setsockopt(*LiSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp)); setsockopt(*LiSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp));
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
@ -146,7 +162,7 @@ BYTE CreateTcpServerSock(int *LiSock, DWORD NetPort)
setsockopt(*LiSock, SOL_SOCKET, SO_REUSEADDR, (char*)&tmp, sizeof(tmp)); setsockopt(*LiSock, SOL_SOCKET, SO_REUSEADDR, (char*)&tmp, sizeof(tmp));
//set_keepalive(*LiSock, keep_alive, keep_idle, keep_interval, keep_count); //set_keepalive(*LiSock, keep_alive, keep_idle, keep_interval, keep_count);
//让TCP接收所有连线 //让TCP接收所有连线
memset((char*)&addr,0, sizeof(addr)); memset((char*)&addr,0, sizeof(addr));
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
addr.sin_port = htons(NetPort); addr.sin_port = htons(NetPort);
@ -174,16 +190,21 @@ BYTE CreateTcpServerSock(int *LiSock, DWORD NetPort)
return SUCCEED_GREATE; return SUCCEED_GREATE;
} }
//创建 TCP Client socket //创建 TCP Client socket
BYTE CreateTcpClientSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr) BYTE CreateTcpClientSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
{ {
int tmp,len; int tmp;
int keep_alive = 1; // 设定KeepAlive #ifdef _WIN32
int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间 int len;
int keep_interval = 3; // 两次KeepAlive探测间的时间间隔 #else
int keep_count = 3; // 判定断开前的KeepAlive探测次数 socklen_t len;
#endif
int keep_alive = 1; // 设定KeepAlive
int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间
int keep_interval = 3; // 两次KeepAlive探测间的时间间隔
int keep_count = 3; // 判定断开前的KeepAlive探测次数
struct sockaddr_in addr; struct sockaddr_in addr;
u_long largp = 1L; //非阻塞模式 u_long largp = 1L; //非阻塞模式
char tmp_buf[256]; char tmp_buf[256];
if(-1 < *CommSock) if(-1 < *CommSock)
@ -199,21 +220,24 @@ BYTE CreateTcpClientSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
return FAIL_GREATE; return FAIL_GREATE;
} }
// 将socket设置为非阻塞模式 // 将socket设置为非阻塞模式
//tmp = fcntl(*CommSock, F_GETFL, 0); #ifdef OS_UNIX
//fcntl(*CommSock, F_SETFL, tmp|O_NONBLOCK); tmp = fcntl(*CommSock, F_GETFL, 0);
tmp = ioctlsocket(*CommSock, FIONBIO, (u_long FAR *)&largp); fcntl(*CommSock, F_SETFL, tmp|O_NONBLOCK);
#else
tmp = ioctlsocket(*CommSock, FIONBIO, (u_long *)&largp);
#endif
if (SOCKET_ERROR == tmp) if (SOCKET_ERROR == tmp)
{ {
tmp = WSAGetLastError(); // tmp = WSAGetLastError();
sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", tmp, *CommSock); // sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", tmp, *CommSock);
DebugPrint(tmp_buf); // DebugPrint(tmp_buf);
closesocket(*CommSock); closesocket(*CommSock);
*CommSock = -1; *CommSock = -1;
return FAIL_GREATE; return FAIL_GREATE;
} }
///设置socket的输入输出缓冲区大小 ///设置socket的输入输出缓冲区大小
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
setsockopt(*CommSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp)); setsockopt(*CommSock, SOL_SOCKET, SO_RCVBUF, (char*)&tmp, sizeof(tmp));
tmp = MAX_NET_BUF_SIZE; tmp = MAX_NET_BUF_SIZE;
@ -247,7 +271,7 @@ BYTE CreateTcpClientSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
*CommSock = -1; *CommSock = -1;
return FAIL_GREATE; return FAIL_GREATE;
} }
// 非阻塞的情况下不能这样使用 // 非阻塞的情况下不能这样使用
// else // else
// { // {
// if(connect(*CommSock, (struct sockaddr *)&addr, sizeof(addr)) < 0) // if(connect(*CommSock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
@ -267,10 +291,10 @@ BYTE CreateTcpClientSock(int *CommSock, DWORD NetPort, DWORD NetCommIpAddr)
return SUCCEED_GREATE; return SUCCEED_GREATE;
} }
//int keep_alive = 1;//设定KeepAlive //int keep_alive = 1;//设定KeepAlive
//int keep_idle = 1;//开始首次KeepAlive探测前的TCP空闭时间 //int keep_idle = 1;//开始首次KeepAlive探测前的TCP空闭时间
//int keep_interval = 1;//两次KeepAlive探测间的时间间隔 //int keep_interval = 1;//两次KeepAlive探测间的时间间隔
//int keep_count = 3;//判定断开前的KeepAlive探测次数 //int keep_count = 3;//判定断开前的KeepAlive探测次数
/*void set_keepalive(int fd, int keep_alive, int keep_idle, int keep_interval, int keep_count) /*void set_keepalive(int fd, int keep_alive, int keep_idle, int keep_interval, int keep_count)
{ {
if(keep_alive) if(keep_alive)
@ -305,7 +329,7 @@ void OpenNetPort(int commid)
netcommipaddr = SioParam[commid].NetCommIpAddr; netcommipaddr = SioParam[commid].NetCommIpAddr;
switch(SioParam[commid].NetType) switch(SioParam[commid].NetType)
{ {
case UDP_COMM: // UDP 通讯 case UDP_COMM: // UDP 通讯
if(OPEN_PORT == SioParam[commid].OpenFlag) if(OPEN_PORT == SioParam[commid].OpenFlag)
return; return;
succeedflag = CreateUdpSock(&commsock, netport, netcommipaddr); succeedflag = CreateUdpSock(&commsock, netport, netcommipaddr);
@ -316,7 +340,7 @@ void OpenNetPort(int commid)
} }
break; break;
case TCP_S_COMM: // TCP 服务器通讯 case TCP_S_COMM: // TCP 服务器通讯
commsock = SioParam[commid].LiSock; commsock = SioParam[commid].LiSock;
succeedflag = CreateTcpServerSock(&commsock, netport); succeedflag = CreateTcpServerSock(&commsock, netport);
if(SUCCEED_GREATE == succeedflag) if(SUCCEED_GREATE == succeedflag)
@ -327,7 +351,7 @@ void OpenNetPort(int commid)
{ {
if(SioParam[i].NetPort == netport) if(SioParam[i].NetPort == netport)
{ {
printf("端口%d netport=%d lisock=%d\n", i+1, netport, commsock); printf("端口%d netport=%d lisock=%d\n", i+1, netport, commsock);
SioParam[i].LiSock = commsock; SioParam[i].LiSock = commsock;
} }
} }
@ -335,7 +359,7 @@ void OpenNetPort(int commid)
} }
break; break;
case TCP_C_COMM: // TCP 客户通讯 case TCP_C_COMM: // TCP 客户通讯
if(OPEN_PORT == SioParam[commid].OpenFlag) if(OPEN_PORT == SioParam[commid].OpenFlag)
return; return;
succeedflag = CreateTcpClientSock(&commsock, netport, netcommipaddr); succeedflag = CreateTcpClientSock(&commsock, netport, netcommipaddr);
@ -343,7 +367,7 @@ void OpenNetPort(int commid)
{ {
SioParam[commid].CommSock = commsock; SioParam[commid].CommSock = commsock;
//if(commid == 8) //if(commid == 8)
//printf("端口%d 创建TCP 客户端成功socket=%d\n", commid+1, SioParam[commid].CommSock); //printf("端口%d 创建TCP 客户端成功socket=%d\n", commid+1, SioParam[commid].CommSock);
} }
break; break;
} }
@ -353,7 +377,7 @@ void CloseNetPort(int commid)
{ {
switch(SioParam[commid].NetType) switch(SioParam[commid].NetType)
{ {
case UDP_COMM: // UDP 通讯 case UDP_COMM: // UDP 通讯
if(SioParam[commid].CommSock > -1) if(SioParam[commid].CommSock > -1)
closesocket(SioParam[commid].CommSock); closesocket(SioParam[commid].CommSock);
@ -364,10 +388,10 @@ void CloseNetPort(int commid)
} }
break; break;
case TCP_S_COMM: // TCP 服务器通讯 case TCP_S_COMM: // TCP 服务器通讯
if(SioParam[commid].CommSock > -1) if(SioParam[commid].CommSock > -1)
closesocket(SioParam[commid].CommSock); closesocket(SioParam[commid].CommSock);
//printf("关闭端口%d TCP客户端Socket=%d\n", commid+1, SioParam[commid].CommSock); //printf("关闭端口%d TCP客户端Socket=%d\n", commid+1, SioParam[commid].CommSock);
SioParam[commid].CommSock = -1; SioParam[commid].CommSock = -1;
if(CLOSE_PORT != SioParam[commid].OpenFlag) if(CLOSE_PORT != SioParam[commid].OpenFlag)
{ {
@ -375,57 +399,61 @@ void CloseNetPort(int commid)
} }
break; break;
case TCP_C_COMM: // TCP 客户端通讯 case TCP_C_COMM: // TCP 客户端通讯
if(SioParam[commid].CommSock > -1) if(SioParam[commid].CommSock > -1)
closesocket(SioParam[commid].CommSock); closesocket(SioParam[commid].CommSock);
SioParam[commid].CommSock = -1; SioParam[commid].CommSock = -1;
//printf("关闭端口%d TCP客户端Socket=%d\n", commid+1, SioParam[commid].CommSock); //printf("关闭端口%d TCP客户端Socket=%d\n", commid+1, SioParam[commid].CommSock);
if(CLOSE_PORT != SioParam[commid].OpenFlag) if(CLOSE_PORT != SioParam[commid].OpenFlag)
{ {
SioParam[commid].OpenFlag = CLOSE_PORT; SioParam[commid].OpenFlag = CLOSE_PORT;
} }
break; break;
} }
// 删除所有的发送缓冲区wen 2005.07.27 // 删除所有的发送缓冲区wen 2005.07.27
PortWriteDataFree(commid); PortWriteDataFree(commid);
} }
// TCP服务器端的侦听socket关闭与打开与端口是否打开的标识(SioParam[commid].OpenFlag)无关 // TCP服务器端的侦听socket关闭与打开与端口是否打开的标识(SioParam[commid].OpenFlag)无关
void CloseNetListenPort(int commid) void CloseNetListenPort(int commid)
{ {
int i; int i;
switch(SioParam[commid].NetType) switch(SioParam[commid].NetType)
{ {
case TCP_S_COMM: // TCP 服务器通讯 case TCP_S_COMM: // TCP 服务器通讯
if(SioParam[commid].LiSock > -1) if(SioParam[commid].LiSock > -1)
//close(SioParam[commid].LiSock); //close(SioParam[commid].LiSock);
closesocket(SioParam[commid].LiSock); closesocket(SioParam[commid].LiSock);
SioParam[commid].LiSock = -1; SioParam[commid].LiSock = -1;
// 使用相同TCP服务端口的端口的listen套接字全部标识为1(关闭) // 使用相同TCP服务端口的端口的listen套接字全部标识为1(关闭)
for(i=MaxSerialPortNum; i<MaxPortNum; i++) for(i=MaxSerialPortNum; i<MaxPortNum; i++)
{ {
if(SioParam[i].LiSock == SioParam[commid].LiSock) if(SioParam[i].LiSock == SioParam[commid].LiSock)
SioParam[i].LiSock = -1; SioParam[i].LiSock = -1;
} }
break; break;
case UDP_COMM: // UDP 通讯 case UDP_COMM: // UDP 通讯
break; break;
case TCP_C_COMM: // TCP 客户端通讯 case TCP_C_COMM: // TCP 客户端通讯
break; break;
} }
} }
// UDP网络通讯接收数据 // UDP网络通讯接收数据
void UdpRecv(int commid, int fds, u_long ipaddr) void UdpRecv(int commid, int fds, u_long ipaddr)
{ {
int len; int len;
char revbuf[MAX_MSG_BUF_SIZE]; char revbuf[MAX_MSG_BUF_SIZE];
struct sockaddr_in addr; struct sockaddr_in addr;
#ifdef _WIN32
int addr_len = sizeof(struct sockaddr_in); int addr_len = sizeof(struct sockaddr_in);
#else
socklen_t addr_len = sizeof(struct sockaddr_in);
#endif
// 将该socket中的数据读完 // 将该socket中的数据读完
do do
{ {
len = recvfrom(fds, revbuf, MAX_MSG_BUF_SIZE, 0, (struct sockaddr *)&addr, &addr_len); len = recvfrom(fds, revbuf, MAX_MSG_BUF_SIZE, 0, (struct sockaddr *)&addr, &addr_len);
@ -440,7 +468,7 @@ void UdpRecv(int commid, int fds, u_long ipaddr)
}while(len >= MAX_MSG_BUF_SIZE); }while(len >= MAX_MSG_BUF_SIZE);
} }
//从头结点往后删 //从头结点往后删
void DelNode(int commid) void DelNode(int commid)
{ {
struct WR_DATA *next; struct WR_DATA *next;
@ -472,7 +500,7 @@ void UdpSend(int commid)
addr.sin_port = htons(SioParam[commid].NetPort); addr.sin_port = htons(SioParam[commid].NetPort);
addr.sin_addr.s_addr = SioParam[commid].NetCommIpAddr; addr.sin_addr.s_addr = SioParam[commid].NetCommIpAddr;
// 错误判断和断点续传 // 错误判断和断点续传
plen = SioParam[commid].WriteData->PLen; plen = SioParam[commid].WriteData->PLen;
slen = SioParam[commid].WriteData->MsgLen - plen; slen = SioParam[commid].WriteData->MsgLen - plen;
if(slen <= 0) if(slen <= 0)
@ -516,7 +544,7 @@ BOOL TcpRecv(int commid, int fds, u_long ipaddr)
// if(OPEN_PORT != SioParam[commid].OpenFlag) // if(OPEN_PORT != SioParam[commid].OpenFlag)
// return FALSE; // return FALSE;
bRetVal = TRUE; bRetVal = TRUE;
//删除已断开的子socket //删除已断开的子socket
//ioctl(fds, FIONREAD, &nread); //ioctl(fds, FIONREAD, &nread);
/*if(nread == 0) /*if(nread == 0)
{ {
@ -530,7 +558,7 @@ BOOL TcpRecv(int commid, int fds, u_long ipaddr)
do do
{ {
len = recv(fds, revbuf, MAX_MSG_BUF_SIZE, 0); len = recv(fds, revbuf, MAX_MSG_BUF_SIZE, 0);
// 错误判断 len = 0 有可能是对方已经关闭socket // 错误判断 len = 0 有可能是对方已经关闭socket
if(len <= 0) if(len <= 0)
{ {
printf("port%d read error len=%d\n", commid+1, len); printf("port%d read error len=%d\n", commid+1, len);
@ -560,7 +588,7 @@ void TcpSend(int commid)
if(OPEN_PORT != SioParam[commid].OpenFlag) if(OPEN_PORT != SioParam[commid].OpenFlag)
{ {
SioParam[commid].OpenFlag = OPEN_PORT; SioParam[commid].OpenFlag = OPEN_PORT;
//printf("设置Tcp端口%d 端口状态为OPEN_PORT\n", commid+1); //printf("设置Tcp端口%d 端口状态为OPEN_PORT\n", commid+1);
} }
else else
{ {
@ -574,7 +602,7 @@ void TcpSend(int commid)
return; return;
} }
// 增加错误判断和断点续传 // 增加错误判断和断点续传
plen = SioParam[commid].WriteData->PLen; plen = SioParam[commid].WriteData->PLen;
slen = SioParam[commid].WriteData->MsgLen - plen; slen = SioParam[commid].WriteData->MsgLen - plen;
if(slen <= 0) if(slen <= 0)
@ -590,7 +618,7 @@ void TcpSend(int commid)
{ {
if(EINPROGRESS != errno) if(EINPROGRESS != errno)
{ {
//printf("端口%d 发送错误关闭Tcp通讯\n", commid+1); //printf("端口%d 发送错误关闭Tcp通讯\n", commid+1);
CloseNetPort(commid); CloseNetPort(commid);
} }
else else
@ -607,7 +635,7 @@ void TcpSend(int commid)
} }
else if(EINPROGRESS != errno) else if(EINPROGRESS != errno)
{ {
//printf("端口%d 不能发送数据关闭Tcp通讯\n", commid+1); //printf("端口%d 不能发送数据关闭Tcp通讯\n", commid+1);
CloseNetPort(commid); CloseNetPort(commid);
} }
} }
@ -615,25 +643,30 @@ void TcpSend(int commid)
void TcpAccept(int commid, int lisfds) void TcpAccept(int commid, int lisfds)
{ {
int sock, result, i, addr_len, tmp; int sock, i, tmp;
#ifdef _WIN32
int result, addr_len;
#else
socklen_t result, addr_len;
#endif
struct sockaddr_in addr; struct sockaddr_in addr;
int keep_alive = 1; // 设定KeepAlive int keep_alive = 1; // 设定KeepAlive
int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间 int keep_idle = 5; // 开始首次KeepAlive探测前的TCP空闭时间
int keep_interval = 3; // 两次KeepAlive探测间的时间间隔 int keep_interval = 3; // 两次KeepAlive探测间的时间间隔
int keep_count = 3; // 判定断开前的KeepAlive探测次数 int keep_count = 3; // 判定断开前的KeepAlive探测次数
fd_set set; fd_set set;
u_long largp = 1L; //非阻塞模式 u_long largp = 1L; //非阻塞模式
char tmp_buf[256]; char tmp_buf[256];
addr_len = sizeof(struct sockaddr_in); addr_len = sizeof(struct sockaddr_in);
//printf("端口%d 检查是否有客户端过来连接\n", commid+1); //printf("端口%d 检查是否有客户端过来连接\n", commid+1);
sock = accept(lisfds, (struct sockaddr *)&addr, &addr_len); sock = accept(lisfds, (struct sockaddr *)&addr, &addr_len);
if(sock < 0) if(sock < 0)
{ {
return; return;
} }
printf("TIP_(%04d): Port = %d, addr.sin_addr.s_addr(%08x), sock = %d\n", _getpid(), commid+1, addr.sin_addr.s_addr, sock); printf("TIP_(%04d): Port = %d, addr.sin_addr.s_addr(%08x), sock = %d\n", _getpid(), commid+1, addr.sin_addr.s_addr, sock);
// 多客户端向服务端连接时判断客户端来自的端口号 yizhonghu 20070704 // 多客户端向服务端连接时判断客户端来自的端口号 yizhonghu 20070704
for(i=MaxSerialPortNum; i<MaxPortNum; i++) for(i=MaxSerialPortNum; i<MaxPortNum; i++)
{ {
if((SioParam[i].NetCommIpAddr == addr.sin_addr.s_addr) if((SioParam[i].NetCommIpAddr == addr.sin_addr.s_addr)
@ -650,21 +683,24 @@ void TcpAccept(int commid, int lisfds)
return; return;
} }
// 如果socket已经存在则关掉原来的连接建立新的连接 yizhonghu 20070705 // 如果socket已经存在则关掉原来的连接建立新的连接 yizhonghu 20070705
if(SioParam[commid].CommSock < 0) if(SioParam[commid].CommSock < 0)
{ {
closesocket(SioParam[commid].CommSock); closesocket(SioParam[commid].CommSock);
} }
SioParam[commid].CommSock = sock; SioParam[commid].CommSock = sock;
//result = fcntl(sock, F_GETFL, 0); #ifdef OS_UNIX
//fcntl(sock, F_SETFL, result|O_NONBLOCK); result = fcntl(sock, F_GETFL, 0);
result = ioctlsocket(sock, FIONBIO, (u_long FAR *)&largp); fcntl(sock, F_SETFL, result|O_NONBLOCK);
#else
result = ioctlsocket(sock, FIONBIO, (u_long *)&largp);
#endif
if (SOCKET_ERROR == result) if (SOCKET_ERROR == result)
{ {
result = WSAGetLastError(); // result = WSAGetLastError();
sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", result, sock); // sprintf(tmp_buf, "ioctlsocket设置非阻塞模式错误, SocketError=%d, SocketId = %d", result, sock);
DebugPrint(tmp_buf); // DebugPrint(tmp_buf);
return; return;
} }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -680,7 +716,7 @@ void TcpAccept(int commid, int lisfds)
result = 1; result = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&result, sizeof(result)); setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&result, sizeof(result));
//set_keepalive(sock, keep_alive, keep_idle, keep_interval, keep_count); //set_keepalive(sock, keep_alive, keep_idle, keep_interval, keep_count);
// 这里应该等到确定端口可以写再设置为完全打开状态 // 这里应该等到确定端口可以写再设置为完全打开状态
//SioParam[commid].OpenFlag = OPEN_PORT; //SioParam[commid].OpenFlag = OPEN_PORT;
} }
@ -689,12 +725,12 @@ int AddFdToSet(int commid, int *fd_max, fd_set *fdset_ro, fd_set *fdset_wr, fd_s
int setflag, fds, inum; int setflag, fds, inum;
inum = 0; inum = 0;
setflag = 0;// (=0: 无操作; =1:没有后续操作; =2:当前无操作,但有后续操作;=3:有操作并有后续操作) setflag = 0;// (=0: 无操作; =1:没有后续操作; =2:当前无操作,但有后续操作;=3:有操作并有后续操作)
switch (SioParam[commid].NetType) switch (SioParam[commid].NetType)
{ {
case NO_COMM: case NO_COMM:
break; break;
case UDP_COMM: // 检查UDP端口套接字是否建立 case UDP_COMM: // 检查UDP端口套接字是否建立
if (-1 < SioParam[commid].CommSock) if (-1 < SioParam[commid].CommSock)
{ {
fds = SioParam[commid].CommSock; fds = SioParam[commid].CommSock;
@ -703,7 +739,7 @@ int AddFdToSet(int commid, int *fd_max, fd_set *fdset_ro, fd_set *fdset_wr, fd_s
} }
setflag = 2; setflag = 2;
break; break;
case TCP_S_COMM: // 检查TCP服务器端口套接字是否建立(包括listen套接字) case TCP_S_COMM: // 检查TCP服务器端口套接字是否建立(包括listen套接字)
if ((0 > SioParam[commid].CommSock) && (-1 < SioParam[commid].LiSock)) if ((0 > SioParam[commid].CommSock) && (-1 < SioParam[commid].LiSock))
{ {
fds = SioParam[commid].LiSock; fds = SioParam[commid].LiSock;
@ -718,7 +754,7 @@ int AddFdToSet(int commid, int *fd_max, fd_set *fdset_ro, fd_set *fdset_wr, fd_s
} }
setflag = 2; setflag = 2;
break; break;
case TCP_C_COMM: // 检查TCP客户端套接字是否建立 case TCP_C_COMM: // 检查TCP客户端套接字是否建立
if (-1 < SioParam[commid].CommSock) if (-1 < SioParam[commid].CommSock)
{ {
fds = SioParam[commid].CommSock; fds = SioParam[commid].CommSock;
@ -741,7 +777,7 @@ int AddFdToSet(int commid, int *fd_max, fd_set *fdset_ro, fd_set *fdset_wr, fd_s
} }
if (1 == setflag) if (1 == setflag)
return inum; return inum;
// if(2 == setflag) 无需处理 // if(2 == setflag) 无需处理
return inum; return inum;
} }
@ -749,7 +785,12 @@ int AddFdToSet(int commid, int *fd_max, fd_set *fdset_ro, fd_set *fdset_wr, fd_s
void PollAllPort(void) void PollAllPort(void)
{ {
struct timeval timeout; struct timeval timeout;
int i, inum, nfds, commid, fds, lisfds, ret, ierr, ierrlen; int i, inum, nfds, commid, fds, lisfds, ret, ierr;
#ifdef _WIN32
int ierrlen;
#else
socklen_t ierrlen;
#endif
u_long ipaddr; u_long ipaddr;
fd_set fdset_ro, fdset_wr, fdset_ex; fd_set fdset_ro, fdset_wr, fdset_ex;
/*static int ok=0;*/ /*static int ok=0;*/
@ -766,7 +807,7 @@ void PollAllPort(void)
} }
if(inum < 1) if(inum < 1)
return; return;
// 设置超时等待时间为0 // 设置超时等待时间为0
memset((char*)&timeout, 0, sizeof(struct timeval)); memset((char*)&timeout, 0, sizeof(struct timeval));
if(select(nfds+1, &fdset_ro, &fdset_wr, &fdset_ex, &timeout) < 1) if(select(nfds+1, &fdset_ro, &fdset_wr, &fdset_ex, &timeout) < 1)
{ {
@ -785,35 +826,35 @@ void PollAllPort(void)
case UDP_COMM: case UDP_COMM:
if(SioParam[commid].CommSock < 0) if(SioParam[commid].CommSock < 0)
break; break;
// 判断socket是否异常 // 判断socket是否异常
if(FD_ISSET(fds, &fdset_ex)) if(FD_ISSET(fds, &fdset_ex))
{ {
CloseNetPort(commid); CloseNetPort(commid);
break; break;
} }
// socket可读 // socket可读
if(FD_ISSET(fds, &fdset_ro)) if(FD_ISSET(fds, &fdset_ro))
UdpRecv(commid, fds, ipaddr);// 将该socket中的数据读完 UdpRecv(commid, fds, ipaddr);// 将该socket中的数据读完
// socket可写 // socket可写
if(FD_ISSET(fds, &fdset_wr)) if(FD_ISSET(fds, &fdset_wr))
UdpSend(commid); UdpSend(commid);
break; break;
case TCP_C_COMM: case TCP_C_COMM:
if(SioParam[commid].CommSock < 0) if(SioParam[commid].CommSock < 0)
break; break;
// 判断socket是否异常 // 判断socket是否异常
if(FD_ISSET(fds, &fdset_ex)) if(FD_ISSET(fds, &fdset_ex))
{ {
CloseNetPort(commid); CloseNetPort(commid);
break; break;
} }
// socket可读 // socket可读
if(FD_ISSET(fds, &fdset_ro)) if(FD_ISSET(fds, &fdset_ro))
{ {
if(TcpRecv(commid, fds, ipaddr) == FALSE) // 将该socket中的数据读完 if(TcpRecv(commid, fds, ipaddr) == FALSE) // 将该socket中的数据读完
break; // 端口可能已经关闭 break; // 端口可能已经关闭
} }
// socket可写 // socket可写
if(FD_ISSET(fds, &fdset_wr)) if(FD_ISSET(fds, &fdset_wr))
{ {
ierrlen = sizeof(ierr); ierrlen = sizeof(ierr);
@ -830,7 +871,7 @@ void PollAllPort(void)
lisfds = SioParam[commid].LiSock; lisfds = SioParam[commid].LiSock;
/*if(ok < 1000) /*if(ok < 1000)
{ {
printf("端口%d lisock=%d fds = %d\n", commid+1, lisfds, fds); printf("端口%d lisock=%d fds = %d\n", commid+1, lisfds, fds);
ok++; ok++;
}*/ }*/
if(fds < 0) if(fds < 0)
@ -839,7 +880,7 @@ void PollAllPort(void)
break; break;
if(FD_ISSET(lisfds, &fdset_ex)) if(FD_ISSET(lisfds, &fdset_ex))
{ {
//printf("端口%d 关闭服务器端口\n", commid+1); //printf("端口%d 关闭服务器端口\n", commid+1);
CloseNetListenPort(commid); CloseNetListenPort(commid);
} }
else if(FD_ISSET(lisfds, &fdset_ro)) else if(FD_ISSET(lisfds, &fdset_ro))
@ -848,24 +889,24 @@ void PollAllPort(void)
} }
break; break;
} }
// 判断socket是否异常 // 判断socket是否异常
if(FD_ISSET(fds, &fdset_ex)) if(FD_ISSET(fds, &fdset_ex))
{ {
//printf("端口%d socket异常关闭Tcp通讯\n", commid+1); //printf("端口%d socket异常关闭Tcp通讯\n", commid+1);
CloseNetPort(commid); CloseNetPort(commid);
break; break;
} }
// socket可读 // socket可读
if(FD_ISSET(fds, &fdset_ro)) if(FD_ISSET(fds, &fdset_ro))
{ {
if(TcpRecv(commid, fds, ipaddr) == FALSE) // 将该socket中的数据读完 if(TcpRecv(commid, fds, ipaddr) == FALSE) // 将该socket中的数据读完
break; // 端口可能已经关闭 break; // 端口可能已经关闭
} }
// socket可写 // socket可写
if(FD_ISSET(fds, &fdset_wr)) if(FD_ISSET(fds, &fdset_wr))
TcpSend(commid); TcpSend(commid);
break; break;
} }
} }
// 服务器端口读写数据 // 服务器端口读写数据
} }

@ -24,11 +24,11 @@
#include "list_entry.h" #include "list_entry.h"
#include "os_heap.h" #include "os_heap.h"
//#if defined(WIN32) #if defined(_WIN32)
#include <winsock2.h> #include <winsock2.h>
#include <direct.h> #include <direct.h>
#include <process.h> #include <process.h>
//#endif #endif
#ifdef _fclose #ifdef _fclose
#undef _fclose #undef _fclose

@ -59,7 +59,7 @@ c. Unix
#include <arpa/inet.h> //inet地址族的所有结构和常量定义都在这里 #include <arpa/inet.h> //inet地址族的所有结构和常量定义都在这里
#include <netinet/in.h> #include <netinet/in.h>
#include <errno.h> #include <errno.h>
#include <stropts.h> // #include <stropts.h>
#include <stddef.h> #include <stddef.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
@ -86,6 +86,9 @@ c. Unix
#define WritePrivateProfileString QWritePrivateProfileString #define WritePrivateProfileString QWritePrivateProfileString
#define closesocket close //winsock中关闭socket用closesocket(),而bsd socket中用close() #define closesocket close //winsock中关闭socket用closesocket(),而bsd socket中用close()
#define _strdup strdup
#define lstrcpyn strncpy
#define _getcwd getcwd
#endif #endif
/*-------------------------------- 类型定义 ------------------------------------*/ /*-------------------------------- 类型定义 ------------------------------------*/

@ -2839,6 +2839,7 @@ HOSTMSG *GetRtuChangeMsgPtr()
return gRtuChangeMsg; return gRtuChangeMsg;
} }
#if 0
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 增加字节顺序转换函数 // 增加字节顺序转换函数
BOOL AllDataHostToRtuByteSequence(HOSTMSG *hmsg, ORTUMSG *pSendMsg) BOOL AllDataHostToRtuByteSequence(HOSTMSG *hmsg, ORTUMSG *pSendMsg)
@ -3215,4 +3216,5 @@ void SendSystemTimeToHost(void)
rtumsg.MsgLen = 16; rtumsg.MsgLen = 16;
SendDataToAllHostSendBuf( (u_char*)&rtumsg, rtumsg.MsgLen + sizeof(HOSTMSGHEAD)); SendDataToAllHostSendBuf( (u_char*)&rtumsg, rtumsg.MsgLen + sizeof(HOSTMSGHEAD));
} }
#endif

@ -21,8 +21,14 @@ int FillAndSendCmd( u_long ipaddr, u_char port, WORD cmd, u_char *retbuf, int le
void ValueToBuf( u_char *buf, u_long val, int len ); void ValueToBuf( u_char *buf, u_long val, int len );
u_long BufToValue( u_char *buf, int len ); u_long BufToValue( u_char *buf, int len );
void WatchDataPutDispBuf( int port, WORD type, u_char *buf, int len ); inline void WatchDataPutDispBuf(int port, WORD type, u_char *buf, int len)
void WatchDataPutDispBufToFile(int port, WORD type, u_char *buf, int len); {
}
inline void WatchDataPutDispBufToFile(int port, WORD type, u_char *buf, int len)
{
}
void SetUdpRecvDataProcess( u_long ipaddr, u_char *buf, int len ); void SetUdpRecvDataProcess( u_long ipaddr, u_char *buf, int len );
@ -33,6 +39,9 @@ void SetDevTime();
void ResetDev(int iDevNo); void ResetDev(int iDevNo);
BOOL isUdpSocketExist(); inline BOOL isUdpSocketExist()
{
return 1;
}
#endif #endif

@ -1,6 +1,5 @@
// widgets.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // widgets.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// //
#define OS_WINDOWS 0
#include <iostream> #include <iostream>
#include "baohua.h" #include "baohua.h"
#include "buban103.h" #include "buban103.h"
@ -57,7 +56,9 @@ int main(void)
int ret = SUCCESS; int ret = SUCCESS;
char filename[256]; char filename[256];
#ifdef OS_WINDOWS
WSADATA WSAData; WSADATA WSAData;
#endif
//定时器指针置空 //定时器指针置空
//m_pMainTimer = NULL; //m_pMainTimer = NULL;
@ -105,12 +106,14 @@ int main(void)
strcpy(Manufacturer, MANUFACTURER); strcpy(Manufacturer, MANUFACTURER);
InitBaohuMainFlag = 1; InitBaohuMainFlag = 1;
#ifdef OS_WINDOWS
if (WSAStartup(MAKEWORD(2, 1), (LPWSADATA)&WSAData) != 0) if (WSAStartup(MAKEWORD(2, 1), (LPWSADATA)&WSAData) != 0)
{ {
ret = WSAGetLastError(); ret = WSAGetLastError();
//HostWSAStartupErr = TRUE; //HostWSAStartupErr = TRUE;
//return FALSE; //return FALSE;
} }
#endif
} }

@ -104,7 +104,7 @@
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck> <SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;DISABLE_OS_HEAP</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_CONSOLE;OS_WINDOWS;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;DISABLE_OS_HEAP</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/UTF-8 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/UTF-8 %(AdditionalOptions)</AdditionalOptions>
</ClCompile> </ClCompile>
@ -170,9 +170,6 @@
<ClCompile Include="os_heap.cpp" /> <ClCompile Include="os_heap.cpp" />
<ClCompile Include="Profile_Hash.cpp" /> <ClCompile Include="Profile_Hash.cpp" />
<ClCompile Include="scadaprotect.cpp" /> <ClCompile Include="scadaprotect.cpp" />
<ClCompile Include="tcphost.cpp" />
<ClCompile Include="udpcomm.cpp" />
<ClCompile Include="udpping.cpp" />
<ClCompile Include="widgets.cpp" /> <ClCompile Include="widgets.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -36,15 +36,6 @@
<ClCompile Include="scadaprotect.cpp"> <ClCompile Include="scadaprotect.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="tcphost.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="udpcomm.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="udpping.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="basefunc.cpp"> <ClCompile Include="basefunc.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>

Loading…
Cancel
Save