⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdaddma.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 5 页
字号:
                     gwCondList = 0;
                     EnableWindow(GetDlgItem(hDlg, IDC_CBALLCOND), TRUE);
                     EnableWindow(GetDlgItem(hDlg, IDC_CONDLIST), FALSE);
                     break;
                case IDC_INDCOND :
                     gwCondList = 1;
                     EnableWindow(GetDlgItem(hDlg, IDC_CBALLCOND), FALSE);
                     EnableWindow(GetDlgItem(hDlg, IDC_CONDLIST), TRUE);
                     break;
                case IDC_CBALLCOND :
                     if (HIWORD(wParam) == CBN_KILLFOCUS)
                     {
                        i = (int)SendDlgItemMessage(hDlg, IDC_CBALLCOND,
                                  CB_GETCURSEL, 0, 0) ;
                        if (i != CB_ERR)
                           gwCondition = i;
                     }
                     return TRUE;
                case IDC_ALLLEVEL :
                     gwLevelList = 0;
                     EnableWindow(GetDlgItem(hDlg, IDC_ALLHIGH), TRUE);
                     EnableWindow(GetDlgItem(hDlg, IDC_ALLLOW), TRUE);
                     EnableWindow(GetDlgItem(hDlg, IDC_LEVELLIST), FALSE);
                     break;
                case IDC_INDLEVEL :
                     gwLevelList = 1;
                     EnableWindow(GetDlgItem(hDlg, IDC_ALLHIGH), FALSE);
                     EnableWindow(GetDlgItem(hDlg, IDC_ALLLOW), FALSE);
                     EnableWindow(GetDlgItem(hDlg, IDC_LEVELLIST), TRUE);
                     break;
                case IDC_ALLHIGH :
                     if (HIWORD(wParam) == EN_KILLFOCUS)
                     {
                        if(SendDlgItemMessage(hDlg, IDC_ALLHIGH,
                                  EM_GETMODIFY, 0, 0))
                        {
                           SendDlgItemMessage(hDlg, IDC_ALLHIGH,
                                  WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                           fHiLevel = (float)atof(szBuffer);
                           SendDlgItemMessage(hDlg, IDC_ALLHIGH,
                                  EM_SETMODIFY, FALSE, 0) ;
                        }
                     }
                     return TRUE;
                case IDC_ALLLOW :
                     if (HIWORD(wParam) == EN_KILLFOCUS)
                     {
                        if(SendDlgItemMessage(hDlg, IDC_ALLLOW,
                                  EM_GETMODIFY, 0, 0))
                        {
                           SendDlgItemMessage(hDlg, IDC_ALLLOW,
                                  WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                           fLoLevel = (float)atof(szBuffer);
                           SendDlgItemMessage(hDlg, IDC_ALLLOW,
                                  EM_SETMODIFY, FALSE, 0) ;
                        }
                     }
                     return TRUE;
                case IDC_INTTRIG :
                     EnableWindow(GetDlgItem(hDlg, IDC_PACER), TRUE);
                     gwExtTrig = 0;
                     break;
                case IDC_EXTTRIG :
                     EnableWindow(GetDlgItem(hDlg, IDC_PACER), FALSE);
                     gwExtTrig = 1;
                     break;
                case IDC_CYCLIC :
                     gwCyclicMode = 1;
                     break;
                case IDC_NONCYCLIC :
                     gwCyclicMode = 0;
                     break;
                case IDC_DATAUSHORT :
                    gwDataType = 0;
                    break;
                case IDC_DATAFLOAT :
                    gwDataType = 1;
                    break;
                case IDC_EVTENABLE :
                    gwEvtFlag = 1;
                    break;
                case IDC_EVTDISABLE :
                    gwEvtFlag = 0;
                    break;
                case IDC_BUFSINGLE :
                     gwBufferMode = 0;
                     break;
                case IDC_BUFDOUBLE :
                     gwBufferMode = 1;
                     break;
             }
             break;
    }
    return FALSE ;
}

