📄 counter.c
字号:
gwClkSrc = PA_MODE_COUNT_SRC_FOUT_0;
}
break;
case 4:
{
gwClkSrc = PA_MODE_COUNT_SRC_FOUT_1;
}
break;
case 5:
{
if (dwBordID == BD_PCM3780){
gwClkSrc = PA_MODE_COUNT_SRC_GATE_N_M1; // Gate N-1
}else{
gwClkSrc = PA_MODE_COUNT_SRC_FOUT_2;
}
}
break;
case 6:
{
gwClkSrc = PA_MODE_COUNT_SRC_FOUT_3;
}
break;
case 7:
{
gwClkSrc = PA_MODE_COUNT_SRC_GATE_N_M1;
}
break;
}
}
case IDCANCEL :
EndDialog(hDlg, 0);
return TRUE;
case IDC_OutputEnable:
EnableWindow(GetDlgItem(hDlg, IDC_OUTMODE), TRUE);
gwOutputEnable = PA_MODE_ENABLE_OUTPUT;
break;
case IDC_OutputDisable:
EnableWindow(GetDlgItem(hDlg, IDC_OUTMODE), FALSE);
gwOutputEnable = PA_MODE_DISABLE_OUTPUT;
break;
case IDC_CntEdgeRising:
gwCntEdge = PA_MODE_COUNT_RISE_EDGE;
break;
case IDC_CntEdgeFalling:
gwCntEdge = PA_MODE_COUNT_FALL_EDGE;
break;
case IDC_CntDown :
gwCntDirect = PA_MODE_COUNT_DOWN;
break;
case IDC_CntUp:
gwCntDirect = PA_MODE_COUNT_UP;
break;
case IDC_GateHigh:
gwGatePolarity = PA_MODE_GATE_POSITIVE;
break;
case IDC_GateLow:
gwGatePolarity = PA_MODE_GATE_NEGATIVE;
break;
case IDC_IntEnable:
gwIntFlag = 1;
break;
case IDC_IntDisable:
gwIntFlag = 0;
case IDC_CntIniVal :
if (HIWORD(wParam) == EN_KILLFOCUS)
{
if(SendDlgItemMessage(hDlg, IDC_CntIniVal,
EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_CntIniVal,
WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
g_usIniVal = atol(szBuffer);
SendDlgItemMessage(hDlg, IDC_CntIniVal,
EM_SETMODIFY, FALSE, 0) ;
}
if ( ( g_usIniVal <= 0 )||( g_usIniVal > 65535 ))
{
MessageBox( hDlg, "Invalid Counter Initial Value",
"Notice", MB_OK );
return TRUE;
}
}
return TRUE;
case IDC_DEVICE :
//
// When device selection is changed, it needs to
// re-initialize sub-device combobox and input range
// combobox.
//
if (HIWORD(wParam) == CBN_SELCHANGE)
{
if ((dwIndex = SendDlgItemMessage(hDlg, IDC_DEVICE,
CB_GETCURSEL, 0, 0)) != CB_ERR)
gwDevice = (WORD)dwIndex;
else
return TRUE;
// ------------------------------------------------------
// Initialize Module Combobox for COM port or CAN devices
// ------------------------------------------------------
// check any device attached on this COM port or CAN
gnNumOfSubdevices = DeviceList[gwDevice].nNumOfSubdevices;
if (gnNumOfSubdevices > MAX_DEVICES)
gnNumOfSubdevices = MAX_DEVICES;
// retrieve the information of all installed devices
if (gnNumOfSubdevices != 0)
{
if ((ErrCde = DRV_DeviceGetSubList(
(DWORD)DeviceList[gwDevice].dwDeviceNum,
(DEVLIST far *)&SubDeviceList[0],
(SHORT)gnNumOfSubdevices,
(SHORT far *)&nOutEntries)) != (LONG)SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hMainWnd, (LPCSTR)szErrMsg,
"Driver Message", MB_OK);
return TRUE;
}
// initialize the Module List Combobox with the
// retrieved information
EnableWindow(GetDlgItem(hDlg, IDC_MODULE), TRUE);
SendDlgItemMessage(hDlg, IDC_MODULE, CB_RESETCONTENT,
0, (LPARAM)((LPSTR)0));
for (i = 0; i < gnNumOfSubdevices; i++)
SendDlgItemMessage(hDlg, IDC_MODULE, CB_ADDSTRING, 0,
(LPARAM)((LPSTR)SubDeviceList[i].szDeviceName));
gwSubDevice = 0;
SendDlgItemMessage(hDlg, IDC_MODULE, CB_SETCURSEL,
(WPARAM)gwSubDevice, (LPARAM)0);
}
else
{
EnableWindow(GetDlgItem(hDlg, IDC_MODULE), FALSE);
SendDlgItemMessage(hDlg, IDC_MODULE, CB_RESETCONTENT,
0, (LPARAM)((LPSTR)0));
}
//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(hDlg,(LPCSTR)szErrMsg,"Device Open",MB_OK);
return 0;
}
//
// 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(hDlg,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
DRV_DeviceClose((LONG far *)&DriverHandle);
return 0;
}
dwBordID = DevFeatures.dwBoardID;
usMaxCntNumber = DevFeatures.usMaxTimerChl;
DRV_DeviceClose(&DriverHandle);
// initial counter channel
SendDlgItemMessage(hDlg, IDC_ECHANNEL, CB_RESETCONTENT,(WPARAM)0, (LPARAM)0);
for ( i = 0; i< usMaxCntNumber; i++ )
{
_itoa( i, szBuffer, 10 );
SendDlgItemMessage(
hDlg,
IDC_ECHANNEL,
CB_ADDSTRING,
0,
( LPARAM )( ( LPSTR )szBuffer ) );
}
SendDlgItemMessage(hDlg,IDC_ECHANNEL,CB_SETCURSEL,gwChannel,(LPARAM)0);
// initial count source
SendDlgItemMessage(hDlg, IDC_CntClkSrc, CB_RESETCONTENT,(WPARAM)0, (LPARAM)0);
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)
{
//for pci1780&mic3780
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);
}
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
)
{
static HANDLE hInstance ;
HMENU hMenu;
HDC hdc;
char szBuffer[120];
RECT rect;
DWORD dwCurrentTime;
DWORD dwErrorTime;
BOOL bTimerOverrun;
DWORD dwExitCode;
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);
lpfnScanDlgProc = MakeProcInstance (ScanDlgProc, hInstance);
return 0 ;
case WM_COMMAND: /* message: from application menu */
hMenu = GetMenu(hWnd);
switch (LOWORD(wParam))
{
case IDM_SETTING :
KillTimer(hWnd, 1);
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);
gwStopFlag = 1;
// Close thread
bThreadloop = FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -