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

📄 freqout.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 3 页
字号:
                    SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"CLK N"));

		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"FOUT N-1"));
		               
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"10MHz"));
		               
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"1MHz"));
		               
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"100KHz"));
		               
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"10KHz"));
		               
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_ADDSTRING,
		                 0,
		                 (LPARAM)((LPSTR)"1KHz"));
		              
		              SendDlgItemMessage( 
			              hDlg,
			              IDC_FOUTSRC,
	                    CB_SETCURSEL,
		                 gwFoutSrc,
			              //6,
		                 0);

		              //
                    // Initialize Input Channel
                    //
                    SendDlgItemMessage(hDlg, IDC_ECHANNEL,CB_RESETCONTENT,(WPARAM)0, (LPARAM)0);
                    
                    for ( i = 0; i < usMaxFoutChan; i ++ )
		              {
                       _itoa( i, szBuffer, 10 );
                       SendDlgItemMessage( 
		                 hDlg, 
		                 IDC_ECHANNEL,
		                 CB_ADDSTRING, 
		                 0, 
		                 ( LPARAM )( ( LPSTR )szBuffer ) );
		              }

                    SendDlgItemMessage(hDlg,IDC_ECHANNEL,CB_SETCURSEL,gwChannel,(LPARAM)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
)
{
    static  HANDLE  hInstance ;
    HMENU           hMenu;
    HDC             hdc;
    char            szBuffer[120];
    RECT            rect;

    switch (message)
    {
        case WM_CREATE:

            //
            // initialize Stop Menu
            //

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

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

            lpfnConfigDlgProc = MakeProcInstance (ConfigDlgProc, 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_STOP :

                    //
                    // counter reset
                    //
                    if( (ErrCde = DRV_FreqOutReset(DriverHandle,
                        (LPARAM)gwChannel)) != 0)                   
                    {
                        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                        MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                    }

                    DRV_DeviceClose((LONG far *)&DriverHandle);

                    bRun = FALSE;

                    //
                    // reset menu item status
                    //
						  hdc = GetDC(hWnd);
                    GetClientRect(hWnd, &rect);                    
						  sprintf(szBuffer, "     Frequency output stop!          ");
                    DrawText(hdc, szBuffer, -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                    ReleaseDC(hWnd, hdc);

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


                    //
                    // get number of counter channels
                    //

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

                    // check number of counter channels
                    if (DevFeatures.usMaxTimerChl == 0)
                    {
                        MessageBox(hWnd,(LPCSTR)"No Counter Channel",
                            "Driver Message",MB_OK);
                        DRV_DeviceClose((LONG far *)&DriverHandle);
                        return 0;
                    }


                    //
                    // start counter
                    //
                    if (dwBordID == BD_PCM3780){
                       gwFoutSrc++;
                    }
                    switch ( gwFoutSrc )
                    { 
	                 case 0:
                       {
		                    ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_EXTER_CLK;
                       }
	                    break;
	                 case 1:
                       {
                          ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_N;
                       }
		                 break;
	                 case 2:
                       {
                          ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_FOUT_N_M1;
                       }
		                 break;
	                 case 3:
                       {
                          ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_10MHZ;
                       }
		                 break;
	                 case 4:
                       {
                          ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_1MHZ;
                       }
		                 break;
	                 case 5:
                       {
			                 ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_100KHZ;
                       }
	                    break;
	                 case 6:
                       {
			                 ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_10KHZ;
                       }
		                 break;
	                 case 7:
                       {
			                 ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_1KHZ;
                       }
		                 break;	   	
                    }

                    ptFreqOutStart.usChannel    = gwChannel;
						  ptFreqOutStart.usDivider    = gwDivider;						  						  
						  
                    if((ErrCde = DRV_FreqOutStart((LONG)DriverHandle,
							     (LPT_FreqOutStart)&ptFreqOutStart)) != 0)
                    {
                        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                        MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                        return TRUE;
                    }

                    if (dwBordID == BD_PCM3780){
                       gwFoutSrc--;
                    }
                    //
                    // enable Stop Menu item and disable the others
                    //

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

                    bRun = TRUE;

                    //
                    // display
                    //

                    hdc = GetDC(hWnd);
                    GetClientRect(hWnd, &rect);
                    sprintf(szBuffer, "Frequency Output Running ...... ");
                    DrawText(hdc, szBuffer, -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                    ReleaseDC(hWnd, hdc);

                    return 0;
            }
            return 0;

        case WM_DESTROY:
            if (bRun == TRUE)
            {
                // counter reset
                if( (ErrCde = DRV_FreqOutReset(DriverHandle,
                    (LPARAM)gwChannel)) != 0)
                {
                    DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                    MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                }

                DRV_DeviceClose((LONG far *)&DriverHandle);
            }
            PostQuitMessage(0);
            break;

        default:
            return (DefWindowProc(hWnd, message, wParam, lParam));
    }

    return ((LONG)NULL);
}

⌨️ 快捷键说明

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