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

📄 madint.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 5 页
字号:
        if (gwFifoEnable)
		{
            SendDlgItemMessage(hDlg, IDC_FifoEnable,BM_SETCHECK,1,0);
            EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), TRUE);
            EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), TRUE);
            itoa((int)gwFifoSize, szBuffer, 10);
            SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_REPLACESEL, 0,
                               (LPARAM)((LPSTR)szBuffer));
		}

        // Initialize gain table option
        if (gwGainList)
        {
            CheckRadioButton(hDlg, IDC_OVERALLGAIN, IDC_GAINARRAY,
                IDC_GAINARRAY);
            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
            EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), TRUE);
        }
        else
        {
            CheckRadioButton(hDlg, IDC_OVERALLGAIN, IDC_GAINARRAY,
                IDC_OVERALLGAIN);
            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
            EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), FALSE);
        }

        // Step 4: 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_GAINLIST :
            DialogBox (hInst, MAKEINTRESOURCE(IDD_GAINLIST),
                hDlg, lpfnGainListDlgProc) ;
            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(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));

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

                // Step 1: Open Device
                if (gnNumOfSubdevices == 0)
                {
                    // for non COM port or CAN device
                    ErrCde = DRV_DeviceOpen(
                        DeviceList[gwDevice].dwDeviceNum,
                        (LONG far *)&DriverHandle);
                }
                else
                {
                    // for COM port or CAN device
                    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 Range Combobox with device features
                gwGainCode = 0;

                if (DevFeatures.usNumGain != 0)
                {
                    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[gwGainCode].szGainStr)));
                }
                else
                {
                    EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
                    SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
                        0, (LPARAM)((LPSTR)0));
                }

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

            return TRUE;

        case IDC_CONVERSION :
            if (HIWORD(wParam) == EN_KILLFOCUS)
            {
                if(SendDlgItemMessage(hDlg, IDC_CONVERSION,
                    EM_GETMODIFY, 0, 0))
                {
                    SendDlgItemMessage(hDlg, IDC_CONVERSION,
                        WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                    gulConvNum = (ULONG)atol(szBuffer);
                    SendDlgItemMessage(hDlg, IDC_CONVERSION,
                        EM_SETMODIFY, FALSE, 0) ;
                }
            }
            return TRUE;
        case IDC_PACER :
            if (HIWORD(wParam) == EN_KILLFOCUS)
            {
                if(SendDlgItemMessage(hDlg, IDC_PACER,
                    EM_GETMODIFY, 0, 0))
                {
                    SendDlgItemMessage(hDlg, IDC_PACER,
                        WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                    gdwPacerRate = (ULONG)atol(szBuffer);
                    SendDlgItemMessage(hDlg, IDC_PACER,
                        EM_SETMODIFY, FALSE, 0) ;
                }
            }
            return TRUE;
        case IDC_INPRANGE :
            if (HIWORD(wParam) == CBN_KILLFOCUS)
            {
                i = (int)SendDlgItemMessage(hDlg, IDC_INPRANGE,
                    CB_GETCURSEL, 0, 0) ;
                if (i != CB_ERR)
                    gwGainCode = (USHORT)i;
            }
            return TRUE;
        case IDC_ESTART :
            if (HIWORD(wParam) == EN_KILLFOCUS)
            {
                if(SendDlgItemMessage(hDlg, IDC_ESTART,
                    EM_GETMODIFY, 0, 0))
                {
                    SendDlgItemMessage(hDlg, IDC_ESTART,
                        WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                    gwStartChl = (USHORT)atoi(szBuffer);
                    SendDlgItemMessage(hDlg, IDC_ESTART,
                        EM_SETMODIFY, FALSE, 0) ;
                }
            }
            return TRUE;

        case IDC_ESTOP :
            if (HIWORD(wParam) == EN_KILLFOCUS)
            {
                if(SendDlgItemMessage(hDlg, IDC_ESTOP,
                    EM_GETMODIFY, 0, 0))
                {
                    SendDlgItemMessage(hDlg, IDC_ESTOP,
                        WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                    gwNumChl = (USHORT)atoi(szBuffer);
                    SendDlgItemMessage(hDlg, IDC_ESTOP,
                        EM_SETMODIFY, FALSE, 0) ;
                }
            }
            return TRUE;
			
        case IDC_FifoEnable :
            gwFifoEnable = (int)SendDlgItemMessage(hDlg, IDC_FifoEnable,
											BM_GETCHECK,0,0);
			if(gwFifoEnable==1)
			{
                EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), TRUE);
                EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), TRUE);
                
                // Step 1: Open device
                ErrCde = DRV_DeviceOpen(DeviceList[gwDevice].dwDeviceNum,
                                (LONG far *)&DriverHandle);
                if (ErrCde != SUCCESS)
                {
                    gwFifoEnable = 0;
                    DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                    MessageBox(hWnd, (LPCSTR)szErrMsg,
                        "Driver Message", MB_OK);
                    return 0;
                }
               
                // Step 2: Get FIFO size
                ErrCde = DRV_GetFIFOSize(DriverHandle, &lFifoSize);
                if(ErrCde != SUCCESS)
                {
                    gwFifoEnable = 0;
                    DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                    MessageBox(hWnd, (LPCSTR)szErrMsg,
                        "Driver Message", MB_OK);
                    return 0;
                }
               
                // Step 3: Close device
                DRV_DeviceClose((LONG far *)&DriverHandle);

                // divide by 2 for conversion from byte to word
                gwFifoSize = (USHORT)lFifoSize / 2;
                SetWindowText(GetDlgItem(hDlg, IDC_FIFOSIZE),
                    itoa((int)gwFifoSize, szFifoSize, 10));
            }
			else
			{
                EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), FALSE);
                EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), FALSE);
			}

            return TRUE;

        case IDC_FIFOSIZE :
            if(gwFifoEnable==1)
            {
                if (HIWORD(wParam) == EN_KILLFOCUS)
                    if(SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_GETMODIFY, 0, 0))
                    {
                        SendDlgItemMessage(hDlg, IDC_FIFOSIZE, WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                        gwFifoSize = (USHORT)atoi(szBuffer);
                        SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_SETMODIFY, FALSE, 0) ;
                    }
            }
            else
                gwFifoSize = (USHORT)1024;
            
			return TRUE;

        case IDC_OVERALLGAIN :
            gwGainList = 0;
            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
            EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), FALSE);
            break;
        case IDC_GAINARRAY :
            gwGainList = 1;
            EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
            EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), TRUE);
            break;
        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;

⌨️ 快捷键说明

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