亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udmain.c

?? 工業組態軟件modbus驅動源代碼, 包括幫助文件.共享.
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* $Header: "%n Ver=%v  %f  LastEdit=%w  Locker=%l" */
/* "UDMAIN.C Ver=3  26-Nov-97,11:18:30  LastEdit=JIMV  Locker=***_NOBODY_***" */
/***********************************************************************\
*                                                                       *
*       Copyright Wonderware Software Development Corp. 1992-1997       *
*                                                                       *
*               ThisFileName="L:\ww\dde_serv\src\udsample\udmain.c"     *
*               LastEditDate="1997 Nov 26  11:18:00"                    *
*                                                                       *
\***********************************************************************/

// #define USING_WW_COMMONUI  /* use Wonderware common UI splash screen, about box */
   #define USING_WW_ABOUT     /* use Wonderware about box */
// #define USING_WW_LICENSE   /* use Wonderware License Manager */

//DV - Porting to FS2000
//#define SERVER_VERSION  GetString( STRUSER+0 )

#define LINT_ARGS
#include <windows.h>
#include <windowsx.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <string.h>

#include "ntconv.h"
#include "hmemcpy.h"
#include "chainmgr.h"
#include "udprot.h"
#include "uddefs.h"
#include "protocol.h"
#include "debug.h"
#include "system.h"
#include "debug.h"
#include "wwassert.h"
#include "tmpbuf.h"
#include "strval.h"
#include "udgetstr.h"
#include "config.h"
#include "menu.h"
#include "windeflt.h"
#include "srvrhelp.h"
#include "rc.h"
#include "wwcomdlg.h"
#include "wwcommui.h"
#include "CheckItem.h"
#ifdef USING_WW_LICENSE
#include "servlic.h"
#endif

USES_ASSERT

extern HWND     hWndParent;
extern HANDLE   hInst;
extern char szCfgPath[];

HHEAP hHeap;
WORD  tickChange;
DWORD lastTimer;
char  dbgBuf[DBG_BUF_SIZE];
CHAIN PortList;                 /* linked list of ports being used */
BOOL  ProtocolSuspended;
BOOL  ShowingSend = FALSE;      /* display commands to PLC in logger */
BOOL  ShowingReceive = FALSE;   /* display replies from PLC in logger */
BOOL  ShowingErrors = TRUE;     /* display error messages in logger */
BOOL  ShowingEvents = FALSE;    /* display events in logger */
BOOL  IndefWriteRetry = FALSE;  /* retry write messages even after loss of connection */
BOOL  Verbose = TRUE;          /* display program trace messages */
BOOL  DebugMenu = FALSE;        /* enable debug menu on server window */
BOOL  WriteConfigInASCII=FALSE; /* write configuration file as structures */
BOOL  bDoHelp = TRUE;
int   yDebug;                   /* text row position for dump screens */
int   iAllocatedDevices = 0;    /* Count of Active Devices */
BOOL  SimulatorWritePaused = FALSE; /* stop writes to simulated PLC */
BOOL  SimulatorReadPaused = FALSE;  /* stop reads from simulated PLC */

static DWORD dwValidDataTimeout;

static DWORD WINAPI TickDiff (DWORD dwFrom, DWORD dwTo);

#ifdef WIN32
char szServerIDstring[100];
#endif

/***********************************************************************/

