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

📄 adexp.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 4 页
字号:
                  }

                  // third: initialize Input Range List Combobox with device features
                  if ((DevFeatures.usNumGain != 0) &&
                      (DevCfg.Daughter[gwChannel&0xf].dwBoardID == 0) &&
                      (DevCfg.usCjcChannel != gwChannel))
                  {
                      EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
                      for (i = 0; i < (int)DevFeatures.usNumGain; i ++)
                          SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_ADDSTRING, 0,
                              (LPARAM)((LPSTR)(DevFeatures.glGainList[i].szGainStr)));

                      SendDlgItemMessage(hDlg, IDC_INPRANGE,
                         CB_SELECTSTRING, (WPARAM)(-1),
                         (LPARAM)((LPSTR)(DevFeatures.glGainList[gwGain].szGainStr)));
                  }
                  else
                  {
                      EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
                      SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                          0, (LPARAM)((LPSTR)0));
                  }

                }

              return TRUE;

            case IDC_DEVICE :

                //
                // When device selection is changed, it needs to
                // re-initialize sub-device combobox and input range
                // combobox.
                //

                if (HIWORD(wParam) == CBN_SELCHANGE)
                {
                    if ((dwIndex = SendDlgItemMessage(hDlg, IDC_DEVICE,
                        CB_GETCURSEL, 0, 0)) != CB_ERR)
                         gwDevice = (WORD)dwIndex;
                    else
                        return TRUE;


                    // ------------------------------------------------------
                    // Initialize Module Combobox for COM port or CAN devices
                    // ------------------------------------------------------

                    // check any device attached on this COM port or CAN

                    gnNumOfSubdevices = DeviceList[gwDevice].nNumOfSubdevices;
                    if (gnNumOfSubdevices > MAX_DEVICES)
                        gnNumOfSubdevices = MAX_DEVICES;


                    // retrieve the information of all installed devices

                    if (gnNumOfSubdevices != 0)
                    {
                        if ((ErrCde = DRV_DeviceGetSubList(
                            (DWORD)DeviceList[gwDevice].dwDeviceNum,
                            (DEVLIST far *)&SubDeviceList[0],
                            (SHORT)gnNumOfSubdevices,
                            (SHORT far *)&nOutEntries)) != (LONG)SUCCESS)
                        {
                            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                            MessageBox(hMainWnd, (LPCSTR)szErrMsg,
                                "Driver Message", MB_OK);
                            return TRUE;
                        }


                        // initialize the Module List Combobox with the
                        // retrieved information

                        EnableWindow(GetDlgItem(hDlg, IDC_MODULE), TRUE);
                        SendDlgItemMessage(hDlg, IDC_MODULE, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));

                        for (i = 0; i < gnNumOfSubdevices; i++)
                            SendDlgItemMessage(hDlg, IDC_MODULE, CB_ADDSTRING, 0,
                                (LPARAM)((LPSTR)SubDeviceList[i].szDeviceName));

                        gwSubDevice = 0;

                        SendDlgItemMessage(hDlg, IDC_MODULE, CB_SETCURSEL,
							(WPARAM)gwSubDevice, (LPARAM)0);
                    }
                    else
                    {
                        EnableWindow(GetDlgItem(hDlg, IDC_MODULE), FALSE);
                        SendDlgItemMessage(hDlg, IDC_MODULE, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));
                    }


                    // -------------------------------------------------
                    // Initialize Input Range List Combobox, it needs to
                    // get device features for gain list
                    // -------------------------------------------------

                    // first : Open Device

                    // for non COM port or CAN device
                    if (gnNumOfSubdevices == 0)
                    {
                        ErrCde = DRV_DeviceOpen(
                            DeviceList[gwDevice].dwDeviceNum,
                            (LONG far *)&DriverHandle);
                    }

                    // for COM port or CAN device
                    else
                    {
                        ErrCde = DRV_DeviceOpen(
                            SubDeviceList[gwSubDevice].dwDeviceNum,
                            (LONG far *)&DriverHandle);
                    }

                    if (ErrCde != SUCCESS)
                    {
                        strcpy(szErrMsg,"Device open error !");
                        MessageBox(hMainWnd, (LPCSTR)szErrMsg,
                            "Driver Message", MB_OK);
                        return 0;
                    }

                    // second: get device features

                    ptDevFeatures.buffer = (LPDEVFEATURES)&DevFeatures;
                    ptDevFeatures.size = sizeof(DEVFEATURES);
                    if ((ErrCde = DRV_DeviceGetFeatures(DriverHandle,
                        (LPT_DeviceGetFeatures)&ptDevFeatures)) != SUCCESS)
                    {
                        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                        MessageBox(hMainWnd, (LPCSTR)szErrMsg, "Driver Message",
                            MB_OK);
                        DRV_DeviceClose((LONG far *)&DriverHandle);
                        return 0;
                    }

                    // initialize value
                    gwChannel = 0;
                    gwGain    = 0;
                    usBoardID = 0;
                    usExpChan = 0;

                    // Have AI function support ?
                    if ((DevFeatures.usMaxAIDiffChl == 0) &&
                        (DevFeatures.usMaxAISiglChl == 0))
                    {
                        EnableWindow(GetDlgItem(hDlg, IDC_ECHANNEL), FALSE);
                        SendDlgItemMessage(hDlg, IDC_ECHANNEL, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));
                        EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
                        SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));
                        EnableWindow(GetDlgItem(hDlg, IDC_EXPCHAN), FALSE);
                        SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));
                        EnableWindow(GetDlgItem(hDlg, IDC_BOARDID), FALSE);
                        SendDlgItemMessage(hDlg, IDC_BOARDID, CB_RESETCONTENT,
                            0, (LPARAM)((LPSTR)0));
                    }
                    else
                    {
                        ptAIGetConfig.buffer = (LPDEVCONFIG_AI)&DevCfg;
                        ptAIGetConfig.size = sizeof(DEVCONFIG_AI);

                        // call AIGetConfig
                        if ((ErrCde = DRV_AIGetConfig(DriverHandle,
                            (LPT_AIGetConfig)&ptAIGetConfig)) != SUCCESS)
                        {
                            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                            MessageBox(hMainWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
                            DRV_DeviceClose((LONG far *)&DriverHandle);
                            return 0;
                        }
                       usMaxChannel = DevFeatures.usMaxAISiglChl;

                        EnableWindow(GetDlgItem(hDlg, IDC_ECHANNEL), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_EXPCHAN), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_BOARDID), TRUE);
                        SendDlgItemMessage(hDlg, IDC_ECHANNEL, CB_RESETCONTENT, 0, 0L);
                        SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_RESETCONTENT, 0, 0L);
                        SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT, 0, 0L);
                        SendDlgItemMessage(hDlg, IDC_BOARDID, CB_RESETCONTENT, 0, 0L);

                        // setting dialog box for channel setting
                        // fill in the channel listbox with the available channel
                        // in the AI subsection (start with channel 0)
                        for (i=0; i< (int)usMaxChannel; ++i)
                        {
                            wsprintf(szBuf, "%d", i);
                            if (i == (int)DevCfg.usCjcChannel) // CJC channel
                            {
                                lstrcat(szBuf, " (CJC Channel)");
                            }
                            else if (DevCfg.Daughter[i&0xf].dwBoardID!=0L)// exp. board exist
                            {
                                lstrcat(szBuf, " (");
                                DRV_BoardTypeMapBoardName(DevCfg.Daughter[i&0xf].dwBoardID,
                                                          (LPSTR)szExpName);
                                lstrcat(szBuf, szExpName);
                                lstrcat(szBuf, ")");
                            }
                            SendDlgItemMessage(hDlg, IDC_ECHANNEL, CB_ADDSTRING,(WPARAM) -1,
                                (LPARAM)(LPSTR)szBuf);
                        }
                        // initialize input channel
                        SendDlgItemMessage(hDlg, IDC_ECHANNEL, CB_SETCURSEL, gwChannel,0L);

                        // if the selected channel is associated with an expansion board,
                        // fill in the Exp. channel listbox with the available expansion board
                        // channel.
                        if (DevCfg.usNumExpChan > 0 && DevCfg.Daughter[gwChannel&0xf].dwBoardID
                            && (int)gwChannel != (int)DevCfg.usCjcChannel &&
                            DevCfg.Daughter[gwChannel&0xf].dwBoardID != (DWORD)BD_PCLD8115
							&&DevCfg.Daughter[gwChannel&0xf].dwBoardID != (DWORD)BD_PCLD8710)//mining add
                        {
                            EnableWindow(GetDlgItem(hDlg, IDC_EXPCHAN), TRUE);
                            SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_RESETCONTENT, 0, 0L);

                            for (i=0; i<(int)DevCfg.Daughter[gwChannel&0xf].usNum; ++i)
                            {
                                wsprintf(szBuf, "%d", i);
                                SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_ADDSTRING,(WPARAM)-1,
                                    (LPARAM)(LPSTR)szBuf);
                            }

                            SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_SETCURSEL,
                                usExpChan,0L);
                        }
                        else
                        {
                            EnableWindow(GetDlgItem(hDlg, IDC_EXPCHAN), FALSE);
                            SendDlgItemMessage(hDlg, IDC_EXPCHAN, CB_RESETCONTENT, 0, 0L);
                        }

                        if (DevCfg.Daughter[gwChannel&0xf].dwBoardID == (DWORD)BD_PCLD788)
                        {
                            EnableWindow(GetDlgItem(hDlg, IDC_BOARDID), TRUE);
                            SendDlgItemMessage(hDlg, IDC_BOARDID, CB_RESETCONTENT, 0, 0L);

                            for (i=0; i<(int)DevCfg.Daughter[gwChannel&0xf].usCards; ++i)
                            {
                                wsprintf(szBuf, "%d", i);
                                SendDlgItemMessage(hDlg, IDC_BOARDID, CB_ADDSTRING, (WPARAM)-1,
                                    (LPARAM)(LPSTR)szBuf);
                            }
                            SendDlgItemMessage(hDlg, IDC_BOARDID, CB_SETCURSEL,
                                usBoardID,0L);
                        }
                        else
                        {
                            EnableWindow(GetDlgItem(hDlg,IDC_BOARDID),FALSE);
                            SendDlgItemMessage(hDlg, IDC_BOARDID, CB_RESETCONTENT, 0, 0L);
                        }

                        // third: initialize Range Combobox with device features
                        if ((DevFeatures.usNumGain != 0) &&
                            (DevCfg.Daughter[gwChannel&0xf].dwBoardID == 0) &&
                            (DevCfg.usCjcChannel != gwChannel))
                        {
                            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
                            SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                                0, (LPARAM)((LPSTR)0));
                            for (i = 0; i < (int)DevFeatures.usNumGain; i ++)
                                SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_ADDSTRING, 0,
                                (LPARAM)((LPSTR)(DevFeatures.glGainList[i].szGainStr)));

                            SendDlgItemMessage(hDlg, IDC_INPRANGE,
                                CB_SELECTSTRING, (WPARAM)(-1),
                                (LPARAM)((LPSTR)(DevFeatures.glGainList[gwGain].szGainStr)));
                        }
                        else
                        {
                            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
                            SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                                0, (LPARAM)((LPSTR)0));
                        }
                    }

                    // fourth: close device
                    DRV_DeviceClose((LONG far *)&DriverHandle);
                }

                return TRUE;
         }
         break;
    }
    return FALSE ;
}

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

    PURPOSE:  Processes dialog box messages for scan time settings
****************************************************************************/

BOOL FTYPE ScanDlgProc
(
    HWND        hDlg,                          // window handle
    unsigned    message,                       // type of message
    WPARAM      wParam,                        // additional information
    LPARAM      lParam                         // additional information
)
{
    char        szBuffer[40];

    switch (message)
    {
    case WM_INITDIALOG :

        // ---------------------------------------------------
        // Initialize Scan Time Edit, Maximum accuracy: 40 ms
        // ---------------------------------------------------

⌨️ 快捷键说明

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