亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲免费资源在线播放| 99国产精品久久久久久久久久 | 欧美日韩在线播放三区四区| 欧美一区二区美女| 中文字幕在线视频一区| 久久国产免费看| 欧美在线色视频| 一区二区中文视频| 国产传媒欧美日韩成人| 91精品国产综合久久婷婷香蕉| 国产精品国产三级国产三级人妇| 日韩高清不卡一区| 色视频一区二区| 中文字幕av不卡| 国产在线观看一区二区| 日韩欧美你懂的| 性欧美疯狂xxxxbbbb| 97精品国产97久久久久久久久久久久| xnxx国产精品| 美女视频黄a大片欧美| 欧美日韩免费一区二区三区| 亚洲女子a中天字幕| 成人av网址在线| 国产丝袜欧美中文另类| 国产精品一区专区| 精品国偷自产国产一区| 久久激情五月婷婷| 日韩三级av在线播放| 日韩电影在线观看电影| 欧美日韩大陆在线| 亚洲线精品一区二区三区八戒| 色噜噜狠狠成人网p站| 亚洲色图清纯唯美| 91福利国产成人精品照片| 亚洲天堂久久久久久久| 91老师片黄在线观看| 亚洲日本va在线观看| 99re这里都是精品| 亚洲欧美另类综合偷拍| 成人av网站在线| 国产精品久久午夜| av福利精品导航| 亚洲精品国产无天堂网2021 | 欧美一级片免费看| 青青草视频一区| 精品sm在线观看| 国产·精品毛片| 中文字幕在线不卡一区二区三区| 色8久久精品久久久久久蜜| 亚洲成a人v欧美综合天堂 | 91免费小视频| 亚洲综合视频在线观看| 欧美精品v国产精品v日韩精品 | 国产精品资源在线观看| 久久精品免视看| 色综合天天综合在线视频| 一区二区三区中文免费| 欧美精品一二三| 国产成人午夜99999| 国产精品久久久久久久久久免费看 | 在线播放国产精品二区一二区四区| 午夜视频一区二区| 精品99一区二区三区| 成人av资源在线观看| 首页综合国产亚洲丝袜| 久久无码av三级| 欧美性三三影院| 国产一区二区三区四| 亚洲与欧洲av电影| 26uuu亚洲综合色| 色婷婷综合久久久久中文一区二区 | 欧美亚洲综合网| 久久精品99国产精品日本| 亚洲欧洲制服丝袜| 精品少妇一区二区三区在线播放| 99re这里都是精品| 九九**精品视频免费播放| 日韩一区欧美一区| 精品欧美久久久| 欧美性感一类影片在线播放| 久久不见久久见免费视频1| 亚洲三级在线免费观看| 久久蜜桃一区二区| 欧美日韩三级一区二区| 成人精品高清在线| 精品在线免费视频| 亚洲一区二区三区四区在线观看| 久久久蜜桃精品| 欧美二区乱c少妇| 色先锋资源久久综合| 成人免费的视频| 久久成人av少妇免费| 丝袜亚洲另类丝袜在线| 亚洲欧美欧美一区二区三区| 国产女人aaa级久久久级| 日韩色在线观看| 欧美三级韩国三级日本一级| 91在线观看免费视频| 国产精品一区免费在线观看| 日本不卡视频在线观看| 亚洲第一福利一区| 亚洲精选在线视频| 亚洲天堂免费在线观看视频| 国产精品久久久久四虎| 亚洲国产精品成人综合色在线婷婷| 欧美一区二区三区视频在线| 欧美日韩国产欧美日美国产精品| 色综合一区二区三区| 91热门视频在线观看| 成人免费不卡视频| av在线不卡网| 色综合咪咪久久| 色综合一区二区三区| 一本大道综合伊人精品热热| 99国产精品国产精品毛片| 97精品电影院| 91免费在线视频观看| 色诱亚洲精品久久久久久| 91蝌蚪porny| 欧美性videosxxxxx| 欧美亚洲禁片免费| 制服.丝袜.亚洲.另类.中文| 3751色影院一区二区三区| 欧美一区二区视频在线观看2022| 91麻豆精品国产91久久久资源速度| 91精品啪在线观看国产60岁| 欧美一个色资源| 久久品道一品道久久精品| 国产精品免费丝袜| 亚洲欧美日韩久久| 天堂久久一区二区三区| 久久精品国产999大香线蕉| 国产精品综合一区二区三区| 不卡视频免费播放| 欧美亚洲国产一区二区三区| 欧美一区二区三区婷婷月色| 久久久国产综合精品女国产盗摄| 国产精品萝li| 午夜伊人狠狠久久| 国产一区二区伦理| 成人国产精品视频| 欧美日韩在线三区| 久久亚洲一级片| 亚洲激情网站免费观看| 日本欧洲一区二区| 国产麻豆日韩欧美久久| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲人精品一区| 日韩成人免费看| 顶级嫩模精品视频在线看| 日本韩国欧美在线| 精品日产卡一卡二卡麻豆| 中文字幕亚洲综合久久菠萝蜜| 亚洲成av人片一区二区梦乃| 国产一区二区中文字幕| 色播五月激情综合网| 日本不卡中文字幕| 老色鬼精品视频在线观看播放| 精品一区二区免费视频| 97国产一区二区| 日韩欧美一级片| 亚洲乱码国产乱码精品精的特点 | 午夜激情一区二区三区| 国产99精品国产| 欧美日韩精品电影| 国产欧美1区2区3区| 日韩成人免费看| 国产精品91xxx| 欧美日韩的一区二区| 国产精品久久久久久久久久免费看 | 精品成人免费观看| 日日夜夜免费精品视频| 国产一区二区伦理| 欧美日韩高清一区二区| 亚洲欧美日韩一区二区| 国产精品1区2区| 精品美女在线播放| 日韩成人午夜电影| 欧美日韩视频在线第一区 | 一区二区三区四区不卡在线 | 日本中文字幕一区二区视频| 99国产精品久久久久久久久久| 久久久精品影视| 黄色日韩网站视频| 日韩一区二区三| 日韩精品欧美精品| 欧美日韩久久一区| 亚洲制服欧美中文字幕中文字幕| 99久久精品国产精品久久| 国产亚洲欧美日韩俺去了| 久久国产综合精品| 欧美成人性战久久| 奇米精品一区二区三区四区| 欧美日韩一区二区在线视频| 亚洲精品国产精华液| 94色蜜桃网一区二区三区| 国产精品热久久久久夜色精品三区| 国产福利视频一区二区三区| 国产三级久久久| 99久久精品国产毛片|