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

📄 counter.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 4 页
字号:
		     CB_ADDSTRING,
		     0,		     
			  (LPARAM)((LPSTR)"ACTIVE LOW PULSE"));

        SendDlgItemMessage(
		     hDlg,
		     IDC_OUTMODE,
		     CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"TC TOGGLED FROM LOW"));

        SendDlgItemMessage(
		     hDlg,
		     IDC_OUTMODE,
		     CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"TC TOGGLED FROM HIGH"));
		  
		  SendDlgItemMessage(
		     hDlg,
		     IDC_OUTMODE,
		     CB_SETCURSEL,
		     gwOutputModeIndex,
		     0);

		  // initial count source
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"OUT N-1"));
		  
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"CLK N"));
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"CLK N-1"));
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"FOUT0"));
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"FOUT1"));
        if (dwBordID != BD_PCM3780)
        {
		     SendDlgItemMessage(
	           hDlg,
			     IDC_CntClkSrc,
	           CB_ADDSTRING,
		        0,
		        (LPARAM)((LPSTR)"FOUT2"));
		     
        
           SendDlgItemMessage(
	           hDlg,
			     IDC_CntClkSrc,
	           CB_ADDSTRING,
		        0,
		        (LPARAM)((LPSTR)"FOUT3"));
        }

		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"GATE N-1"));
		  
		  SendDlgItemMessage(
	        hDlg,
			  IDC_CntClkSrc,
	        CB_SETCURSEL,
		     gwClkSrcIndex,
		     0);
		
		  // initial count edge
		  CheckRadioButton(hDlg, IDC_CntEdgeRising, IDC_CntEdgeFalling,
           (gwCntEdge)?IDC_CntEdgeFalling:IDC_CntEdgeRising );
		  
		  // initial count direction
        CheckRadioButton(hDlg, IDC_CntUp, IDC_CntDown,
           (gwCntDirect)?IDC_CntUp:IDC_CntDown );
		  
		  // initial count interrupt
        CheckRadioButton(hDlg, IDC_IntEnable, IDC_IntDisable,
           (gwIntFlag)?IDC_IntEnable:IDC_IntDisable );

		  SendDlgItemMessage(
	        hDlg,
			  IDC_GateSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"OUT N-1"));
		  SendDlgItemMessage(
	        hDlg,
			  IDC_GateSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"GATE N"));
		  SendDlgItemMessage(
	        hDlg,
			  IDC_GateSrc,
	        CB_ADDSTRING,
		     0,
		     (LPARAM)((LPSTR)"GATE N-1"));
		  
		  SendDlgItemMessage(
	        hDlg,
			  IDC_GateSrc,
	        CB_SETCURSEL,
		     gwGateSrcIndex,
		     0);

		  // initial gate polarity
		  CheckRadioButton(hDlg, IDC_GateHigh, IDC_GateLow,
           (gwGatePolarity)?IDC_GateLow:IDC_GateHigh );
        // initial count mode
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"A"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"B"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"C"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"D"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"E"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"F"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"G"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"H"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"I"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"J"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"K"));
      SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"L"));
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"O"));
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"R"));
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"U"));
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_ADDSTRING,0,(LPARAM)((LPSTR)"X"));
	   SendDlgItemMessage(hDlg,IDC_CntMode,CB_SETCURSEL,gwCounterModeIndex,0 );
	   if ( ( gwCounterModeIndex < 10 ) && ( gwCounterModeIndex % 3 == 0 ))
	   {
		   EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE );
	       EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), FALSE );
	       EnableWindow( GetDlgItem( hDlg, IDC_GateLow), FALSE );
	   }
      return TRUE;

    case WM_COMMAND :
         switch (LOWORD(wParam))
         {  
			case IDC_ECHANNEL:
				{
					gwChannel =(USHORT)SendDlgItemMessage(
							                   hDlg, 
													 IDC_ECHANNEL, 
													 CB_GETCURSEL, 
													 0, 
													 (LPARAM)0 );            
				}
            break;

         case IDC_CntMode:
				{
						gwCounterModeIndex = (USHORT)SendDlgItemMessage(
					            hDlg, 
							      IDC_CntMode, 
							      CB_GETCURSEL,
							      0,
							      (LPARAM)0 );
			   
			   switch( gwCounterModeIndex )
			   {
			   case 0:
					{
						gwCounterMode = MODE_A;
                  gwGateSrc     = PA_MODE_GATE_SRC_GATE_NO;						  
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), FALSE );
					}
					break;
				
			   case 1:
					{
						gwCounterMode = MODE_B;
					    EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						 EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						 EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				
			   case 2:
					{
						gwCounterMode = MODE_C;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
					
				case 3:
					{
						gwCounterMode = MODE_D;
						gwGateSrc     = PA_MODE_GATE_SRC_GATE_NO;
                  EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), FALSE );
					}
					break;
					
				case 4:
					{
						gwCounterMode = MODE_E;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
					
				case 5:
					{
						gwCounterMode = MODE_F;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
					
				case 6:
					{
						gwCounterMode = MODE_G;
						gwGateSrc     = PA_MODE_GATE_SRC_GATE_NO;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), FALSE );
					}
					break;
					
				case 7:
					{
						gwCounterMode = MODE_H;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
					
				case 8:
					{
						gwCounterMode = MODE_I;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
           
				case 9:
					{
						gwCounterMode = MODE_J;
						gwGateSrc     = PA_MODE_GATE_SRC_GATE_NO;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), FALSE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), FALSE );
					}
					break;
					
				case 10:
					{
						gwCounterMode = MODE_K;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				case 11:
					{
						gwCounterMode = MODE_L;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				case 12:
					{
						gwCounterMode = MODE_O;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				case 13:
					{
						gwCounterMode = MODE_R;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				case 14:
					{
						gwCounterMode = MODE_U;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				case 15:
					{
						gwCounterMode = MODE_X;
						EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateHigh), TRUE );
						EnableWindow( GetDlgItem( hDlg, IDC_GateLow), TRUE );
					}
					break;
				}
				

			}
         break;
					
			case IDOK :
            {
              //
              // get device selection
              //
              if ((dwIndex = SendDlgItemMessage(hDlg, IDC_DEVICE,
                           CB_GETCURSEL, 0, 0)) != CB_ERR)
                   gwDevice = (WORD)dwIndex;

              //
              // get sub-device selection
              //
              if ((dwIndex = SendDlgItemMessage(hDlg, IDC_MODULE,
                           CB_GETCURSEL, 0, 0)) != CB_ERR)
                   gwSubDevice = (WORD)dwIndex;

             // get output mode
			   gwOutputModeIndex = (USHORT)SendDlgItemMessage(
					           hDlg, 
							     IDC_OUTMODE, 
							     CB_GETCURSEL,
							     0,
							     (LPARAM)0 );
				
				switch ( gwOutputModeIndex )
				{
				case 0:
					{
						gwOutputMode = PA_MODE_ACT_HIGH_TC_PULSE;
					}
					break;
				case 1:
					{
						gwOutputMode =	PA_MODE_ACT_LOW_TC_PULSE;
					}
					break;
				case 2:
					{
						gwOutputMode = PA_MODE_TC_TOGGLE_FROM_LOW;	
					}
					break;
				case 3:
					{
						gwOutputMode = PA_MODE_TC_TOGGLE_FROM_HIGH;
					}
					break; 
				}

				if (EnableWindow( GetDlgItem( hDlg,IDC_GateSrc ), FALSE ))
				{
					gwGateSrc = PA_MODE_GATE_SRC_GATE_NO;
				}
				else // get  gate source				
				{
					gwGateSrcIndex = (USHORT)SendDlgItemMessage(
					                         hDlg, 
							                   IDC_GateSrc, 
							                   CB_GETCURSEL,
							                   0,
							                   (LPARAM)0 );

				   switch ( gwGateSrcIndex )
					{

					case 0:
						{
							gwGateSrc = PA_MODE_GATE_SRC_OUT_N_M1;
						}
						break;
					case 1:
						{
							gwGateSrc = PA_MODE_GATE_SRC_GATE_N;
						}
						break;
					case 2:
						{
							gwGateSrc = PA_MODE_GATE_SRC_GATE_N_M1;
						}
						break;
					}
				}
					// get count source
					gwClkSrcIndex = (USHORT)SendDlgItemMessage(
					                   hDlg, 
							             IDC_CntClkSrc, 
							             CB_GETCURSEL,
							             0,
							             (LPARAM)0 );
               switch ( gwClkSrcIndex ) 
					{
					case 0:
						{
							gwClkSrc = PA_MODE_COUNT_SRC_OUT_N_M1;
						}
						break;
					case 1:
						{
							gwClkSrc = PA_MODE_COUNT_SRC_CLK_N;
						}
						break;
					case 2:
						{
							gwClkSrc = PA_MODE_COUNT_SRC_CLK_N_M1;
						}
						break;
					case 3:
						{

⌨️ 快捷键说明

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