/***************************************************************************
    FUNCTION: ShowDataDlgProc(HWND, unsigned, WPARAM, LPARAM)

    PURPOSE:  Processes dialog box messages for acquired data
****************************************************************************/

BOOL FTYPE ShowDataDlgProc(hDlg, message, wParam, lParam)
HWND hDlg;                                /* window handle                 */
unsigned message;                         /* type of message               */
WPARAM wParam;                            /* additional information        */
LPARAM lParam;                            /* additional information        */
{
   ULONG i;
   LPVOID temp;

    switch (message)
    {
        case WM_INITDIALOG :

            if (gwDataType == 0)
                temp = (USHORT far *)hUserA;
            else
                temp = (FLOAT far *)hUserA;

            for(i = gdwStartPt; i <= gdwStopPt; ++i)
            {

                if (gwDataType == 0)
                    sprintf(szBuffer, "BufA[%ld] = %4x",i, ((USHORT far *)temp)[i]);
                else
                    sprintf(szBuffer, "BufA[%ld] = %10.6f", i, ((FLOAT far *)temp)[i]);

                if(SendDlgItemMessage(hDlg, IDC_DATALIST, LB_ADDSTRING, 0,
                    (LPARAM)(LPSTR)szBuffer) == LB_ERRSPACE)
                {   MessageBox(hWnd,(LPCSTR)"Not Enough Memory",
                        "Display Data",MB_OK);
                    return TRUE;
                }
            }

            if (gwDataType == 0)
                temp = (USHORT far *)hUserB;
            else
                temp = (FLOAT far *)hUserB;

            for(i = gdwStartPt; i <= gdwStopPt; ++i)
            {

                if (gwDataType == 0)
                    sprintf(szBuffer, "BufB[%ld] = %4x",i, ((USHORT far *)temp)[i]);
                else
                    sprintf(szBuffer, "BufB[%ld] = %10.6f", i, ((FLOAT far *)temp)[i]);

                if(SendDlgItemMessage(hDlg, IDC_DATALIST, LB_ADDSTRING, 0,
                    (LPARAM)(LPSTR)szBuffer) == LB_ERRSPACE)
                {   MessageBox(hWnd,(LPCSTR)"Not Enough Memory",
                        "Display Data",MB_OK);
                    return TRUE;
                }
            }

             return TRUE;

        case WM_COMMAND :
             switch (LOWORD(wParam))
             {
                case IDOK :
                case IDCANCEL :
                     EndDialog(hDlg, 0);
                     return TRUE;

             }
             break;
    }
    return FALSE ;
}

/***************************************************************************
    FUNCTION: DisplayDlgProc(HWND, unsigned, WPARAM, LPARAM)

    PURPOSE:  Processes dialog box messages for display range
****************************************************************************/

