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

📄 madint.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 5 页
字号:
        lvColum.cx = 80;
        ListView_InsertColumn(hGainListWnd, 1, &lvColum);
        wsprintf(szBuff, "%s", "Configuration");
        lvColum.cx = 90;
        ListView_InsertColumn(hGainListWnd, 2, &lvColum);

        // Insert Item
        lvItem.mask = LVIF_TEXT;
        lvItem.pszText = szBuff;
        dwPhyChan = gwStartChl;
        for(i = 0; i < min(gwNumChl,gwMaxLogChanNum); i++, dwPhyChan++)
        {
			if (Devconfig_AI.ulChanConfig == 1)
			{///Just For ISA Cards.
				if (dwPhyChan >= DevFeatures.usMaxAIDiffChl)
				{
					dwPhyChan -= DevFeatures.usMaxAIDiffChl;
				}
			}
			else
			{
				if (dwPhyChan >= DevFeatures.usMaxAISiglChl)
				{
					dwPhyChan -= DevFeatures.usMaxAISiglChl;
				}
			}

            lvItem.iItem = i;
            lvItem.iSubItem = 0;
            wsprintf(szBuff, "Chan %d", dwPhyChan);
            ListView_InsertItem(hGainListWnd, &lvItem);
            lvItem.iSubItem = 1;
            wsprintf(szBuff, "%s", DevFeatures.glGainList[gwGain[PhyChanToLogChan(&Devconfig_AI,dwPhyChan)]].szGainStr);
            ListView_SetItem(hGainListWnd, &lvItem);
            lvItem.iSubItem = 2;
			if (Devconfig_AI.ulChanConfig == 1)
			{
				wsprintf(szBuff, "%s", "Differential");
				wsprintf(szTmpBuff, "Chan %d", dwPhyChan);
                ListView_SetItemText(hGainListWnd,  i, 0, szTmpBuff);
			}
			else  if (dwPhyChan < 32)
            {  // The physical channel number between 0 and 31

               if (Devconfig_AI.ulChanConfig & (1 << dwPhyChan))
               {
                  wsprintf(szBuff, "%s", "Differential");
                  if (dwPhyChan % 2 == 0)
                  {
                     dwPhyChan++;
                  }
                  wsprintf(szTmpBuff, "Chan %d,%d", dwPhyChan-1, dwPhyChan);
                  ListView_SetItemText(hGainListWnd,  i, 0, szTmpBuff);
               }
               else
               {
                  wsprintf(szBuff, "%s", "Single-Ended");
               }
            }
            else
            {  // The physical channel number between 32 and 63

               if (Devconfig_AI.ulChanConfigEx[0] & (1 << (dwPhyChan-32)))
               {
                  wsprintf(szBuff, "%s", "Differential");
                  if (dwPhyChan % 2 == 0)
                  {
                     dwPhyChan++;
                  }
                  wsprintf(szTmpBuff, "Chan %d,%d", dwPhyChan-1, dwPhyChan);
                  ListView_SetItemText(hGainListWnd,  i, 0, szTmpBuff);
               }
               else
               {
                  wsprintf(szBuff, "%s", "Single-Ended");
               }
            }

            ListView_SetItem(hGainListWnd, &lvItem);
        }

        // Step 6: Close device
        DRV_DeviceClose((LONG far *)&DriverHandle);

        return TRUE;

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

        case IDC_CMB_GAIN :
            if (HIWORD(wParam) == CBN_CLOSEUP)
            {
                i = (int)SendDlgItemMessage(hDlg, LOWORD(wParam),
                    CB_GETCURSEL, 0, 0);
                if (i != CB_ERR)
                {
                    if (iPos>=0 && iPos<gwNumChl)
                    {

                        gwGain[(iPos+PhyChanToLogChan(&Devconfig_AI,gwStartChl)) % gwMaxLogChanNum] = i;
                        lvItem.mask = LVIF_TEXT;
                        lvItem.pszText = szBuff;
                        lvItem.iItem = iPos;
                        lvItem.iSubItem = 1;
                        wsprintf(szBuff, "%s", DevFeatures.glGainList[i].szGainStr);
                        ListView_SetItem(GetDlgItem(hDlg, IDC_LST_GAIN), &lvItem);
                    }
                }
            }
            return TRUE;
        }

        break;

    case WM_NOTIFY:
        switch (LOWORD(wParam))
        {
        case IDC_LST_GAIN :
            lpnmhdr = (LPNMHDR) lParam;
            if (lpnmhdr->code == NM_CLICK)
            {
                lpnmitem = (LPNMITEMACTIVATE) lParam;
                iPos = lpnmitem->iItem;
                if (iPos>=0 && iPos<gwNumChl)
                {
                    SendDlgItemMessage(hDlg, IDC_CMB_GAIN,
                        CB_SETCURSEL, gwGain[(iPos+PhyChanToLogChan(&Devconfig_AI,gwStartChl)) % gwMaxLogChanNum], 0);
                }
            }
            return TRUE;
        }
    }

    return FALSE;
}

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

    PURPOSE:  Processes dialog box messages for configuration
