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

📄 madsoft.c

📁 这是一个应用于滤料过滤除尘方面的一个原代码,解决除尘过程的控制问题.
💻 C
📖 第 1 页 / 共 4 页
字号:
                            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;
                    }

                    // Have AI function support ?
                    if ((DevFeatures.usMaxAIDiffChl == 0) &&
                        (DevFeatures.usMaxAISiglChl == 0))
                        AllWindows(hDlg);
                    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;

                        if (usCurrentChan > usStopChan)
                            usCurrentChan = usStopChan;
                        else if (usCurrentChan < usStartChan)
                            usCurrentChan = usStartChan;

                        SetChannel(hDlg);
                        SetCurrentChan(hDlg, TRUE);

                        // 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[usCurrentChan&0xf].dwBoardID
                            && (int)usCurrentChan != (int)DevCfg.usCjcChannel &&
                            DevCfg.Daughter[usCurrentChan&0xf].dwBoardID != (DWORD)BD_PCLD8115)
                            SetExpChan(hDlg, TRUE);
                        else
                            SetExpChan(hDlg, FALSE);

                        if (DevCfg.Daughter[usCurrentChan&0xf].dwBoardID == (DWORD)BD_PCLD788)
                            SetBoardID(hDlg,TRUE);
                        else
                            SetBoardID(hDlg,FALSE);

                        // third: initialize Input Range List Combobox with device features
                        if ((DevFeatures.usNumGain != 0) &&
                            (DevCfg.Daughter[usCurrentChan&0xf].dwBoardID == 0))// &&
                            //(DevCfg.usCjcChannel != usCurrentChan)
                            SetGain(hDlg, TRUE);
                        else
                            SetGain(hDlg, FALSE);

                    }

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

                return TRUE;
			case IDC_MODULE:
				{
                    if (HIWORD(wParam) == CBN_SELCHANGE)
					{
                        if ((dwIndex = SendDlgItemMessage(hDlg, IDC_MODULE,
                            CB_GETCURSEL, 0, 0)) != CB_ERR)
                            gwSubDevice = (WORD)dwIndex;
                        else
                            return TRUE;
                    // 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;
                    }

                    // Have AI function support ?
                    if ((DevFeatures.usMaxAIDiffChl == 0) &&
                        (DevFeatures.usMaxAISiglChl == 0))
                        AllWindows(hDlg);
                    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;

                        if (usCurrentChan > usStopChan)
                            usCurrentChan = usStopChan;
                        else if (usCurrentChan < usStartChan)
                            usCurrentChan = usStartChan;

                        SetChannel(hDlg);
                        SetCurrentChan(hDlg, TRUE);

                        // 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[usCurrentChan&0xf].dwBoardID
                            && (int)usCurrentChan != (int)DevCfg.usCjcChannel &&
                            DevCfg.Daughter[usCurrentChan&0xf].dwBoardID != (DWORD)BD_PCLD8115)
                            SetExpChan(hDlg, TRUE);
                        else
                            SetExpChan(hDlg, FALSE);

                        if (DevCfg.Daughter[usCurrentChan&0xf].dwBoardID == (DWORD)BD_PCLD788)
                            SetBoardID(hDlg,TRUE);
                        else
                            SetBoardID(hDlg,FALSE);

                        // third: initialize Input Range List Combobox with device features
                        if ((DevFeatures.usNumGain != 0) &&
                            (DevCfg.Daughter[usCurrentChan&0xf].dwBoardID == 0))// &&
                            //(DevCfg.usCjcChannel != usCurrentChan)
                            SetGain(hDlg, TRUE);
                        else
                            SetGain(hDlg, FALSE);

                    }

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

        itoa(gwScanTime, szBuffer, 10);
        SendDlgItemMessage(hDlg, IDC_SCAN, EM_REPLACESEL, 0,
                        (LPARAM)((LPSTR)szBuffer));

        return TRUE;

    case WM_COMMAND :

         switch (LOWORD(wParam))
         {
            case IDOK :

                //
                // get scan time
                //

                if (SendDlgItemMessage(hDlg, IDC_SCAN,
                           EM_GETMODIFY, 0, 0))
                {
                    SendDlgItemMessage(hDlg, IDC_SCAN,
                            WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                    gwScanTime = atoi(szBuffer);
                    SendDlgItemMessage(hDlg, IDC_SCAN,
                              EM_SETMODIFY, FALSE, 0) ;
                }

            case IDCANCEL :
                EndDialog(hDlg, 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        hWnd,                          // window handle
    unsigned    message,                       // type of message
    WPARAM      wParam,                        // additional information
    LPARAM      lParam                         // additional information
)
{
    USHORT          i;
    static  HANDLE  hInstance ;
	HMENU           hMenu;
    HDC             hdc;
    char            szBuffer[120];
    RECT            rect;
    float           fVoltage[32];
    DWORD           dwCurrentTime;
    DWORD           dwErrorTime;
    BOOL            bTimerOverrun;

    USHORT          usStopChan;
    usStopChan = usStartChan + usNumChan - 1;

    switch (message)
    {
        case WM_CREATE:
            // initialize value
            usStartChan   = 0;
            usStopChan    = 0;
            usCurrentChan = 0;
            for (i = 0 ; i < 32 ; i++)     // leon.jin mod to 32
            {
                usGainIndex[i]   = 0;
                usExpChan[i]     = 0;
                usExpChanTemp[i] = 0;
                usBoardID[i]     = 0;
            }

            //
            // initialize Stop Menu
            //

            hMenu = GetMenu(hWnd);
            EnableMenuItem(hMenu, IDM_STOP, MF_BYCOMMAND | MF_GRAYED);

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

            lpfnConfigDlgProc = MakeProcInstance (ConfigDlgProc, hInstance) ;

            lpfnScanDlgProc = MakeProcInstance (ScanDlgProc, hInstance) ;

            return 0 ;

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

            hMenu = GetMenu(hWnd);

            switch (LOWORD(wParam))
            {
                case IDM_SETTING :
                    DialogBox (hInstance, MAKEINTRESOURCE(IDD_SETTING),
                         hWnd, lpfnConfigDlgProc) ;
                    return 0;

                case IDM_SCAN :
                    DialogBox (hInstance, MAKEINTRESOURCE(IDD_SCAN),
                         hWnd, lpfnScanDlgProc) ;
                    return 0;

                case IDM_STOP :

                    //
                    // kill timer and close driver
                    //

                    KillTimer(hWnd, 1);
                    DRV_DeviceClose((LONG far *)&DriverHandle);

                    bRun = FALSE;

                    //
                    // reset menu item status
                    //

                    EnableMenuItem(hMenu, IDM_STOP, MF_BYCOMMAND | MF_GRAYED);
                    EnableMenuItem(hMenu, IDM_START, MF_BYCOMMAND | MF_ENABLED);

                    return 0;

                case IDM_START :

                    //
                    // 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)
                    {
                        strcpy(szErrMsg,"Device open error !");
                        MessageBox(hWnd,(LPCSTR)szErrMsg,"Device Open",MB_OK);
                        return 0;
                    }

                    //

⌨️ 快捷键说明

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