void WINAPI UdDisplayAbout (HWND hWnd);
BOOL WINAPI UdPrivateAbout (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

/***********************************************************************/
/** Initialize protocol.
    Called by the toolkit when the server starts up.
    Should perform any initialization needed by the program.
    returns TRUE if everything is OK, FALSE if error **/

BOOL
WINAPI
ProtInit(void)
{
    int             L;
    char            driverName[20];
    int             nProtTimer;
    int             nReqTimer;
    HMENU           hMenu;
    WORD            wCheckMenu;
    int             piMajorRev;
    int             piMinorRev;
    WORD            wSymsize = SIZE_SYMENT;


    /*******************************************************************\
    *                                                                   *
    *       Get user-selections from the WIN.INI file.                  *
    *                                                                   *
    *   The WIN.INI controls for this application are all optional.     *
    *   Defaults are provided in the code that follows.                 *
    *   The controls that may be provided take the form:                *
    *                                                                   *
    *   [UDSAMPLE]                                                      *
    *   ProtocolTimer=n                                                 *
    *   ValidDataTimeout=n                                              *
    *   RequestTimer=n                                                  *
    *                                                                   *
    *   ShowEvents=0/1                                                  *
    *   ShowSend=0/1                                                    *
    *   ShowReceive=0/1                                                 *
    *   ShowErrors=0/1                                                  *
    *                                                                   *
    *   The application name ([UDSAMPLE]) may be changed to suit your   *
    *   needs.  The keywords may be changed or others added.            *
    *                                                                   *
    \*******************************************************************/

    /* set window size as is appropriate */
    AdjustWindowSizeFromWinIni(hWndParent);

    /* Get driver name for lookups in WIN.INI */
    ProtGetDriverName(driverName, sizeof(driverName));

// DV - porting to FS2000
/*
#ifdef WIN32
    // set up string with server name and version number 
    strcpy (szServerIDstring, GetString(STRUSER+142)); // "Sample I/O Server" 
    L = strlen (szServerIDstring);
    sprintf (&szServerIDstring[L], GetString(STRUSER+145), // "- Version %s" 
                         SERVER_VERSION);
#endif
*/

#if (defined(USING_WW_COMMONUI) && defined(WIN32))
    /* set up to display common start-up message and splash screen */
    WWAnnounceStartup(COMMON_IOSERVER32ID, (LPSTR) szServerIDstring);
#else
// DV - changed for porting to FS2000.
/*
    // Log our own startup message and version number 
    strcpy (tmpBuf, GetString(STRUSER+144)); // "Startup" 
    L = strlen (tmpBuf);
    sprintf (&tmpBuf[L], GetString(STRUSER+145), // "- Version %s" 
                         SERVER_VERSION);
    debug (tmpBuf);
    // set up to display start-up splash screen with resource name WWStartup 

 #ifdef WIN32
    // select WWStartup splash screen instead of Common UI splash screen
    SetSplashScreenParams (FALSE, 0, COMMON_IOSERVER32ID, (LPSTR) szServerIDstring);
    // ensure common user interface has instance handle for application 
    Common_SetAppInstance (hInst);
 #endif

*/
	WWAnnounceStartup(COMMON_IOSERVER32ID,(LPSTR)"");
#endif

    /* Check the version number of WWCOMDLG.DLL to make sure it's high enough */
    if( !WWVerifyComDlgRev( GetAppName(),
                            WWCOMDLG_MAJOR_REV,
                            &piMajorRev,
                            &piMinorRev ) ) {
        debug("Wonderware Common Dialog - Version %d.%d is too old.", piMajorRev, piMinorRev );
        return (FALSE);
    }
    else {
        debug("Wonderware Common Dialog - Version %d.%d", piMajorRev, piMinorRev );
    }

#ifndef WIN32
    /* check size of symbol table entries */
    if (sizeof(SYMENT) != wSymsize) {
        debug("Symbol Table size error -- actual:%d  desired:%d",
              sizeof(SYMENT), wSymsize);
        ASSERT_ERROR;
        return (FALSE);
    }
#endif

    /* initialize last time count */
    lastTimer = GetCurrentTime ();

    /* Initialize the heap used for dynamic memory allocation */
    hHeap = wwHeap_Init();

    /* verify that linked lists are intact */
#ifdef ENABLE_CHAIN_CHECKS
    EnableChainCheck();
#endif

#ifdef USING_WW_LICENSE
    /* check whether this product has a license to run */
    if (!GetIOServerLicense (NULL, FALSE))
        return FALSE;
#endif

    /* Setup frequency at which we'd like to have ProtTimerEvent() called */
    /* Value is in milliseconds */
    nProtTimer      = GetProfileInt( driverName,
                                     NAME_PROTTIMER,
                                     DEFAULT_PROTTIMER);

    SysTimerSetupProtTimer((DWORD) nProtTimer); /* Start timer */


    /*
     * How much time should DDE wait for valid data from the driver
     * before NACKing REQUESTs for data?
     */
    GetProfileString( driverName,
                      NAME_VDTIMEOUT,
                      WW_DEFAULT_VDTIMEOUT,
                      tmpBuf,
                      sizeof(tmpBuf));

    dwValidDataTimeout = atol(tmpBuf);

    /*
     * Setup frequency at which we'd like to have valid data request
     * timeouts checked by the toolkit ( in milliseconds ).
     */
    nReqTimer       = GetProfileInt( driverName,
                                     NAME_RQTIMER,
                                     DEFAULT_RQTIMER);

    SysTimerSetupRequestTimer((DWORD) nReqTimer);

    /* Setup some control variables for the driver */

    WriteConfigInASCII = GetProfileInt( driverName,
                                     GetString(STRUSER + 120)
                                       /* "WriteConfigInASCII" */ ,
                                     WriteConfigInASCII);

    /* Initialize the debugging menu items */

    IndefWriteRetry = GetProfileInt( driverName,
                                     GetString(STRUSER + 112)
                                       /* "WriteRetryIndefinitely" */ ,
                                     IndefWriteRetry);

    ShowingEvents   = GetProfileInt( driverName,
                                     GetString(STRUSER + 71)
                                       /* "ShowEvents" */ ,
                                     FALSE);

    ShowingSend     = GetProfileInt( driverName,
                                     GetString(STRUSER + 72)
                                       /* "ShowSend" */ ,
                                     FALSE);

    ShowingReceive  = GetProfileInt( driverName,
                                     GetString(STRUSER + 73)
                                       /* "ShowReceive" */ ,
                                     FALSE);

    ShowingErrors   = GetProfileInt( driverName,
                                     GetString(STRUSER + 74)
                                       /* "ShowErrors" */ ,
                                     TRUE);

    Verbose         = GetProfileInt( driverName,
                                     GetString(STRUSER + 121)
                                       /* "Verbose" */ ,
                                     Verbose);

    DebugMenu       = GetProfileInt( driverName,
                                     GetString(STRUSER + 122)
                                       /* "DebugMenu" */ ,
                                     DebugMenu);

    /* check whether to display debug menu */
    hMenu = GetSystemMenu(hWndParent, FALSE);
    if (DebugMenu && (hMenu != (HANDLE) NULL)) {
        /* enabled, and menu handle is not null -- set up menu items */
        AppendMenu(hMenu, MF_SEPARATOR, 0xFFFF, (LPSTR)NULL);
        AppendMenu(hMenu, MF_STRING, MENU_SUSPEND,
                   GetString(STRUSER + 123) /* "Suspend Protocol" */);
        AppendMenu(hMenu, MF_STRING, MENU_RESUME,
                   GetString(STRUSER + 124) /* "Resume Protocol" */);
        AppendMenu(hMenu, MF_SEPARATOR, 0xFFFF, (LPSTR)NULL);
        wCheckMenu = (WORD)(ShowingEvents ? MF_CHECKED : MF_UNCHECKED);
        AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SHOWEVENTS,
                   GetString(STRUSER + 125) /* "Show Events" */);
        wCheckMenu = (WORD)(ShowingSend ? MF_CHECKED : MF_UNCHECKED);
        AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SHOWSEND,
                   GetString(STRUSER + 126) /* "Show Send" */);
        wCheckMenu = (WORD)(ShowingReceive ? MF_CHECKED : MF_UNCHECKED);
        AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SHOWRECEIVE,
                   GetString(STRUSER + 127) /* "Show Receive" */);
        wCheckMenu = (WORD)(ShowingErrors ? MF_CHECKED : MF_UNCHECKED);
        AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SHOWERROR,
                   GetString(STRUSER + 128) /* "Show Errors" */);
        wCheckMenu = (WORD)(Verbose ? MF_CHECKED : MF_UNCHECKED);
        AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_VERBOSE,
                   GetString(STRUSER + 129) /* "Verbose" */);
        if (IsSimulatorEnabled()) {
            wCheckMenu = (WORD)(SimulatorWritePaused ? MF_CHECKED : MF_UNCHECKED);
            AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SIMULATOR_WRITE,
                       GetString(STRUSER + 133) /* "Simulator Write Paused" */);
            wCheckMenu = (WORD)(SimulatorReadPaused ? MF_CHECKED : MF_UNCHECKED);
            AppendMenu(hMenu, (UINT) (wCheckMenu | MF_STRING), MENU_SIMULATOR_READ,
                       GetString(STRUSER + 134) /* "Simulator Read Paused" */);
        }
        AppendMenu(hMenu, MF_SEPARATOR, 0xFFFF, (LPSTR)NULL);
        AppendMenu(hMenu, MF_STRING, MENU_DUMP,
                   GetString(STRUSER + 130) /* "&Dump" */);
        AppendMenu(hMenu, MF_STRING, MENU_DUMP_SCREEN,
                   GetString(STRUSER + 131) /* "Dum&p Screen" */);
        AppendMenu(hMenu, MF_STRING, MENU_DEBUGGER_CLS,
                   GetString(STRUSER + 132) /* "Clear Screen" */);
        DrawMenuBar(hWndParent);
    }

    /* initialize list of ports to empty */
    InitializeChain (&PortList);

    /* initialize the driver state */
    UdprotResume();     /* Initially the driver is active.     */
                        /* It can be suspended by a menu item. */

    /* Initialize the configuration handler */
    if (!ConfigureInit()) {
        /* could not read configuration file or perform configuration */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影网1区2区| 成人av电影在线| 日本美女一区二区三区| 国产乱子伦一区二区三区国色天香| 欧美日韩亚洲不卡| 不卡一区中文字幕| 日本一区二区三区视频视频| 亚洲一区免费在线观看| 91国产视频在线观看| 日本一区二区三区视频视频| 成人激情免费视频| 综合激情成人伊人| 亚洲精品国久久99热| 国产成人精品免费一区二区| 中文字幕欧美日本乱码一线二线| 一区二区三区国产精品| 欧美精品自拍偷拍| 久久精品久久久精品美女| 久久久久久久久97黄色工厂| 亚洲综合激情小说| 本田岬高潮一区二区三区| 亚洲黄色免费电影| 色综合天天综合在线视频| 亚洲欧美自拍偷拍| 日本韩国一区二区三区| 日韩精品久久久久久| 日韩一区二区免费高清| 国产成人综合亚洲网站| 成人丝袜高跟foot| 91精品国模一区二区三区| 亚洲美女少妇撒尿| 国产成人免费视频一区| www成人在线观看| 国产一区二区三区在线观看免费视频| 欧美一区二区视频在线观看2022| 午夜精品久久久久久不卡8050| 欧美日韩午夜精品| 午夜伊人狠狠久久| 在线不卡中文字幕| 美女国产一区二区| 久久久一区二区三区捆绑**| 国产精品一区二区在线观看网站| 国产亚洲一区二区在线观看| 国产精品一区二区不卡| 国产精品无遮挡| 色狠狠桃花综合| 日韩国产在线观看一区| 欧美一级搡bbbb搡bbbb| 国产在线视频一区二区三区| 国产精品国模大尺度视频| 欧美在线看片a免费观看| 午夜精品123| 精品久久人人做人人爱| 波多野结衣中文字幕一区 | 视频一区视频二区在线观看| 欧美日韩高清一区二区| 九九热在线视频观看这里只有精品| 日韩精品在线看片z| 国产成人亚洲精品狼色在线| 成人欧美一区二区三区视频网页 | 91在线观看免费视频| 亚洲五月六月丁香激情| 日韩精品一区国产麻豆| 国产69精品久久777的优势| 亚洲午夜免费福利视频| 欧美成人伊人久久综合网| caoporn国产精品| 日韩高清电影一区| 亚洲色图制服丝袜| 欧美一区二区在线免费播放| 成人动漫精品一区二区| 日韩成人精品在线观看| 国产精品午夜免费| 日韩一级完整毛片| 99久久精品国产毛片| 久久国内精品自在自线400部| 中文字幕在线一区免费| 日韩精品影音先锋| 在线精品视频小说1| 国产麻豆成人传媒免费观看| 日日夜夜免费精品| 日韩美女视频一区二区 | 粉嫩高潮美女一区二区三区| 亚洲成人av一区二区三区| 欧美激情自拍偷拍| 精品久久人人做人人爽| 欧美精品 日韩| 91香蕉视频在线| 成人教育av在线| 激情综合色播激情啊| 亚洲二区在线观看| 中文字幕一区三区| 久久久综合九色合综国产精品| 69p69国产精品| 欧美最新大片在线看 | 欧美大片日本大片免费观看| 在线观看国产日韩| 91蜜桃婷婷狠狠久久综合9色| 国产麻豆欧美日韩一区| 精品一区中文字幕| 美女国产一区二区三区| 日本va欧美va瓶| 日韩电影在线观看一区| 亚洲电影第三页| 午夜精品影院在线观看| 亚洲综合区在线| 一区二区三区精品视频在线| 亚洲精品国产无天堂网2021| 中文字幕一区二区三区不卡| 国产女主播一区| 国产日韩欧美a| 国产嫩草影院久久久久| 日本一区二区久久| 国产精品另类一区| 亚洲人精品午夜| 亚洲综合色区另类av| 亚洲国产乱码最新视频 | 成人的网站免费观看| 成人免费毛片a| 91在线精品一区二区| 一本色道综合亚洲| 欧美日韩精品三区| 日韩欧美黄色影院| 精品第一国产综合精品aⅴ| 久久综合成人精品亚洲另类欧美 | 制服.丝袜.亚洲.另类.中文| 91精品国产综合久久久久久久久久 | 精品国产sm最大网站免费看| 欧美videofree性高清杂交| 久久蜜臀精品av| 国产精品久久一级| 亚洲一区中文在线| 麻豆视频观看网址久久| 粉嫩aⅴ一区二区三区四区| 色婷婷激情一区二区三区| 欧美日免费三级在线| 欧美mv和日韩mv的网站| 久久精品人人做| 亚洲综合免费观看高清在线观看 | 一区二区不卡在线播放| 日本成人在线一区| 国产.欧美.日韩| 欧美手机在线视频| 国产亚洲美州欧州综合国| 亚洲色图在线视频| 麻豆视频观看网址久久| 93久久精品日日躁夜夜躁欧美| 欧美军同video69gay| 久久九九久久九九| 亚洲成人激情自拍| 国产高清精品网站| 欧美欧美午夜aⅴ在线观看| 亚洲国产精品国自产拍av| 亚洲v精品v日韩v欧美v专区| 国产精品正在播放| 欧美丰满嫩嫩电影| 中文字幕在线一区二区三区| 美女一区二区三区| 99国内精品久久| 久久久亚洲精华液精华液精华液 | 美美哒免费高清在线观看视频一区二区| 国产一区二区免费看| 欧美视频一区在线观看| 欧美国产激情二区三区| 日韩综合一区二区| 91同城在线观看| 精品久久久久久亚洲综合网| 亚洲福利一区二区| 色婷婷香蕉在线一区二区| 欧美xfplay| 日韩中文字幕1| 色拍拍在线精品视频8848| 国产精品视频免费| 精品一区二区三区免费| 99久久精品国产毛片| 日韩电影在线一区| 欧美巨大另类极品videosbest| 亚洲桃色在线一区| 91麻豆精品久久久久蜜臀| 一区在线中文字幕| 色老汉av一区二区三区| 午夜电影一区二区三区| 亚洲韩国精品一区| 国产成人精品综合在线观看 | 欧美电影一区二区三区| 国产一本一道久久香蕉| 成人激情小说乱人伦| 视频一区中文字幕国产| 国产欧美久久久精品影院| 欧美精品乱人伦久久久久久| 欧美性大战久久久久久久| 久久亚洲综合色| 日韩丝袜美女视频| 欧美不卡一区二区三区四区| 国内精品视频一区二区三区八戒| 亚洲三级小视频| 亚洲激情男女视频| 亚洲手机成人高清视频| 精品va天堂亚洲国产| 成人国产精品免费网站|