void mainFrame::OnMenuProfile(wxCommandEvent& event) { avrProfile* pProfile = m_mProfiles[event.GetId()]; if(!pProfile) return; if(pProfile->GetDeviceType().IsEmpty()) return; m_lFrequency = pProfile->GetFrequency(); m_pSpnFreq->SetValue(m_lFrequency); SetDeviceType(pProfile->GetDeviceType()); }
bool CVolumeOutMaster::Init() { if ( !mixerGetNumDevs() ) return false; // Getting Mixer ID HWAVEOUT hwaveOut; MMRESULT mmResult; WAVEFORMATEX WaveFmt; SetDeviceType( &WaveFmt ); mmResult = waveOutOpen( &hwaveOut, WAVE_MAPPER, &WaveFmt, 0L, 0L, CALLBACK_NULL ); if ( mmResult != MMSYSERR_NOERROR ) { qDebug(".MasterOutputVolume: FAILURE: Could not open WaveOut Mapper. mmResult=%d\n", mmResult ); return false; } else { mmResult = mixerGetID( (HMIXEROBJ)hwaveOut, &m_uMixerID, MIXER_OBJECTF_HWAVEOUT ); waveOutClose( hwaveOut ); if ( mmResult != MMSYSERR_NOERROR ) { qDebug(".MasterOutputVolume: FAILURE: WaveOut Mapper in Mixer is not available. mmResult=%d\n", mmResult ); return false; } } //////////////// Exposing Window to Mixer //////////////WNDCLASSEX wcx; //////////////memset( &wcx, 0, sizeof(WNDCLASSEX) ); //////////////wcx.cbSize = sizeof(WNDCLASSEX); //////////////wcx.lpszClassName = _T(WND_CLASS_NAME); //////////////wcx.lpfnWndProc = (WNDPROC)MixerWndProc; //////////////::RegisterClassEx(&wcx); //////////////m_hWnd = CreateWindow(_T(WND_CLASS_NAME), ////////////// _T(WND_NAME), ////////////// WS_POPUP | WS_DISABLED, ////////////// 0, 0, 0, 0, ////////////// NULL, NULL, NULL, NULL ); //////////////if ( !m_hWnd ) //////////////{ ////////////// qDebug(".MasterOutputVolume: FAILURE: Could not create internal window.\n" ); ////////////// return false; //////////////} //////////////::ShowWindow(m_hWnd, SW_HIDE); //////////////mmResult = mixerOpen( (LPHMIXER)&m_dwMixerHandle, m_uMixerID, (DWORD)m_hWnd, 0L, CALLBACK_WINDOW ); mmResult = mixerOpen( (LPHMIXER)&m_dwMixerHandle, m_uMixerID, NULL, 0L, CALLBACK_NULL ); if ( mmResult != MMSYSERR_NOERROR ) { qDebug(".MasterOutputVolume: FAILURE: Could not open Mixer. mmResult=%d\n", mmResult ); //////////////::DestroyWindow( m_hWnd ); return false; } return true; }
int SetDeviceType_1260(int identifier,int fd, int cmd, char *data, int vallen) { /*设置设备型号*/ DEBUG(DL_DEBUG, "Set Device Type\n"); char dtype[16] = {0}; unsigned char sdata[256] = {0}; int totallen = 0; int cmdlen = sizeof(int); int retlen = sizeof(int); int ret; memset(dtype, 0x000, strlen(dtype)); memcpy(dtype, data, vallen); ret = SetDeviceType(DTYPECONFIG_NAME, dtype); totallen = MSGINFOHEAD + cmdlen + vallen + retlen; msgPacket(identifier,sdata, STRING_TYPE, totallen, cmd, ret); memcpy(sdata + totallen - vallen, data, vallen); DEBUG(DL_DEBUG, "SetDeviceType...cmd =0x%x\n", cmd); send(fd, sdata, totallen, 0); return 0; }
mainFrame::mainFrame(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size) : m_sDeviceType(wxEmptyString), m_lFrequency(16000000), m_nLogMax(1000), m_bScrollLock(false), m_bInit(false), m_pFileLog(NULL), m_pFnFirmware(NULL), m_pFnCode(NULL), m_pFnConfig(NULL), m_pFnVcd(NULL) { //(*Initialize(mainFrame) wxMenuItem* MenuItem2; wxFlexGridSizer* FlexGridSizer1; wxFlexGridSizer* FlexGridSizer2; wxMenu* Menu1; wxFlexGridSizer* FlexGridSizer4; wxStaticText* StaticText1; wxFlexGridSizer* FlexGridSizer3; wxStaticText* StaticText6; wxMenu* Menu2; Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY")); m_pAuiManager = new wxAuiManager(this, wxAUI_MGR_DEFAULT); m_pToolbarControl = new wxAuiToolBar(this, ID_TOOLBAR_CONTROL, wxPoint(75,96), wxDefaultSize, wxAUI_TB_DEFAULT_STYLE); m_pToolbarControl->AddTool(ID_TOOLBARITEM_START, _("Start"), play_xpm, wxNullBitmap, wxITEM_NORMAL, _("Start simulator"), wxEmptyString, NULL); m_pToolbarControl->AddTool(ID_TOOLBARITEM_PAUSE, _("Pause"), pause_xpm, wxNullBitmap, wxITEM_NORMAL, _("Pause simulator"), wxEmptyString, NULL); m_pToolbarControl->AddTool(ID_TOOLBARITEM_STOP, _("Stop"), stop_xpm, wxNullBitmap, wxITEM_NORMAL, _("Stop simulator"), wxEmptyString, NULL); m_pToolbarControl->AddTool(ID_TOOLBARITEM_RESET, _("Reset"), reset_xpm, wxNullBitmap, wxITEM_NORMAL, _("Reset MCU"), wxEmptyString, NULL); m_pToolbarControl->Realize(); m_pAuiManager->AddPane(m_pToolbarControl, wxAuiPaneInfo().Name(_T("ToolbarControl")).ToolbarPane().Caption(_("Toolbar")).CloseButton(false).Layer(10).Top().Gripper()); m_pToolbarFile = new wxAuiToolBar(this, ID_AUITOOL_FILE, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE); m_pToolbarFile->AddTool(ID_TOOLBARITEM_LOADHEX, _("Load Hex"), wxArtProvider::GetBitmap(wxART_MAKE_ART_ID_FROM_STR(_T("wxART_FOLDER")),wxART_TOOLBAR), wxNullBitmap, wxITEM_NORMAL, _("Load Intel Hex File"), wxEmptyString, NULL); m_pToolbarFile->Realize(); m_pAuiManager->AddPane(m_pToolbarFile, wxAuiPaneInfo().Name(_T("ToolbarFile")).ToolbarPane().Caption(_("File")).CloseButton(false).Layer(10).Top().Gripper()); m_pPnlMain = new wxPanel(this, ID_PNLMAIN, wxPoint(172,246), wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PNLMAIN")); FlexGridSizer1 = new wxFlexGridSizer(0, 1, 0, 0); FlexGridSizer1->AddGrowableCol(0); FlexGridSizer1->AddGrowableRow(2); FlexGridSizer3 = new wxFlexGridSizer(0, 0, 0, 0); FlexGridSizer3->AddGrowableCol(6); StaticText1 = new wxStaticText(m_pPnlMain, wxID_ANY, _("MCU"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("wxID_ANY")); FlexGridSizer3->Add(StaticText1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pLblDeviceType = new wxStaticText(m_pPnlMain, ID_LBLDEVICETYPE, _("-"), wxDefaultPosition, wxSize(100,17), wxALIGN_CENTRE, _T("ID_LBLDEVICETYPE")); m_pLblDeviceType->SetBackgroundColour(wxColour(255,255,255)); FlexGridSizer3->Add(m_pLblDeviceType, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pLblFrequency = new wxStaticText(m_pPnlMain, ID_LBLFREQUENCY, _("Frequency"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_LBLFREQUENCY")); FlexGridSizer3->Add(m_pLblFrequency, 1, wxALL|wxEXPAND|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); m_pSpnFreq = new wxSpinCtrl(m_pPnlMain, ID_SPNFREQ, _T("0"), wxDefaultPosition, wxDefaultSize, 0, 0, 99999999, 0, _T("ID_SPNFREQ")); m_pSpnFreq->SetValue(_T("0")); FlexGridSizer3->Add(m_pSpnFreq, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); StaticText6 = new wxStaticText(m_pPnlMain, wxID_ANY, _("EEPROM"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("wxID_ANY")); FlexGridSizer3->Add(StaticText6, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pLblEeprom = new wxStaticText(m_pPnlMain, wxID_ANY, _("-"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("wxID_ANY")); FlexGridSizer3->Add(m_pLblEeprom, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer3->Add(-1,-1,1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer1->Add(FlexGridSizer3, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer4 = new wxFlexGridSizer(0, 3, 0, 0); FlexGridSizer4->AddGrowableCol(1); StaticText2 = new wxStaticText(m_pPnlMain, ID_STATICTEXT1, _("Program Memory"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1")); FlexGridSizer4->Add(StaticText2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pGaugeProgMem = new wxGauge(m_pPnlMain, ID_GAUGEPROGMEM, 100, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_GAUGEPROGMEM")); FlexGridSizer4->Add(m_pGaugeProgMem, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pLblProgMem = new wxStaticText(m_pPnlMain, ID_LBLPROGMEM, _("00000/00000"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_LBLPROGMEM")); FlexGridSizer4->Add(m_pLblProgMem, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); StaticText3 = new wxStaticText(m_pPnlMain, ID_STATICTEXT2, _("SRAM"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2")); FlexGridSizer4->Add(StaticText3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pGaugeSram = new wxGauge(m_pPnlMain, ID_GUAGESRAM, 100, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_GUAGESRAM")); FlexGridSizer4->Add(m_pGaugeSram, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pLblSram = new wxStaticText(m_pPnlMain, ID_LBLSRAM, _("00000/00000"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_LBLSRAM")); FlexGridSizer4->Add(m_pLblSram, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer1->Add(FlexGridSizer4, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer2 = new wxFlexGridSizer(0, 1, 0, 0); FlexGridSizer2->AddGrowableCol(0); FlexGridSizer2->AddGrowableRow(0); m_pTxtLog = new wxTextCtrl(m_pPnlMain, ID_TXTLOG, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY, wxDefaultValidator, _T("ID_TXTLOG")); FlexGridSizer2->Add(m_pTxtLog, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); FlexGridSizer1->Add(FlexGridSizer2, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); m_pPnlMain->SetSizer(FlexGridSizer1); FlexGridSizer1->Fit(m_pPnlMain); FlexGridSizer1->SetSizeHints(m_pPnlMain); m_pAuiManager->AddPane(m_pPnlMain, wxAuiPaneInfo().Name(_T("PanelMain")).CenterPane().Caption(_("Main Panel")).FloatingPosition(wxPoint(0,0)).FloatingSize(wxSize(0,0))); m_pAuiManager->Update(); m_pMenubar = new wxMenuBar(); Menu1 = new wxMenu(); m_pMenuitemFirmware = new wxMenuItem(Menu1, ID_MENUITEM_FIRMWARE, _("Firmware"), _("Load firmware"), wxITEM_NORMAL); Menu1->Append(m_pMenuitemFirmware); m_pMenuitemCode = new wxMenuItem(Menu1, ID_MENUITEM_CODE, _("Load Code"), _("Load code"), wxITEM_NORMAL); Menu1->Append(m_pMenuitemCode); m_pMenuitemLoadHex = new wxMenuItem(Menu1, ID_MENUITEM_LOADHEX, _("Load Hex\tCtrl-O"), _("Load Intel hex file"), wxITEM_NORMAL); Menu1->Append(m_pMenuitemLoadHex); m_pMenuitemQuit = new wxMenuItem(Menu1, idMenuQuit, _("Quit\tAlt-F4"), _("Quit application"), wxITEM_NORMAL); Menu1->Append(m_pMenuitemQuit); m_pMenubar->Append(Menu1, _("&File")); m_pMenuDevice = new wxMenu(); m_pMenuProfile = new wxMenu(); m_pMenuitemModifyProfile = new wxMenuItem(m_pMenuProfile, ID_MENUITEM_MODIFYPROFILE, _("Modify Profiles\tShift+Ctrl+P"), _("Add, modify or remove profile"), wxITEM_NORMAL); m_pMenuProfile->Append(m_pMenuitemModifyProfile); m_pMenuDevice->Append(ID_MENUITEM_PROFILE, _("Profile"), m_pMenuProfile, wxEmptyString); m_pMenuMcu = new wxMenu(); m_pMenuMcu->Break(); m_pMenuDevice->Append(ID_MENUITEM_MCU, _("MCU"), m_pMenuMcu, wxEmptyString); m_pMenuitemWipe = new wxMenuItem(m_pMenuDevice, ID_MENUITEM_WIPE, _("Wipe device"), _("Wipe all data from device"), wxITEM_NORMAL); m_pMenuDevice->Append(m_pMenuitemWipe); m_pMenuitemSerial = new wxMenuItem(m_pMenuDevice, ID_MENUITEM_SERIAL, _("Enable Serial Port"), _("Enable the serial port on the MCU"), wxITEM_CHECK); m_pMenuDevice->Append(m_pMenuitemSerial); m_pMenuitemVcd = new wxMenuItem(m_pMenuDevice, ID_MENUITEM_VCD, _("Enable VCD logging"), wxEmptyString, wxITEM_CHECK); m_pMenuDevice->Append(m_pMenuitemVcd); m_pMenuitemVcdFile = new wxMenuItem(m_pMenuDevice, ID_MENUITEM_VCDFILE, _("Select VCD log file"), _("Selects the file to log VCD traces to"), wxITEM_NORMAL); m_pMenuDevice->Append(m_pMenuitemVcdFile); m_pMenubar->Append(m_pMenuDevice, _("Device")); Menu3 = new wxMenu(); m_pMenuitemStart = new wxMenuItem(Menu3, ID_MENUITEM_START, _("Start\tF9"), _("Start MCU"), wxITEM_NORMAL); m_pMenuitemStart->SetBitmap(play_xpm); Menu3->Append(m_pMenuitemStart); m_pMenuitemPause = new wxMenuItem(Menu3, ID_MENUITEM_PAUSE, _("Pause"), _("Pause MCU"), wxITEM_NORMAL); m_pMenuitemPause->SetBitmap(pause_xpm); Menu3->Append(m_pMenuitemPause); m_pMenuitemStop = new wxMenuItem(Menu3, ID_MENUITEM_STOP, _("Stop\tCtrl-F9"), _("Stop MCU"), wxITEM_NORMAL); m_pMenuitemStop->SetBitmap(stop_xpm); Menu3->Append(m_pMenuitemStop); m_pMenuitemReset = new wxMenuItem(Menu3, ID_MENUITEM_RESET, _("Reset\tCtrl-R"), _("Reset MCU"), wxITEM_NORMAL); m_pMenuitemReset->SetBitmap(reset_xpm); Menu3->Append(m_pMenuitemReset); m_pMenubar->Append(Menu3, _("Control")); Menu4 = new wxMenu(); m_pMenuitemToolbarFile = new wxMenuItem(Menu4, ID_MENUITEM_TOOLBARFILE, _("Show file toobar"), _("Show or hide the file toolbar"), wxITEM_CHECK); Menu4->Append(m_pMenuitemToolbarFile); m_pMenuitemToolbarControl = new wxMenuItem(Menu4, ID_MENUITEM_TOOLBARCONTROL, _("Show control toolbar"), _("Shows or hides the control toolbar"), wxITEM_CHECK); Menu4->Append(m_pMenuitemToolbarControl); m_pMenuitemResetLayout = new wxMenuItem(Menu4, ID_MENUITEM_LAYOUT, _("Reset layout"), _("Resets the application interface"), wxITEM_NORMAL); Menu4->Append(m_pMenuitemResetLayout); m_pMenubar->Append(Menu4, _("View")); m_pMenuLog = new wxMenu(); m_pMenuitemLogToFile = new wxMenuItem(m_pMenuLog, ID_MENUITEM_LOGTOFILE, _("Log to file"), _("Record log entries to file"), wxITEM_CHECK); m_pMenuLog->Append(m_pMenuitemLogToFile); m_pMenuitemLogVerbose = new wxMenuItem(m_pMenuLog, ID_MENUITEM_LOGVERBOSE, _("Verbose"), _("Enable verbose logging"), wxITEM_CHECK); m_pMenuLog->Append(m_pMenuitemLogVerbose); m_pMenubar->Append(m_pMenuLog, _("Log")); Menu2 = new wxMenu(); m_pMenuitemLogmcu = new wxMenuItem(Menu2, ID_MENUITEM_LOGMCU, _("Log MCU details"), _("Prints details of current MCU to log"), wxITEM_NORMAL); Menu2->Append(m_pMenuitemLogmcu); MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info"), wxITEM_NORMAL); Menu2->Append(MenuItem2); m_pMenubar->Append(Menu2, _("Help")); SetMenuBar(m_pMenubar); m_pStatusBar = new wxStatusBar(this, ID_STATUSBAR, 0, _T("ID_STATUSBAR")); int __wxStatusBarWidths_1[3] = { -10, -10, -10 }; int __wxStatusBarStyles_1[3] = { wxSB_NORMAL, wxSB_NORMAL, wxSB_NORMAL }; m_pStatusBar->SetFieldsCount(3,__wxStatusBarWidths_1); m_pStatusBar->SetStatusStyles(3,__wxStatusBarStyles_1); SetStatusBar(m_pStatusBar); Connect(ID_TOOLBARITEM_START,wxEVT_COMMAND_TOOL_CLICKED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuStart); Connect(ID_TOOLBARITEM_PAUSE,wxEVT_COMMAND_TOOL_CLICKED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuPause); Connect(ID_TOOLBARITEM_STOP,wxEVT_COMMAND_TOOL_CLICKED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuStop); Connect(ID_TOOLBARITEM_RESET,wxEVT_COMMAND_TOOL_CLICKED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuReset); Connect(ID_TOOLBARITEM_LOADHEX,wxEVT_COMMAND_TOOL_CLICKED,(wxObjectEventFunction)&mainFrame::OnMenuitemLoadHexSelected); Connect(ID_SPNFREQ,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)&mainFrame::OnSpnFreqChange); Connect(ID_MENUITEM_FIRMWARE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemFirmwareSelected); Connect(ID_MENUITEM_CODE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemCodeSelected); Connect(ID_MENUITEM_LOADHEX,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemLoadHexSelected); Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnQuit); Connect(ID_MENUITEM_MODIFYPROFILE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemModifyProfileSelected); Connect(ID_MENUITEM_WIPE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemWipeSelected); Connect(ID_MENUITEM_SERIAL,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemSerialSelected); Connect(ID_MENUITEM_VCD,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemVcdSelected); Connect(ID_MENUITEM_VCDFILE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemVcdFileSelected); Connect(ID_MENUITEM_START,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuStart); Connect(ID_MENUITEM_PAUSE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuPause); Connect(ID_MENUITEM_STOP,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuStop); Connect(ID_MENUITEM_RESET,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemMcuReset); Connect(ID_MENUITEM_TOOLBARFILE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemToolbarFileSelected); Connect(ID_MENUITEM_TOOLBARCONTROL,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemToolbarControlSelected); Connect(ID_MENUITEM_LAYOUT,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemResetLayoutSelected); Connect(ID_MENUITEM_LOGTOFILE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemLogToFileSelected); Connect(ID_MENUITEM_LOGVERBOSE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemLogVerboseSelected); Connect(ID_MENUITEM_LOGMCU,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnMenuitemLogmcuSelected); Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&mainFrame::OnAbout); //*) Connect(wxID_ANY, wxEVT_CLOSE_WINDOW,(wxObjectEventFunction)&mainFrame::OnClose); Connect(wxID_ANY, wxEVT_AVR_STATUS, (wxObjectEventFunction)&mainFrame::HandleAvrStatus); Connect(wxID_ANY, wxEVT_AVR_WRITE, (wxObjectEventFunction)&mainFrame::HandleAvrWrite); //Configure logging m_pLog = new wxLogTextCtrl(m_pTxtLog); wxLog::SetActiveTarget(m_pLog); wxLog::SetTimestamp("%Y-%m-%d %H:%M:%S"); Running(AVR_STATUS_STOPPED); wxString sTmp; if(wxGetEnv("HOME", &sTmp)) m_pFnConfig = new wxFileName(sTmp + "/.config/riban/wxsimavr/config.cfg"); if(!ReadConfig()) { wxMessageBox("Error reading configuration file. Closing..."); Close(); return; } m_pSpnFreq->SetValue(m_lFrequency); SetDeviceType(m_sDeviceType); m_bInit = true; wxLogDebug("mainFrame completed constructor\n"); }
void mainFrame::OnMenuDeviceType(wxCommandEvent& event) { SetDeviceType(m_mDevices[event.GetId()]); }
BOOL CVolumeCtrl::EnumerateInputLines( DWORD dwDeviceID, PINPUTLINEPROC pUserCallback, DWORD dwUserValue ) { if (!pUserCallback) { return FALSE; } MMRESULT mmResult; HWAVEIN hwaveIn; WAVEFORMATEX WaveFmt; SetDeviceType( &WaveFmt ); mmResult = waveInOpen( &hwaveIn, dwDeviceID, &WaveFmt, 0L, 0L, CALLBACK_NULL ); if ( mmResult != MMSYSERR_NOERROR ) { return FALSE; } UINT uMixerID; DWORD dwMixerHandle; mmResult = mixerGetID( (HMIXEROBJ)hwaveIn, &uMixerID, MIXER_OBJECTF_HWAVEIN ); waveInClose( hwaveIn ); if ( mmResult != MMSYSERR_NOERROR ) { return FALSE; } mmResult = mixerOpen( (LPHMIXER)&dwMixerHandle, uMixerID, 0L, 0L, 0L ); if ( mmResult != MMSYSERR_NOERROR ) { mixerClose( (HMIXER)dwMixerHandle ); return FALSE; } MIXERLINE MixerLine; memset( &MixerLine, 0, sizeof(MIXERLINE) ); MixerLine.cbStruct = sizeof(MIXERLINE); MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN; mmResult = mixerGetLineInfo( (HMIXEROBJ)dwMixerHandle, &MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE ); if ( mmResult != MMSYSERR_NOERROR ) { mixerClose( (HMIXER)dwMixerHandle ); return FALSE; } MIXERLINE Line; for ( UINT uLineIndex = 0; uLineIndex < MixerLine.cConnections; uLineIndex++ ) { memset( &Line, 0, sizeof(MIXERLINE) ); Line.cbStruct = sizeof(MIXERLINE); Line.dwDestination = MixerLine.dwDestination; Line.dwSource = uLineIndex; mmResult = mixerGetLineInfo( (HMIXEROBJ)dwMixerHandle, &Line, MIXER_GETLINEINFOF_SOURCE ); if ( mmResult != MMSYSERR_NOERROR ) { mixerClose( (HMIXER)dwMixerHandle ); return FALSE; } if ( !((*pUserCallback)( uLineIndex, &Line, dwUserValue )) ) { break; } } mixerClose( (HMIXER)dwMixerHandle ); return TRUE; }
BOOL CVolumeCtrl::Init() { if (!mixerGetNumDevs()) { return FALSE; } HWAVEIN hwaveIn; MMRESULT mmResult; WAVEFORMATEX WaveFmt; SetDeviceType( &WaveFmt ); mmResult = waveInOpen(&hwaveIn, m_dwDeviceID, &WaveFmt, 0L, 0L, CALLBACK_NULL); if (mmResult != MMSYSERR_NOERROR) { return FALSE; } else { // 得到混响器的标识号 mmResult = mixerGetID((HMIXEROBJ)hwaveIn, &m_uMixerID, MIXER_OBJECTF_HWAVEIN); waveInClose(hwaveIn); if (mmResult != MMSYSERR_NOERROR ) { return FALSE; } } // Exposing Window to Mixer WNDCLASSEX wcx; memset( &wcx, 0, sizeof(WNDCLASSEX) ); wcx.cbSize = sizeof(WNDCLASSEX); wcx.lpszClassName = WND_CLASS_NAME; wcx.lpfnWndProc = (WNDPROC)MixerWndProc; ::RegisterClassEx(&wcx); m_hWnd = CreateWindow(WND_CLASS_NAME, WND_NAME, WS_POPUP | WS_DISABLED, 0, 0, 0, 0, NULL, NULL, NULL, NULL ); if (!m_hWnd) { return FALSE; } ::ShowWindow(m_hWnd, SW_HIDE); ::UpdateWindow(m_hWnd); // // 打开混响器设备 // 参数: // m_dwMixerHandle--混响器设备的句柄 // m_uMixerID--为混响器的标识号,用于指定要打开的混响器设备 // mmResult = mixerOpen( (LPHMIXER)&m_dwMixerHandle, m_uMixerID, (DWORD)m_hWnd, 0L, CALLBACK_WINDOW ); if (mmResult != MMSYSERR_NOERROR || m_uMixerID == -1) { ::DestroyWindow( m_hWnd ); return FALSE; } return TRUE; }