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

📄 adint.c

📁 这是一个研华数据采集的源代码,可以利用此码实现工业控制和数据处理.
💻 C
📖 第 1 页 / 共 4 页
字号:
WPARAM wParam;                          /* additional information          */
LPARAM lParam;                          /* additional information          */
{
    int  i;
    char szBuffer[100];
	LONG lFifoSize;
	char szFifoSize[10];

    switch (message)
    {
    case WM_INITDIALOG :

        // Step 1: Select Device
        ErrCde = DRV_SelectDevice(hDlg, FALSE, &dwDeviceNum, szBuffer);
        if (ErrCde != SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
            return 0;
        }

        // Step 2: Open Device
        ErrCde = DRV_DeviceOpen(dwDeviceNum, (LONG far *)&DriverHandle);
        if (ErrCde != SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
            return 0;
        }

        // Step 3: 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 4 : 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 Stop Channel
        itoa((int)gwStopChl, 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);

        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));
		}

        SendDlgItemMessage(hDlg, IDC_CONVINT, 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 5: 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_DeviceSelect:

            // Step 1: Select Device
            ErrCde = DRV_SelectDevice(hDlg, FALSE, &dwDeviceNum, szBuffer);
            if (ErrCde != SUCCESS)
            {
                DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
                return 0;
            }

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

            // Step 2: Open Device
            ErrCde = DRV_DeviceOpen(dwDeviceNum, (LONG far *)&DriverHandle);
            if (ErrCde != SUCCESS)
            {
                DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                MessageBox(hWnd, (LPCSTR)szErrMsg,
                    "Driver Message", MB_OK);
                return 0;
            }

            // Step 3: 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 4: 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 5: 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) ;
                    gwStopChl = (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(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;

⌨️ 快捷键说明

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