📄 qcounter.c
字号:
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 + -