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

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

?? udmain.c

?? 工業(yè)組態(tài)軟件modbus驅動源代碼, 包括幫助文件.共享.
?? C
?? 第 1 頁 / 共 4 頁
字號:
        return (FALSE);
    }

    /* indicate success */
    return (TRUE);
} /* ProtInit */

/***********************************************************************/
/** Close protocol.
    Called when the driver is shut down either individually or as the
    result of exiting Windows.  Should cleanup memory allocations and
    MUST close any comm ports that are open. **/

VOID
WINAPI
ProtClose(void)
{
#ifdef DEBUG_CALL_TRAFFIC
    if (Verbose)
        debug("ProtClose()");
#endif

    /* deactivate and delete all ports in the list */
    DeleteChain (&PortList, DeletePortItem);

    /* save size, position of window for next time server is run */
    WriteWindowSizeToWinIni(hWndParent);

    /* release heap */
    wwHeap_Release( hHeap );
} /* ProtClose */

/***********************************************************************/
/** Process Windows commands and messages **/

long
WINAPI
ProtDefWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT     ps;
    HDC             hDC;
    HBRUSH          hbr;
    HBRUSH          hbrOld;
    LPPORT          lpPort;
    CHAINSCANNER    port_scanner;

    /* handle Windows message according to type */
    switch (message) {

    case WM_SYSCOMMAND:
        /* handle Windows system command according to type */
        switch (wParam) {
        case MENU_SUSPEND:
            /* suspend operation of protocol */
            UdprotSuspend();
            break;

        case MENU_RESUME:
            /* resume operation of protocol */
            UdprotResume();
            break;

        case MENU_SIMULATOR_WRITE:
            /* toggle enablement flag for PLC simulator */
            SimulatorWritePaused = !SimulatorWritePaused;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SIMULATOR_WRITE,
                      (UINT) (SimulatorWritePaused ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_SIMULATOR_READ:
            /* toggle enablement flag for PLC simulator */
            SimulatorReadPaused = !SimulatorReadPaused;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SIMULATOR_READ,
                      (UINT) (SimulatorReadPaused ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_VERBOSE:
            /* toggle Verbose flag for logger */
            Verbose = !Verbose;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_VERBOSE,
                      (UINT) (Verbose ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_SHOWEVENTS:
            /* toggle showing events flag for logger */
            ShowingEvents = !ShowingEvents;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SHOWEVENTS,
                      (UINT) (ShowingEvents ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_SHOWSEND:
            /* toggle whether logger shows messages being sent */
            ShowingSend = !ShowingSend;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SHOWSEND,
                      (UINT) (ShowingSend ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_SHOWRECEIVE:
            /* toggle whether logger shows messages being received */
            ShowingReceive = !ShowingReceive;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SHOWRECEIVE,
                      (UINT) (ShowingReceive ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_SHOWERROR:
            /* toggle whether logger shows errors */
            ShowingErrors = !ShowingErrors;
            CheckMenuItem(GetSystemMenu(hWndParent, FALSE),
                      MENU_SHOWERROR,
                      (UINT) (ShowingErrors ? MF_CHECKED : MF_UNCHECKED));
            break;

        case MENU_DUMP:
            /* dump information to logger about each port */
            lpPort = (LPPORT) FindFirstItem (&PortList, SCAN_FROM_HEAD,
                                             NULL, NULL, &port_scanner);
            while (lpPort != (LPPORT) NULL) {
                UdprotDumpPort(lpPort);
                lpPort = (LPPORT) FindNextItem (&port_scanner);
            }
            break;

        case MENU_DUMP_SCREEN:
            /* force update of client display */
            DumpScreen();
            break;

        default:
            /* pass command on for processing */
            return (DefWindowProc(hWnd, message, wParam, lParam));
        }
        break;

    case WM_COMMAND:
        /* handle windows command according to type */
        switch (LOWORD(wParam)) {

        case MENU_HELP_INDEX:
            /* provide help index */
            break;

        case MENU_HELP_ON_HELP:
            /* provide help on help */
            break;

        case MENU_HELP_ABOUT:
            /* display About screen */
            UdDisplayAbout( hWnd );
            break;

        case MENU_CONFIG_PORT:
            /* configure serial ComPort I/O channel */
            ConfigureComPort(hWnd);
            break;

        case MENU_CONFIG_BOARD:
            /* configure adapter board I/O channel */
            ConfigureBoard(hWnd);
            break;

        case MENU_CONFIG_TOPIC:
            /* configure topic */
            ConfigureTopic(hWnd);
            break;

        case MENU_CONFIG_SERVER:
            /* configure general server settings */
            ServerSettings (hWnd);
            break;
        }
        break;

    case WM_USER + 10:
        if (!ProtocolSuspended)
        {
            /* ensure timer count is updated */
            tickChange = 1L;
            lastTimer = GetCurrentTime ();
            /* scan through ports, handle protocol */
            lpPort = (LPPORT) FindFirstItem (&PortList, SCAN_FROM_HEAD,
                                             NULL, NULL, &port_scanner);
            while (lpPort != (LPPORT) NULL) {
                UdprotDoProtocol(lpPort);
                lpPort = (LPPORT) FindNextItem (&port_scanner);
            }
        }
        break;

    case WM_PAINT:
        /* paint the window */
        /* begin paint process, get device context */
        BeginPaint(hWnd, (LPPAINTSTRUCT) &ps);
        hDC = ps.hdc;
        /* check erase flag */
        if (ps.fErase) {
            /* clear window before repainting */
            hbr = CreateSolidBrush(0x00FFFFFFL /* white */ );
            UnrealizeObject(hbr);
            hbrOld = (HBRUSH) SelectObject(hDC, (HANDLE) hbr);
            FillRect(hDC, &ps.rcPaint, hbr);
            SelectObject(hDC, (HANDLE) hbrOld);
            DeleteObject((HANDLE) hbr);
        }

        /*
         * Use the client area to display information about the state
         * of the protocol.
         */

        /* initialize line count */
        yDebug = 0;
        /* dump information to screen about each port */
        lpPort = (LPPORT) FindFirstItem (&PortList, SCAN_FROM_HEAD,
                                         NULL, NULL, &port_scanner);
        while (lpPort != (LPPORT) NULL) {
            XUdprotDumpPort(hDC, lpPort);
            lpPort = (LPPORT) FindNextItem (&port_scanner);
        }
        /* terminate paint process */
        EndPaint(hWnd, (LPPAINTSTRUCT) &ps);
        break;

    default:
        /* pass message on for processing */
        return (DefWindowProc(hWnd, message, wParam, lParam));
    }

    return (0L);
} /* ProtDefWindowProc */

/***********************************************************************/
/** Return the setting for valid data timeout **/

DWORD
WINAPI
ProtGetValidDataTimeout(void)
{
#ifdef DEBUG_CALL_TRAFFIC
    if (Verbose)
        debug("ProtGetValidDataTimeout()");
#endif
    return (dwValidDataTimeout);
} /* ProtGetValidDataTimeout */

/***********************************************************************/
/** Copy name of driver to string at indicated location **/

BOOL
WINAPI
ProtGetDriverName(LPSTR lpszName,
                  int   nMaxLength)
{
    /*
     * WARNING: No calls to debug()... debug() calls ProtGetDriverName(),
     * therefore ProtGetDriverName() cannot call debug().
     */
    int  len;
    PSTR pStr;

    WWSetAffinityToFirstCPU(); // log server to the first CPU

    if (nMaxLength > 0) {
        /* get string and length */
        pStr = GetString(STRUSER + 76);   /* "UDSAMPLE" */
        len = strlen(pStr);
        /* ensure string will fit in destination buffer */
        if (len > nMaxLength-1)
            len = nMaxLength-1;
        /* copy string to destination, terminate it */
        f_lstrncpy(lpszName, pStr, len);
        lpszName[len] = '\0';
    }
#ifdef WIN32
    GetServerNameExtension();
#endif
    return (TRUE);
} /* ProtGetDriverName */

/***********************************************************************/
/** Process timer event.
    Perform the tasks necessary to obtain the requested data.
    This function is called periodically to give the driver the
    opportunity to execute the protocol.
    The period is set up in ProtInit() above. **/

VOID
WINAPI
ProtTimerEvent(DWORD dwMsecSinceLastCall)
{
    LPPORT          lpPort;
    CHAINSCANNER    port_scanner;

    /* Due to the nature of Windows, the actual time between calls to
     * this function may vary somewhat.
     * tickChange indicates the actual time since the last time.
     */

    tickChange = (WORD) dwMsecSinceLastCall;
    lastTimer = GetCurrentTime ();

    /*
     * Being able to suspend the protocol is not mandatory, but it may be
     * helpful during debugging.
     */

    /* nothing to do if protocol is suspended */
    if (!ProtocolSuspended) {

#ifdef DEBUG
        if (Verbose)
        {
            hDC = GetDC (hWndParent);
            TextOut (hDC, 4, 0, "\002", 1);
            ReleaseDC (hWndParent, hDC);
        }
#endif

        /* scan through ports, handle protocol */
        lpPort = (LPPORT) FindFirstItem (&PortList, SCAN_FROM_HEAD,
                                         NULL, NULL, &port_scanner);
        while (lpPort != (LPPORT) NULL) {
            UdprotDoProtocol(lpPort);
            lpPort = (LPPORT) FindNextItem (&port_scanner);
        }

#ifdef DEBUG
        if (Verbose)
        {
            hDC = GetDC (hWndParent);
            TextOut (hDC, 4, 0, " ", 1);
            ReleaseDC (hWndParent, hDC);
        }
#endif

    }
} /* ProtTimerEvent */

/***********************************************************************/
/** Allocate logical device.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品久久嫩草网站秘色| 日韩欧美国产综合在线一区二区三区| 色婷婷av久久久久久久| 欧美日韩视频在线观看一区二区三区 | 91在线观看视频| 欧美亚洲国产bt| 欧美成人精精品一区二区频| 国产精品美日韩| 亚洲电影一级黄| 国产在线精品不卡| 色偷偷一区二区三区| 欧美一级xxx| 国产精品女主播在线观看| 亚洲成人午夜影院| 夫妻av一区二区| 欧美一区二区三区喷汁尤物| 日本一区二区三区四区 | 91精品国产综合久久小美女| 国产日本亚洲高清| 亚洲电影第三页| 国产成人免费av在线| 777奇米成人网| 国产精品久久免费看| 日本不卡视频在线| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美性受xxxx黑人xyx| 国产欧美精品一区二区三区四区| 亚洲国产一区视频| 国产成人av电影在线观看| 欧美日本高清视频在线观看| 国产精品萝li| 久久国产精品区| 91电影在线观看| 欧美国产日韩精品免费观看| 蜜臀久久99精品久久久画质超高清| 91麻豆国产福利在线观看| 精品处破学生在线二十三| 亚洲高清久久久| 99久久综合色| 国产性做久久久久久| 免费精品视频在线| 欧美日韩精品是欧美日韩精品| 亚洲欧洲国产日韩| 国产精品18久久久久久久久 | 日韩高清不卡一区二区| 99精品视频免费在线观看| 精品国产乱码久久久久久图片| 亚洲国产精品麻豆| 91成人在线精品| 中文字幕一区二区三中文字幕| 国精产品一区一区三区mba桃花 | 精品午夜久久福利影院| 欧美男生操女生| 亚洲一区在线观看免费| 99久久国产综合精品女不卡 | 91亚洲精华国产精华精华液| 国产欧美一区二区在线| 国产一区二区三区香蕉| 精品美女一区二区| 日韩国产成人精品| 91麻豆精品国产综合久久久久久 | 欧美国产激情二区三区| 精品中文字幕一区二区小辣椒| 6080午夜不卡| 亚洲r级在线视频| 欧美日韩午夜在线| 午夜免费欧美电影| 欧美高清性hdvideosex| 天堂精品中文字幕在线| 欧美高清性hdvideosex| 日韩av电影天堂| 日韩欧美国产麻豆| 极品尤物av久久免费看| 精品国产精品网麻豆系列| 蜜臀久久99精品久久久画质超高清 | 1024亚洲合集| 91毛片在线观看| 一区二区三区高清| 欧洲激情一区二区| 日韩专区中文字幕一区二区| 91精品国产综合久久久蜜臀粉嫩 | www久久精品| 国模大尺度一区二区三区| 国产亚洲一区二区三区| 成人一区二区三区中文字幕| 亚洲国产激情av| 色噜噜狠狠一区二区三区果冻| 一二三四社区欧美黄| 欧美日韩精品福利| 麻豆91精品91久久久的内涵| 久久这里只有精品视频网| 粉嫩高潮美女一区二区三区| 国产精品国产三级国产aⅴ入口 | 日韩二区三区四区| 26uuu亚洲综合色欧美| 国产ts人妖一区二区| 国产精品网站在线观看| 91在线观看污| 午夜视频在线观看一区| 精品99久久久久久| 北条麻妃一区二区三区| 亚洲综合久久久| 在线播放亚洲一区| 国产精品一区二区三区乱码| 国产精品不卡在线| 欧美色窝79yyyycom| 美女精品自拍一二三四| 国产精品成人一区二区三区夜夜夜 | 国产欧美一区二区三区在线看蜜臀| 99这里只有精品| 午夜欧美电影在线观看| 国产三级三级三级精品8ⅰ区| 一本色道亚洲精品aⅴ| 另类的小说在线视频另类成人小视频在线| 久久品道一品道久久精品| 一本色道综合亚洲| 另类中文字幕网| 亚洲日韩欧美一区二区在线| 6080日韩午夜伦伦午夜伦| 成熟亚洲日本毛茸茸凸凹| 午夜精品一区在线观看| 国产清纯白嫩初高生在线观看91| 欧美专区在线观看一区| 黄色小说综合网站| 成人黄色大片在线观看| 五月婷婷久久综合| 中文字幕欧美国产| 91精品在线观看入口| 成人av网址在线| 强制捆绑调教一区二区| 日韩美女视频19| 日韩精品专区在线影院观看| 在线亚洲一区二区| 国产精品伊人色| 首页国产丝袜综合| 综合久久给合久久狠狠狠97色| 欧美xxxxx牲另类人与| 欧美自拍偷拍一区| 成人ar影院免费观看视频| 美女诱惑一区二区| 亚洲综合免费观看高清完整版 | www.欧美日韩| 九九在线精品视频| 亚洲一区二三区| 中文字幕一区二区视频| 久久久影视传媒| 911精品国产一区二区在线| 99久久99精品久久久久久| 久久电影网电视剧免费观看| 亚洲在线观看免费| 中文字幕在线观看一区二区| 欧美v国产在线一区二区三区| 色综合久久99| 白白色亚洲国产精品| 久久超碰97中文字幕| 亚州成人在线电影| 亚洲免费在线播放| 国产精品视频观看| 久久久777精品电影网影网| 日韩丝袜美女视频| 欧美妇女性影城| 欧美日韩视频在线观看一区二区三区 | 亚洲精品在线观看视频| 91.麻豆视频| 欧美日韩精品一区二区天天拍小说| 99久久久国产精品| aa级大片欧美| 丁香亚洲综合激情啪啪综合| 国产又黄又大久久| 久久精品国产免费看久久精品| 日韩不卡一区二区| 亚洲成人免费看| 亚洲bt欧美bt精品777| 亚洲地区一二三色| 五月综合激情婷婷六月色窝| 亚洲一区日韩精品中文字幕| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品久久二区二区| 国产精品国产三级国产普通话三级| 国产三级精品视频| 欧美激情综合在线| 中文字幕第一区第二区| 国产精品久久久久影院色老大| 日本一区二区高清| 中文字幕一区二区三区在线不卡| 国产精品久久久久婷婷| 综合欧美一区二区三区| 一区二区三区欧美日| 亚洲第一综合色| 日本成人在线网站| 国产一区福利在线| 国产91对白在线观看九色| 不卡区在线中文字幕| 91福利在线看| 91精品国产免费| 久久这里只有精品视频网| 国产精品情趣视频| 亚洲乱码精品一二三四区日韩在线| 一区二区三区高清| 秋霞av亚洲一区二区三|