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

📄 qcounter.c

📁 工业控制和数据采集,这是一个脉冲阀的控制原代码,自动控制实验过程.
💻 C
📖 第 1 页 / 共 2 页
字号:
             else
                SendDlgItemMessage(hDlg,IDC_CHECKRESET,BM_SETCHECK,1,0);

             if (usFreeRun == 0)
                SendDlgItemMessage(hDlg,IDC_CHECKFREERUN,BM_SETCHECK,0,0);
             else
                SendDlgItemMessage(hDlg,IDC_CHECKFREERUN,BM_SETCHECK,1,0);

             if (usResetValue  == 0)   // reset value = 0
                CheckRadioButton(hDlg,IDC_RESETVALUE0,IDC_RESETVALUE8,IDC_RESETVALUE0);
             else
                CheckRadioButton(hDlg,IDC_RESETVALUE0,IDC_RESETVALUE8,IDC_RESETVALUE8);

            // Set InputMode
            SendDlgItemMessage(hDlg,IDC_INPUTMODE,CB_SELECTSTRING,(WPARAM)-1,
                (LPARAM)((LPSTR)szInputMode[usInputMode]));

            // Set LatchSource
            SendDlgItemMessage(hDlg,IDC_LATCHSOURCE,CB_SELECTSTRING,(WPARAM)-1,
                (LPARAM)((LPSTR)szLatchSource[usLatchSource]));


             return TRUE;

        case WM_COMMAND :
             switch (LOWORD(wParam))
             {
                case IDOK :

                  // get driver number
				  if(SendDlgItemMessage(hDlg, IDC_DEVNUMBER,
                               EM_GETMODIFY, 0, 0))
                  {
                         SendDlgItemMessage(hDlg, IDC_DEVNUMBER,
                                 WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                         wDriver = atoi(szBuffer);
                   }

				  // get channel number
				  if(SendDlgItemMessage(hDlg, IDC_ECHANNEL,
                               EM_GETMODIFY, 0, 0))
                  {
                        SendDlgItemMessage(hDlg, IDC_ECHANNEL,
                                WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
                        wChannel = atoi(szBuffer);
                        SendDlgItemMessage(hDlg, IDC_ECHANNEL,
                                  EM_SETMODIFY, FALSE, 0) ;
                  }

                  // get usInputMode number
                  usInputMode = (USHORT)SendDlgItemMessage(hDlg, IDC_INPUTMODE,
                      CB_GETCURSEL, 0, (LPARAM)0);

                  // get usLatchSource number
                  usLatchSource = (USHORT)SendDlgItemMessage(hDlg, IDC_LATCHSOURCE,
                      CB_GETCURSEL, 0, (LPARAM)0);

                  usCheck = (int)SendDlgItemMessage(hDlg, IDC_CHECKFREERUN,
                                                    BM_GETCHECK,0,0);
                  if(usCheck == 1)
                     usFreeRun = 1;
                  else
                     usFreeRun = 0;

                  usCheck = (int)SendDlgItemMessage(hDlg, IDC_CHECKRESET,
                                                    BM_GETCHECK,0,0);
                  if(usCheck == 1)
                     usResetAfterLatch = 1;
                  else
                     usResetAfterLatch = 0;

                  // get reset value entry
                  if(IsDlgButtonChecked(hDlg,IDC_RESETVALUE0))
                      usResetValue = 0;
                  else
                      usResetValue = 1;

				   EndDialog(hDlg, 0);
                   return TRUE;

                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, unsigned message, WPARAM wParam, LPARAM lParam)
{
    static  HANDLE  hInstance ;
    HDC     hdc;
    char    szBuffer[40];
    RECT    rect;
    PT_QCounterConfig  ptQCounterConfig;
    PT_QCounterStart   ptQCounterStart;
    PT_QCounterRead    ptQCounterRead;

    switch (message)
      {
       case WM_CREATE:

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

            lpfnConfigDlgProc = MakeProcInstance (ConfigDlgProc, hInstance);

            return 0 ;

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

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

           case IDM_RUN :
              // Open Driver
			  if (usStart == 0)
			  {
                if((ErrCde = DRV_DeviceOpen((ULONG)wDriver,(LONG far *)&DriverHandle)) != 0)
              	{
                    DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                    MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                    return TRUE;
              	}

                ptQCounterConfig.counter       = wChannel;
                ptQCounterConfig.LatchSrc      = usLatchSource;
                ptQCounterConfig.LatchOverflow = usFreeRun;
                ptQCounterConfig.ResetOnLatch  = usResetAfterLatch;
                ptQCounterConfig.ResetValue    = usResetValue;

                // Execute counter config
                if((ErrCde = DRV_QCounterConfig(DriverHandle,
                         (LPT_QCounterConfig)&ptQCounterConfig)) != 0)
			  	{
                   DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                   MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                   return TRUE;
			  	}

                ptQCounterStart.counter   = wChannel;
                ptQCounterStart.InputMode = usInputMode;

			  	 // Execute counter start
                if((ErrCde = DRV_QCounterStart(DriverHandle,
                         (LPT_QCounterStart)&ptQCounterStart)) != 0)
			  	{
                   DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                   MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                   return TRUE;
			  	}

				usStart = 1;

			  }
                ptQCounterRead.counter  = wChannel;
                ptQCounterRead.overflow = (USHORT far *)&usOverflow;
                ptQCounterRead.LoCount  = (ULONG  far *)&ulLoCount;
                ptQCounterRead.HiCount  = (ULONG  far *)&ulHiCount;

              // Execute read counter
              if((ErrCde = DRV_QCounterRead(DriverHandle,
                         (LPT_QCounterRead)&ptQCounterRead)) != 0)
			  {
                  DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                  MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                  return TRUE;
			  }

               //Display Input Data
               hdc = GetDC(hWnd);
               GetClientRect(hWnd, &rect);
               _ultoa((unsigned long)ulLoCount,(char *)szBuf,  10);
               _ultoa((unsigned long)ulHiCount,(char *)szBuf1, 10);
               sprintf(szBuffer, "LoCNT=%10s HiCNT=%10s",szBuf, szBuf1, usOverflow);
               DrawText(hdc, szBuffer, -1, &rect,
                      DT_SINGLELINE | DT_CENTER | DT_VCENTER);
               ReleaseDC(hWnd, hdc);

            break;

        }
        return 0;

      case WM_DESTROY:

			if (usStart != 0)
			{
               // counter reset
               if( (ErrCde = DRV_CounterReset(DriverHandle,wChannel)) != 0)
               {
                   DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                   MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                   return TRUE;
               }

               // Close Driver
               if( (ErrCde = DRV_DeviceClose((LONG far *)&DriverHandle)) != 0)
               {
                   DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
                   MessageBox(hWnd,(LPCSTR)szErrMsg, "Driver Message", MB_OK);
                   return TRUE;
               }
			}
           PostQuitMessage(0);
           break;
      default:
           return (DefWindowProc(hWnd, message, wParam, lParam));
      }

   return ((LONG)NULL);
}

⌨️ 快捷键说明

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