BOOL FTYPE DisplayDlgProc(hDlg, message, wParam, lParam)
HWND hDlg;                               /* window handle                   */
unsigned message;                        /* type of message                 */
WPARAM wParam;                           /* additional information          */
LPARAM lParam;                           /* additional information          */
{
    switch (message)
    {
        case WM_INITDIALOG :

             // Initialize Start Point
             ultoa(gdwStartPt, szBuffer, 10);

             SendDlgItemMessage(hDlg, IDC_ESTAPT, EM_REPLACESEL, 0,
                             (LPARAM)((LPSTR)szBuffer));

             // Initialize Stop Point
             ultoa(gdwStopPt, szBuffer, 10);

             SendDlgItemMessage(hDlg, IDC_ESTOPT, EM_REPLACESEL, 0,
                             (LPARAM)((LPSTR)szBuffer));

             return TRUE;

        case WM_COMMAND :
             switch (LOWORD(wParam))
             {
                case IDOK :
                case IDCANCEL :
                     EndDialog(hDlg, 0);
                     return TRUE;

                case IDC_ESTAPT :

                     if (HIWORD(wParam) == EN_KILLFOCUS)
                     {
                        if(SendDlgItemMessage(hDlg, IDC_ESTAPT,
                                  EM_GETMODIFY, 0, 0))
                        {
                           SendDlgItemMessage(hDlg, IDC_ESTAPT,
                                  WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                           gdwStartPt = (ULONG)atol(szBuffer);
                           SendDlgItemMessage(hDlg, IDC_ESTAPT,
                                  EM_SETMODIFY, FALSE, 0) ;
                        }
                     }
                     return TRUE;

                case IDC_ESTOPT :
                     if (HIWORD(wParam) == EN_KILLFOCUS)
                     {
                        if(SendDlgItemMessage(hDlg, IDC_ESTOPT,
                                  EM_GETMODIFY, 0, 0))
                        {
                           SendDlgItemMessage(hDlg, IDC_ESTOPT,
                                  WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                           gdwStopPt = (ULONG)atol(szBuffer);
                           SendDlgItemMessage(hDlg, IDC_ESTOPT,
                                  EM_SETMODIFY, FALSE, 0) ;
                        }
                     }
                     return TRUE;
             }
             break;
    }
    return FALSE ;
}

/***************************************************************************
    FUNCTION: MainWndProc(HWND, unsigned, WPARAM, LPARAM)

    PURPOSE:  Processes messages

    MESSAGES:

        WM_CREATE     - create window
        WM_COMMAND    - application menu (About dialog box)
        WM_DESTROY    - destroy window
****************************************************************************/

long FTYPE MainWndProc(hWnd, message, wParam, lParam)
HWND hWnd;                              /* window handle                   */
unsigned message;                       /* type of message                 */
WPARAM wParam;                            /* additional information          */
LPARAM lParam;                            /* additional information          */
{
    int     dec, sign, i;
    TEXTMETRIC tm;
    HDC     hdc;
    static  int cxChar, cyChar;
    double  ratio;
	DWORD   dwExitCode;
    BOOL    bThreadStatus;
	USHORT  temp;


    switch (message)
      {
       case WM_CREATE:

            hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;

            lpfnConfigDlgProc = MakeProcInstance (ConfigDlgProc, hInstance) ;

            lpfnShowDataDlgProc = MakeProcInstance (ShowDataDlgProc, hInstance) ;

            lpfnDisplayDlgProc = MakeProcInstance (DisplayDlgProc, hInstance) ;

            lpfnGainListDlgProc = MakeProcInstance (GainListDlgProc, hInstance) ;

            lpfnCondListDlgProc = MakeProcInstance (CondListDlgProc, hInstance) ;

            lpfnLevelListDlgProc = MakeProcInstance (LevelListDlgProc, hInstance) ;

            hdc = GetDC(hWnd);
            SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));
            GetTextMetrics(hdc, &tm);
            cxChar = tm.tmAveCharWidth;
            cyChar = tm.tmHeight + tm.tmExternalLeading;
            ReleaseDC(hWnd, hdc);

            //Create stop button and status button
            hwndStopButton = CreateWindow("button", "Stop",
                (DWORD)(WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON),
                0, 0, 8*cxChar, 3*cyChar/2, hWnd,
                (HMENU)IDC_STOPBUTTON,
                (HANDLE)hInstance, (LPVOID)NULL);

            hwndStatusButton = CreateWindow("button", "Status",
                (DWORD)(WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON),
                8*cxChar, 0, 8*cxChar, 3*cyChar/2, hWnd,
                (HMENU)IDC_STATUSBUTTON,
                (HANDLE)hInstance, (LPVOID)NULL);

            EnableWindow(hwndStopButton, FALSE);
            EnableWindow(hwndStatusButton, FALSE);

            return 0 ;

       case WM_COMMAND:     /* message: from application menu */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -