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