📄 pulsepwm.c
字号:
// -----------------------------------------------------------
// Initialize Module List Combobox for COM port or CAN devices
// -----------------------------------------------------------
// check if there is any device attached on this COM port or CAN
gnNumOfSubdevices = DeviceList[gwDevice].nNumOfSubdevices;
if (gnNumOfSubdevices > MAX_DEVICES)
gnNumOfSubdevices = MAX_DEVICES;
// --------------------------------------------------------------
// used for dynamic allocation memory for these installed devices
//
// if ((hSubDeviceList = GlobalAlloc(GHND, gnNumOfSubdevices *
// sizeof(DEVLIST))) == NULL)
// {
// MessageBox(hMainWnd, (LPCSTR)"Not Enough Memory",
// "Memory Allocation", MB_OK);
// return TRUE;
// }
//
// SubDeviceList = (LPDEVLIST)GlobalLock(hSubDeviceList);
// --------------------------------------------------------------
// 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));
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));
}
// Initialize Pulse Out count
if(gwChannel & 0x01)
{
CheckDlgButton(hDlg, IDC_PWMEnableCh0, 1);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD0),TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE0),TRUE);
sprintf(szBuffer,"%5.1f",gfGatePeriod[0]);
SendDlgItemMessage(hDlg, IDC_GATEPERIOD0, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
sprintf(szBuffer,"%5.1f",gfUpCycle[0]);
SendDlgItemMessage(hDlg, IDC_UPCYCLE0, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
}
else
{
CheckDlgButton(hDlg, IDC_PWMEnableCh0, 0);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD0),FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE0),FALSE);
}
if(gwChannel & 0x02)
{
CheckDlgButton(hDlg, IDC_PWMEnableCh1, 1);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD1),TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE1),TRUE);
sprintf(szBuffer,"%5.1f",gfGatePeriod[1]);
SendDlgItemMessage(hDlg, IDC_GATEPERIOD1, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
sprintf(szBuffer,"%5.1f",gfUpCycle[1]);
SendDlgItemMessage(hDlg, IDC_UPCYCLE1, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
}
else
{
CheckDlgButton(hDlg, IDC_PWMEnableCh1, 0);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD1),FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE1),FALSE);
}
if(gwChannel & 0x04)
{
CheckDlgButton(hDlg, IDC_PWMEnableCh2, 1);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD2),TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE2),TRUE);
sprintf(szBuffer,"%5.1f",gfGatePeriod[2]);
SendDlgItemMessage(hDlg, IDC_GATEPERIOD2, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
sprintf(szBuffer,"%5.1f",gfUpCycle[2]);
SendDlgItemMessage(hDlg, IDC_UPCYCLE2, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
}
else
{
CheckDlgButton(hDlg, IDC_PWMEnableCh2, 0);
EnableWindow(GetDlgItem(hDlg, IDC_GATEPERIOD2),FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_UPCYCLE2),FALSE);
}
return TRUE;
case WM_COMMAND :
switch (LOWORD(wParam))
{
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 gate period
//
if(IsDlgButtonChecked(hDlg, IDC_PWMEnableCh0))
{
gwChannel |= 0x01;
SendDlgItemMessage(hDlg, IDC_GATEPERIOD0, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfGatePeriod[0] = (float)atof(szBuffer);
SendDlgItemMessage(hDlg, IDC_UPCYCLE0, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfUpCycle[0] = (float)atof(szBuffer);
}
else
{
gwChannel &= 0xfe;
gfGatePeriod[0] = 0.0;
gfUpCycle[0] = 0.0;
}
if(IsDlgButtonChecked(hDlg, IDC_PWMEnableCh1))
{
gwChannel |= 0x02;
SendDlgItemMessage(hDlg, IDC_GATEPERIOD1, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfGatePeriod[1] = (float)atof(szBuffer);
SendDlgItemMessage(hDlg, IDC_UPCYCLE1, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfUpCycle[1] = (float)atof(szBuffer);
}
else
{
gwChannel &= 0xfd;
gfGatePeriod[1] = 0.0;
gfUpCycle[1] = 0.0;
}
if(IsDlgButtonChecked(hDlg, IDC_PWMEnableCh2))
{
gwChannel |= 0x04;
SendDlgItemMessage(hDlg, IDC_GATEPERIOD2, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfGatePeriod[2] = (float)atof(szBuffer);
SendDlgItemMessage(hDlg, IDC_UPCYCLE2, WM_GETTEXT, 13,
(LPARAM)(LPSTR)szBuffer) ;
gfUpCycle[2] = (float)atof(szBuffer);
}
else
{
gwChannel &= 0xfb;
gfGatePeriod[2] = 0.0;
gfUpCycle[2] = 0.0;
}
EndDialog(hDlg, 0);
return TRUE;
case IDCANCEL :
EndDialog(hDlg, 0);
return TRUE;
case IDC_PWMEnableCh0 :
if(IsDlgButtonChecked(hDlg,IDC_PWMEnableCh0))
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD0),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE0),TRUE);
SetFocus(GetDlgItem(hDlg,IDC_GATEPERIOD0));
}
else
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD0),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE0),FALSE);
}
case IDC_PWMEnableCh1 :
if(IsDlgButtonChecked(hDlg,IDC_PWMEnableCh1))
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD1),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE1),TRUE);
SetFocus(GetDlgItem(hDlg,IDC_GATEPERIOD1));
}
else
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD1),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE1),FALSE);
}
case IDC_PWMEnableCh2 :
if(IsDlgButtonChecked(hDlg,IDC_PWMEnableCh2))
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD2),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE2),TRUE);
SetFocus(GetDlgItem(hDlg,IDC_GATEPERIOD2));
}
else
{
EnableWindow(GetDlgItem(hDlg,IDC_GATEPERIOD2),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_UPCYCLE2),FALSE);
}
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -