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

📄 pulsepwm.c

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 C
📖 第 1 页 / 共 3 页
字号:
        // -----------------------------------------------------------
        // 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 + -