// Sample0Dlg.cpp : implementation file // #include "stdafx.h" #include "Sample0.h" #include "Sample0Dlg.h" #include "ACCES32.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif CString *VoltsLabels[32]; CStatic *ChannelCtrls[32]; CStatic *VoltsCtrls[32]; unsigned int BaseAddress, AIM32Addr; unsigned CalSpace, Ended, Range; double Gain; bool EEPROMReady = false; bool TimerRunning = false; UINT TestTimer; ///////////////////////////////////////////////////////////////////////////// // CSample0Dlg dialog CSample0Dlg::CSample0Dlg(CWnd* pParent /*=NULL*/) : CDialog(CSample0Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CSample0Dlg) m_Instructions = _T(""); m_VoltsLabel0 = _T(""); m_VoltsLabel1 = _T(""); m_VoltsLabel10 = _T(""); m_VoltsLabel11 = _T(""); m_VoltsLabel12 = _T(""); m_VoltsLabel13 = _T(""); m_VoltsLabel14 = _T(""); m_VoltsLabel15 = _T(""); m_VoltsLabel16 = _T(""); m_VoltsLabel17 = _T(""); m_VoltsLabel18 = _T(""); m_VoltsLabel19 = _T(""); m_VoltsLabel2 = _T(""); m_VoltsLabel20 = _T(""); m_VoltsLabel21 = _T(""); m_VoltsLabel22 = _T(""); m_VoltsLabel23 = _T(""); m_VoltsLabel24 = _T(""); m_VoltsLabel25 = _T(""); m_VoltsLabel26 = _T(""); m_VoltsLabel27 = _T(""); m_VoltsLabel28 = _T(""); m_VoltsLabel29 = _T(""); m_VoltsLabel3 = _T(""); m_VoltsLabel30 = _T(""); m_VoltsLabel31 = _T(""); m_VoltsLabel4 = _T(""); m_VoltsLabel5 = _T(""); m_VoltsLabel6 = _T(""); m_VoltsLabel7 = _T(""); m_VoltsLabel8 = _T(""); m_VoltsLabel9 = _T(""); m_BaseEdit = _T("300"); m_AIM32Edit = _T("320"); m_EndGroup = 0; m_GainComboBox = 0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CSample0Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSample0Dlg) DDX_Control(pDX, IDC_GainComboBox, m_GainComboCtrl); DDX_Control(pDX, IDC_VoltsLabel9, m_VoltsLabel9Ctrl); DDX_Control(pDX, IDC_VoltsLabel8, m_VoltsLabel8Ctrl); DDX_Control(pDX, IDC_VoltsLabel7, m_VoltsLabel7Ctrl); DDX_Control(pDX, IDC_VoltsLabel6, m_VoltsLabel6Ctrl); DDX_Control(pDX, IDC_VoltsLabel5, m_VoltsLabel5Ctrl); DDX_Control(pDX, IDC_VoltsLabel4, m_VoltsLabel4Ctrl); DDX_Control(pDX, IDC_VoltsLabel31, m_VoltsLabel31Ctrl); DDX_Control(pDX, IDC_VoltsLabel30, m_VoltsLabel30Ctrl); DDX_Control(pDX, IDC_VoltsLabel3, m_VoltsLabel3Ctrl); DDX_Control(pDX, IDC_VoltsLabel29, m_VoltsLabel29Ctrl); DDX_Control(pDX, IDC_VoltsLabel28, m_VoltsLabel28Ctrl); DDX_Control(pDX, IDC_VoltsLabel27, m_VoltsLabel27Ctrl); DDX_Control(pDX, IDC_VoltsLabel26, m_VoltsLabel26Ctrl); DDX_Control(pDX, IDC_VoltsLabel25, m_VoltsLabel25Ctrl); DDX_Control(pDX, IDC_VoltsLabel24, m_VoltsLabel24Ctrl); DDX_Control(pDX, IDC_VoltsLabel23, m_VoltsLabel23Ctrl); DDX_Control(pDX, IDC_VoltsLabel22, m_VoltsLabel22Ctrl); DDX_Control(pDX, IDC_VoltsLabel21, m_VoltsLabel21Ctrl); DDX_Control(pDX, IDC_VoltsLabel20, m_VoltsLabel20Ctrl); DDX_Control(pDX, IDC_VoltsLabel2, m_VoltsLabel2Ctrl); DDX_Control(pDX, IDC_VoltsLabel19, m_VoltsLabel19Ctrl); DDX_Control(pDX, IDC_VoltsLabel18, m_VoltsLabel18Ctrl); DDX_Control(pDX, IDC_VoltsLabel17, m_VoltsLabel17Ctrl); DDX_Control(pDX, IDC_VoltsLabel16, m_VoltsLabel16Ctrl); DDX_Control(pDX, IDC_VoltsLabel15, m_VoltsLabel15Ctrl); DDX_Control(pDX, IDC_VoltsLabel14, m_VoltsLabel14Ctrl); DDX_Control(pDX, IDC_VoltsLabel13, m_VoltsLabel13Ctrl); DDX_Control(pDX, IDC_VoltsLabel12, m_VoltsLabel12Ctrl); DDX_Control(pDX, IDC_VoltsLabel11, m_VoltsLabel11Ctrl); DDX_Control(pDX, IDC_VoltsLabel10, m_VoltsLabel10Ctrl); DDX_Control(pDX, IDC_VoltsLabel1, m_VoltsLabel1Ctrl); DDX_Control(pDX, IDC_VoltsLabel0, m_VoltsLabel0Ctrl); DDX_Control(pDX, IDC_ChannelLabel9, m_ChannelLabel9Ctrl); DDX_Control(pDX, IDC_ChannelLabel8, m_ChannelLabel8Ctrl); DDX_Control(pDX, IDC_ChannelLabel7, m_ChannelLabel7Ctrl); DDX_Control(pDX, IDC_ChannelLabel5, m_ChannelLabel5Ctrl); DDX_Control(pDX, IDC_ChannelLabel6, m_ChannelLabel6Ctrl); DDX_Control(pDX, IDC_ChannelLabel4, m_ChannelLabel4Ctrl); DDX_Control(pDX, IDC_ChannelLabel31, m_ChannelLabel31Ctrl); DDX_Control(pDX, IDC_ChannelLabel30, m_ChannelLabel30Ctrl); DDX_Control(pDX, IDC_ChannelLabel3, m_ChannelLabel3Ctrl); DDX_Control(pDX, IDC_ChannelLabel29, m_ChannelLabel29Ctrl); DDX_Control(pDX, IDC_ChannelLabel28, m_ChannelLabel28Ctrl); DDX_Control(pDX, IDC_ChannelLabel27, m_ChannelLabel27Ctrl); DDX_Control(pDX, IDC_ChannelLabel26, m_ChannelLabel26Ctrl); DDX_Control(pDX, IDC_ChannelLabel25, m_ChannelLabel25Ctrl); DDX_Control(pDX, IDC_ChannelLabel24, m_ChannelLabel24Ctrl); DDX_Control(pDX, IDC_ChannelLabel23, m_ChannelLabel23Ctrl); DDX_Control(pDX, IDC_ChannelLabel22, m_ChannelLabel22Ctrl); DDX_Control(pDX, IDC_ChannelLabel21, m_ChannelLabel21Ctrl); DDX_Control(pDX, IDC_ChannelLabel20, m_ChannelLabel20Ctrl); DDX_Control(pDX, IDC_ChannelLabel2, m_ChannelLabel2Ctrl); DDX_Control(pDX, IDC_ChannelLabel19, m_ChannelLabel19Ctrl); DDX_Control(pDX, IDC_ChannelLabel18, m_ChannelLabel18Ctrl); DDX_Control(pDX, IDC_ChannelLabel17, m_ChannelLabel17Ctrl); DDX_Control(pDX, IDC_ChannelLabel16, m_ChannelLabel16Ctrl); DDX_Control(pDX, IDC_ChannelLabel15, m_ChannelLabel15Ctrl); DDX_Control(pDX, IDC_ChannelLabel14, m_ChannelLabel14Ctrl); DDX_Control(pDX, IDC_ChannelLabel13, m_ChannelLabel13Ctrl); DDX_Control(pDX, IDC_ChannelLabel12, m_ChannelLabel12Ctrl); DDX_Control(pDX, IDC_ChannelLabel11, m_ChannelLabel11Ctrl); DDX_Control(pDX, IDC_ChannelLabel10, m_ChannelLabel10Ctrl); DDX_Control(pDX, IDC_ChannelLabel1, m_ChannelLabel1Ctrl); DDX_Control(pDX, IDC_ChannelLabel0, m_ChannelLabel0Ctrl); DDX_Control(pDX, IDC_Volts2Label, m_Volts2LabelCtrl); DDX_Control(pDX, IDC_Channel2Label, m_Channel2LabelCtrl); DDX_Control(pDX, IDOK, m_StartButtonCtrl); DDX_Control(pDX, IDCANCEL, m_ExitButtonCtrl); DDX_Control(pDX, IDC_BaseEdit, m_BaseEditCtrl); DDX_Control(pDX, IDC_AIM32Edit, m_AIM32EditCtrl); DDX_Control(pDX, IDC_EndedGroup, m_EndCtrl); DDX_Text(pDX, IDC_Instructions, m_Instructions); DDX_Text(pDX, IDC_VoltsLabel0, m_VoltsLabel0); DDX_Text(pDX, IDC_VoltsLabel1, m_VoltsLabel1); DDX_Text(pDX, IDC_VoltsLabel10, m_VoltsLabel10); DDX_Text(pDX, IDC_VoltsLabel11, m_VoltsLabel11); DDX_Text(pDX, IDC_VoltsLabel12, m_VoltsLabel12); DDX_Text(pDX, IDC_VoltsLabel13, m_VoltsLabel13); DDX_Text(pDX, IDC_VoltsLabel14, m_VoltsLabel14); DDX_Text(pDX, IDC_VoltsLabel15, m_VoltsLabel15); DDX_Text(pDX, IDC_VoltsLabel16, m_VoltsLabel16); DDX_Text(pDX, IDC_VoltsLabel17, m_VoltsLabel17); DDX_Text(pDX, IDC_VoltsLabel18, m_VoltsLabel18); DDX_Text(pDX, IDC_VoltsLabel19, m_VoltsLabel19); DDX_Text(pDX, IDC_VoltsLabel2, m_VoltsLabel2); DDX_Text(pDX, IDC_VoltsLabel20, m_VoltsLabel20); DDX_Text(pDX, IDC_VoltsLabel21, m_VoltsLabel21); DDX_Text(pDX, IDC_VoltsLabel22, m_VoltsLabel22); DDX_Text(pDX, IDC_VoltsLabel23, m_VoltsLabel23); DDX_Text(pDX, IDC_VoltsLabel24, m_VoltsLabel24); DDX_Text(pDX, IDC_VoltsLabel25, m_VoltsLabel25); DDX_Text(pDX, IDC_VoltsLabel26, m_VoltsLabel26); DDX_Text(pDX, IDC_VoltsLabel27, m_VoltsLabel27); DDX_Text(pDX, IDC_VoltsLabel28, m_VoltsLabel28); DDX_Text(pDX, IDC_VoltsLabel29, m_VoltsLabel29); DDX_Text(pDX, IDC_VoltsLabel3, m_VoltsLabel3); DDX_Text(pDX, IDC_VoltsLabel30, m_VoltsLabel30); DDX_Text(pDX, IDC_VoltsLabel31, m_VoltsLabel31); DDX_Text(pDX, IDC_VoltsLabel4, m_VoltsLabel4); DDX_Text(pDX, IDC_VoltsLabel5, m_VoltsLabel5); DDX_Text(pDX, IDC_VoltsLabel6, m_VoltsLabel6); DDX_Text(pDX, IDC_VoltsLabel7, m_VoltsLabel7); DDX_Text(pDX, IDC_VoltsLabel8, m_VoltsLabel8); DDX_Text(pDX, IDC_VoltsLabel9, m_VoltsLabel9); DDX_Text(pDX, IDC_BaseEdit, m_BaseEdit); DDX_Text(pDX, IDC_AIM32Edit, m_AIM32Edit); DDX_Radio(pDX, IDC_SERadio, m_EndGroup); DDX_CBIndex(pDX, IDC_GainComboBox, m_GainComboBox); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSample0Dlg, CDialog) //{{AFX_MSG_MAP(CSample0Dlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_TIMER() ON_BN_CLICKED(IDCANCEL, OnExitButtonClick) ON_BN_CLICKED(IDOK, OnStartButtonClick) ON_BN_CLICKED(IDC_SERadio, OnSERadioClick) ON_BN_CLICKED(IDC_DiffRadio, OnDiffRadioClick) ON_CBN_SELCHANGE(IDC_GainComboBox, OnSelchangeGainComboBox) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSample0Dlg message handlers BOOL CSample0Dlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here VoltsLabels[0] = &m_VoltsLabel0; VoltsLabels[1] = &m_VoltsLabel1; VoltsLabels[2] = &m_VoltsLabel2; VoltsLabels[3] = &m_VoltsLabel3; VoltsLabels[4] = &m_VoltsLabel4; VoltsLabels[5] = &m_VoltsLabel5; VoltsLabels[6] = &m_VoltsLabel6; VoltsLabels[7] = &m_VoltsLabel7; VoltsLabels[8] = &m_VoltsLabel8; VoltsLabels[9] = &m_VoltsLabel9; VoltsLabels[10] = &m_VoltsLabel10; VoltsLabels[11] = &m_VoltsLabel11; VoltsLabels[12] = &m_VoltsLabel12; VoltsLabels[13] = &m_VoltsLabel13; VoltsLabels[14] = &m_VoltsLabel14; VoltsLabels[15] = &m_VoltsLabel15; VoltsLabels[16] = &m_VoltsLabel16; VoltsLabels[17] = &m_VoltsLabel17; VoltsLabels[18] = &m_VoltsLabel18; VoltsLabels[19] = &m_VoltsLabel19; VoltsLabels[20] = &m_VoltsLabel20; VoltsLabels[21] = &m_VoltsLabel21; VoltsLabels[22] = &m_VoltsLabel22; VoltsLabels[23] = &m_VoltsLabel23; VoltsLabels[24] = &m_VoltsLabel24; VoltsLabels[25] = &m_VoltsLabel25; VoltsLabels[26] = &m_VoltsLabel26; VoltsLabels[27] = &m_VoltsLabel27; VoltsLabels[28] = &m_VoltsLabel28; VoltsLabels[29] = &m_VoltsLabel29; VoltsLabels[30] = &m_VoltsLabel30; VoltsLabels[31] = &m_VoltsLabel31; VoltsCtrls[0] = &m_VoltsLabel0Ctrl; VoltsCtrls[1] = &m_VoltsLabel1Ctrl; VoltsCtrls[2] = &m_VoltsLabel2Ctrl; VoltsCtrls[3] = &m_VoltsLabel3Ctrl; VoltsCtrls[4] = &m_VoltsLabel4Ctrl; VoltsCtrls[5] = &m_VoltsLabel5Ctrl; VoltsCtrls[6] = &m_VoltsLabel6Ctrl; VoltsCtrls[7] = &m_VoltsLabel7Ctrl; VoltsCtrls[8] = &m_VoltsLabel8Ctrl; VoltsCtrls[9] = &m_VoltsLabel9Ctrl; VoltsCtrls[10] = &m_VoltsLabel10Ctrl; VoltsCtrls[11] = &m_VoltsLabel11Ctrl; VoltsCtrls[12] = &m_VoltsLabel12Ctrl; VoltsCtrls[13] = &m_VoltsLabel13Ctrl; VoltsCtrls[14] = &m_VoltsLabel14Ctrl; VoltsCtrls[15] = &m_VoltsLabel15Ctrl; VoltsCtrls[16] = &m_VoltsLabel16Ctrl; VoltsCtrls[17] = &m_VoltsLabel17Ctrl; VoltsCtrls[18] = &m_VoltsLabel18Ctrl; VoltsCtrls[19] = &m_VoltsLabel19Ctrl; VoltsCtrls[20] = &m_VoltsLabel20Ctrl; VoltsCtrls[21] = &m_VoltsLabel21Ctrl; VoltsCtrls[22] = &m_VoltsLabel22Ctrl; VoltsCtrls[23] = &m_VoltsLabel23Ctrl; VoltsCtrls[24] = &m_VoltsLabel24Ctrl; VoltsCtrls[25] = &m_VoltsLabel25Ctrl; VoltsCtrls[26] = &m_VoltsLabel26Ctrl; VoltsCtrls[27] = &m_VoltsLabel27Ctrl; VoltsCtrls[28] = &m_VoltsLabel28Ctrl; VoltsCtrls[29] = &m_VoltsLabel29Ctrl; VoltsCtrls[30] = &m_VoltsLabel30Ctrl; VoltsCtrls[31] = &m_VoltsLabel31Ctrl; ChannelCtrls[0] = &m_ChannelLabel0Ctrl; ChannelCtrls[1] = &m_ChannelLabel1Ctrl; ChannelCtrls[2] = &m_ChannelLabel2Ctrl; ChannelCtrls[3] = &m_ChannelLabel3Ctrl; ChannelCtrls[4] = &m_ChannelLabel4Ctrl; ChannelCtrls[5] = &m_ChannelLabel5Ctrl; ChannelCtrls[6] = &m_ChannelLabel6Ctrl; ChannelCtrls[7] = &m_ChannelLabel7Ctrl; ChannelCtrls[8] = &m_ChannelLabel8Ctrl; ChannelCtrls[9] = &m_ChannelLabel9Ctrl; ChannelCtrls[10] = &m_ChannelLabel10Ctrl; ChannelCtrls[11] = &m_ChannelLabel11Ctrl; ChannelCtrls[12] = &m_ChannelLabel12Ctrl; ChannelCtrls[13] = &m_ChannelLabel13Ctrl; ChannelCtrls[14] = &m_ChannelLabel14Ctrl; ChannelCtrls[15] = &m_ChannelLabel15Ctrl; ChannelCtrls[16] = &m_ChannelLabel16Ctrl; ChannelCtrls[17] = &m_ChannelLabel17Ctrl; ChannelCtrls[18] = &m_ChannelLabel18Ctrl; ChannelCtrls[19] = &m_ChannelLabel19Ctrl; ChannelCtrls[20] = &m_ChannelLabel20Ctrl; ChannelCtrls[21] = &m_ChannelLabel21Ctrl; ChannelCtrls[22] = &m_ChannelLabel22Ctrl; ChannelCtrls[23] = &m_ChannelLabel23Ctrl; ChannelCtrls[24] = &m_ChannelLabel24Ctrl; ChannelCtrls[25] = &m_ChannelLabel25Ctrl; ChannelCtrls[26] = &m_ChannelLabel26Ctrl; ChannelCtrls[27] = &m_ChannelLabel27Ctrl; ChannelCtrls[28] = &m_ChannelLabel28Ctrl; ChannelCtrls[29] = &m_ChannelLabel29Ctrl; ChannelCtrls[30] = &m_ChannelLabel30Ctrl; ChannelCtrls[31] = &m_ChannelLabel31Ctrl; CalSpace = 0; Ended = 1; Range = 0; Gain = 0.5; if (InPortB(0x61) == 0xAA55) { MessageBox("ACCESNT.SYS not detected. Please copy ACCESNT.SYS into [NT]/system32/drivers and re-run this sample.", "Warning", MB_OK); } m_Instructions= "Instructions:\r\n" "Enter the correct base address for the 104-AIO12-8\r\n" "in the appopriate edit box.\r\n" "Enter the correct base address for the 104-AIM-32\r\n" "in the appropriate edit box.\r\n" "\r\n" "Select the Gain, Mode and Single Ended or\r\n" "Differential that you want, then click the 'Start'\r\n" "button."; UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CSample0Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CSample0Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CSample0Dlg::OnTimer(UINT nIDEvent) { TimerRunning = true; int chan, counts, MaxChannels; unsigned long timeout; double volts; char TempString[255]; UpdateData(true); if (Ended == 0) MaxChannels = 16; else MaxChannels = 32; for (chan = 0; chan < MaxChannels; chan++) { timeout = 65535; OutPortB(AIM32Addr, chan + Range); // write AIM-32 channel while (CheckForBusy(AIM32Addr + 1) && (timeout > 0)) timeout--; timeout = 65535; OutPortB(BaseAddress + 2, 0); // write channel while (!CheckForEOC(BaseAddress) && (timeout > 0)) timeout--; if (timeout == 0) { *VoltsLabels[chan] = "A/D Timeout"; } // end if timeout else { counts = InPort(BaseAddress + 2); volts = ((counts & 0xFFF) * (5.0 / Gain)) / 4096.0; sprintf(TempString, "%9.8f", volts); *VoltsLabels[chan] = TempString; } // end else } // end for chan UpdateData(false); CDialog::OnTimer(nIDEvent); } void CSample0Dlg::OnExitButtonClick() { exit(0); } void CSample0Dlg::OnStartButtonClick() { if (TimerRunning) { KillTimer(TestTimer); TimerRunning = false; m_StartButtonCtrl.SetWindowText("Start Test"); m_BaseEditCtrl.EnableWindow(true); m_AIM32EditCtrl.EnableWindow(true); } // end if else { m_StartButtonCtrl.SetWindowText("Abort Test"); m_BaseEditCtrl.EnableWindow(false); m_AIM32EditCtrl.EnableWindow(false); UpdateData(true); sscanf(m_BaseEdit.GetBuffer(0), "%x", &BaseAddress); sscanf(m_AIM32Edit.GetBuffer(0), "%x", &AIM32Addr); OutPort(AIM32Addr + 1, 0x10 + Ended + CalSpace); TestTimer = SetTimer(1, 500, NULL); } // end else } // end OnStartButtonClick bool CSample0Dlg::CheckForEOC(int Address) { unsigned short EOCCheck; EOCCheck = InPortB(Address); return ((EOCCheck & 0x80) == 0x80); } bool CSample0Dlg::CheckForBusy(int Address) { unsigned short BusyCheck; BusyCheck = InPortB(Address); return ((BusyCheck & 0x40) == 0x40); } void CSample0Dlg::OnSERadioClick() { int i; Ended = 1; m_Channel2LabelCtrl.ShowWindow(SW_SHOW); m_Volts2LabelCtrl.ShowWindow(SW_SHOW); for (i = 16; i < 32; i++) { ChannelCtrls[i]->ShowWindow(SW_SHOW); VoltsCtrls[i]->ShowWindow(SW_SHOW); } // end for i OutPortB(AIM32Addr + 1, Ended + CalSpace + 0x10); m_EndGroup = 0; UpdateData(false); } void CSample0Dlg::OnDiffRadioClick() { int i; Ended = 0; m_Channel2LabelCtrl.ShowWindow(SW_HIDE); m_Volts2LabelCtrl.ShowWindow(SW_HIDE); for (i = 16; i < 32; i++) { ChannelCtrls[i]->ShowWindow(SW_HIDE); VoltsCtrls[i]->ShowWindow(SW_HIDE); } // end for i OutPortB(AIM32Addr + 1, Ended + CalSpace + 0x10); m_EndGroup = 1; UpdateData(false); } void CSample0Dlg::OnSelchangeGainComboBox() { UpdateData(true); if (m_GainComboBox == 0) { Range = 0x00; m_GainComboCtrl.SetTopIndex(0); Gain = 0.5; } else if (m_GainComboBox == 1) { Range = 0x20; m_GainComboCtrl.SetTopIndex(1); Gain = 1; } else if (m_GainComboBox == 2) { Range = 0x40; m_GainComboCtrl.SetTopIndex(2); Gain = 2; } else if (m_GainComboBox == 3) { Range = 0x60; m_GainComboCtrl.SetTopIndex(3); Gain = 50; } else if (m_GainComboBox == 4) { Range = 0x80; m_GainComboCtrl.SetTopIndex(4); Gain = 100; } else if (m_GainComboBox == 5) { Range = 0xA0; m_GainComboCtrl.SetTopIndex(5); Gain = 200; } UpdateData(false); }