****************************************************************************/

BOOL FTYPE ConfigDlgProc(hDlg, message, wParam, lParam)
HWND hDlg;                              /* window handle                   */
unsigned message;                       /* type of message                 */
WPARAM wParam;                          /* additional information          */
LPARAM lParam;                          /* additional information          */
{
    int  i;
    DWORD       dwIndex;
    char        szBuffer[40];
    int         nOutEntries;
    LONG        lFifoSize;
    char        szFifoSize[10];

    switch (message)
    {
    case WM_INITDIALOG :

        // --------------------------------
        // Initialize Device List Combobox
        // --------------------------------

        // Get number of the installed devices
        if ((ErrCde = DRV_DeviceGetNumOfList((SHORT far *)&gnNumOfDevices)) !=
            SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
            return TRUE;
        }

        if (gnNumOfDevices > MAX_DEVICES)
            gnNumOfDevices = MAX_DEVICES;

        // Retrieve the information of all installed devices
        if ((ErrCde = DRV_DeviceGetList((DEVLIST far *)&DeviceList[0],
            (SHORT)gnNumOfDevices, (SHORT far *)&nOutEntries)) != (LONG)SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
            return TRUE;
        }

        // Initialize the Device List Combobox with the retrieved information
        for (i = 0; i < gnNumOfDevices; i ++)
            SendDlgItemMessage(hDlg, IDC_DEVICE, CB_ADDSTRING, 0,
            (LPARAM)((LPSTR)DeviceList[i].szDeviceName));

        SendDlgItemMessage(hDlg, IDC_DEVICE, CB_SETCURSEL,(WPARAM)gwDevice,
            (LPARAM)0);


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

        // Check if there is 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(hWnd,(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));

            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
        // ------------------------------------------------------------

        // Step 1: Open Device
        if (gnNumOfSubdevices == 0)
        {
            ErrCde = DRV_DeviceOpen(DeviceList[gwDevice].dwDeviceNum,
                (LONG far *)&DriverHandle);
        }
        else
        {
            ErrCde = DRV_DeviceOpen(
                SubDeviceList[gwSubDevice].dwDeviceNum,
                (LONG far *)&DriverHandle);
        }

        if (ErrCde != SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
            return 0;
        }

        // Step 2: 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(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
            DRV_DeviceClose((LONG far *)&DriverHandle);
            return 0;
        }

        // Step 3: Initialize Input Range List Combobox with device features
        if (DevFeatures.usNumGain != 0)
        {
            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[gwGainCode].szGainStr)));

        }
        else
        {
            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
            SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                0, (LPARAM)((LPSTR)0));
        }

        // Initialize Conversion Number
        ultoa(gulConvNum, szBuffer, 10);

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

        // Initialize Pacer Rate
        ultoa(gdwPacerRate, szBuffer, 10);

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

        if (gwExtTrig)
            EnableWindow(GetDlgItem(hDlg, IDC_PACER), FALSE);
        else
            EnableWindow(GetDlgItem(hDlg, IDC_PACER), TRUE);

        // Initialize Start Channel
        itoa((int)gwStartChl, szBuffer, 10);

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

        // Initialize Number Channel
        itoa((int)gwNumChl, szBuffer, 10);

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

        // Initialize Triggering
        CheckRadioButton(hDlg, IDC_INTTRIG, IDC_EXTTRIG,
            (gwExtTrig)?IDC_EXTTRIG:IDC_INTTRIG);

        // Initialize Repeated Mode
        CheckRadioButton(hDlg, IDC_CYCLIC, IDC_NONCYCLIC,
            (gwCyclicMode)?IDC_CYCLIC:IDC_NONCYCLIC);

        // Initialize Buffer Mode
        EnableWindow(GetDlgItem(hDlg, IDC_BUFSINGLE), FALSE);
        EnableWindow(GetDlgItem(hDlg, IDC_BUFDOUBLE), FALSE);

        // CheckRadioButton(hDlg, IDC_BUFSINGLE, IDC_BUFDOUBLE,
        //     (gwBufferMode)?IDC_BUFDOUBLE:IDC_BUFSINGLE);

        // Initialize Data Type
        CheckRadioButton(hDlg, IDC_DATAUSHORT, IDC_DATAFLOAT,
            (gwDataType)?IDC_DATAFLOAT:IDC_DATAUSHORT);

        // Initialize Message Flag
        CheckRadioButton(hDlg, IDC_EVTENABLE, IDC_EVTDISABLE,
            (gwEvtFlag)?IDC_EVTENABLE:IDC_EVTDISABLE);

        // Initialize number of interrupt count
        EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), FALSE);
        EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), FALSE);

⌨️ 快捷键说明

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