// CPM_TestProgDlg.cpp : implementation file // #include "stdafx.h" #include "CPM_TestProg.h" #include "CPM_TestProgDlg.h" #include "mmsystem.h" #include "pisocpm100.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCPM_TestProgDlg dialog CCPM_TestProgDlg::CCPM_TestProgDlg(CWnd* pParent /*=NULL*/) : CDialog(CCPM_TestProgDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCPM_TestProgDlg) //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CCPM_TestProgDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCPM_TestProgDlg) DDX_Control(pDX, IDC_COMBO_OFFSET, m_combo_offset); DDX_Control(pDX, IDC_BUTTON_STOPSYNC, m_button_stopsync); DDX_Control(pDX, IDC_EDIT_VALUE, m_edit_value); DDX_Control(pDX, IDC_EDIT_IOCHANNEL2, m_edit_iochannel2); DDX_Control(pDX, IDC_BUTTON_DO, m_button_do); DDX_Control(pDX, IDC_BUTTON_DI, m_button_di); DDX_Control(pDX, IDC_BUTTON_AO, m_button_ao); DDX_Control(pDX, IDC_BUTTON_AI, m_button_ai); DDX_Control(pDX, IDC_EDIT_NEWPDOID, m_edit_newpdoid); DDX_Control(pDX, IDC_BUTTON_CHANGEPDOID, m_button_changepdoid); DDX_Control(pDX, IDC_COMBO_PDOENTRY, m_combo_pdoentry); DDX_Control(pDX, IDC_EDIT_TXTYPE, m_edit_txtype); DDX_Control(pDX, IDC_BUTTON_TXTYPE, m_button_txtype); DDX_Control(pDX, IDC_EDIT_EVENTTIMER, m_edit_eventtimer); DDX_Control(pDX, IDC_BUTTON_EVENTTIMER, m_button_eventtimer); DDX_Control(pDX, IDC_EDIT_CHANGEID, m_edit_changeid); DDX_Control(pDX, IDC_BUTTON_CHANGESYNC, m_button_changesync); DDX_Control(pDX, IDC_BUTTON_CHANGEEMCY, m_button_changeemcy); DDX_Control(pDX, IDC_EDIT_SETUPPDO, m_edit_setuppdo); DDX_Control(pDX, IDC_COMBO_RXTXTYPE, m_combo_rxtxtype); DDX_Control(pDX, IDC_EDIT_PDOINDEX, m_edit_pdoindex); DDX_Control(pDX, IDC_COMBO_PDOCHANNEL, m_combo_pdochannel); DDX_Control(pDX, IDC_EDIT_IOCHANNEL, m_edit_iochannel); DDX_Control(pDX, IDC_COMBO_AIODIO, m_combo_aiodio); //DDX_Control(pDX, IDC_EDIT_PDOOFFSET, m_edit_pdooffset); DDX_Control(pDX, IDC_EDIT_PDORTR, m_edit_pdortr); DDX_Control(pDX, IDC_EDIT_PDODATA, m_edit_pdodata); DDX_Control(pDX, IDC_EDIT_PDOCOBID, m_edit_pdocobid); DDX_Control(pDX, IDC_EDIT_SYNCTIME, m_edit_synctime); DDX_Control(pDX, IDC_EDIT_SYNCCOBID, m_edit_synccobid); DDX_Control(pDX, IDC_EDIT_SDORECEIVE, m_edit_sdoreceive); DDX_Control(pDX, IDC_LIST_RECEIVE, m_listctrl_receive); DDX_Control(pDX, IDC_EDIT_WRITEDATA, m_edit_writedata); DDX_Control(pDX, IDC_EDIT_SUBINDEX, m_edit_subindex); DDX_Control(pDX, IDC_EDIT_INDEX, m_edit_index); DDX_Control(pDX, IDC_EDIT_GUARDING, m_edit_guarding); DDX_Control(pDX, IDC_COMBO_NODESTATE, m_combo_nodestate); DDX_Control(pDX, IDC_BUTTON_WRITESDO, m_button_writesdo); DDX_Control(pDX, IDC_BUTTON_SETSTATE, m_button_setstate); DDX_Control(pDX, IDC_BUTTON_SENDSYNC, m_button_sendsync); DDX_Control(pDX, IDC_BUTTON_REMOVEPDO, m_button_removepdo); DDX_Control(pDX, IDC_BUTTON_REMOVE, m_button_remove); DDX_Control(pDX, IDC_BUTTON_READSDO, m_button_readsdo); DDX_Control(pDX, IDC_BUTTON_PDORTR, m_button_pdortr); DDX_Control(pDX, IDC_BUTTON_PDOOUTPUT, m_button_pdooutput); DDX_Control(pDX, IDC_BUTTON_INSTALLPDO, m_button_installpdo); DDX_Control(pDX, IDC_BUTTON_GUARDING, m_button_guarding); DDX_Control(pDX, IDC_BUTTON_GETSTATE, m_button_getstate); DDX_Control(pDX, IDC_BUTTON_DYNAMICPDO, m_button_dynamicpdo); DDX_Control(pDX, IDC_BUTTON_CLOSEBOARD, m_button_closeboard); DDX_Control(pDX, IDC_BUTTON_BOARDINFO, m_button_boardinfo); DDX_Control(pDX, IDC_BUTTON_ADDNODE, m_button_addnode); DDX_Control(pDX, IDC_BUTTON_ACTIVEBOARD, m_button_activeboard); DDX_Control(pDX, IDC_BUTTON_ABORTSDO, m_button_abortsdo); DDX_Control(pDX, IDC_STATIC_RED, m_static_red); DDX_Control(pDX, IDC_STATIC_GREEN, m_static_green); DDX_Control(pDX, IDC_STATIC_ADDNODE, m_static_addnode); DDX_Control(pDX, IDC_COMBO_BAUD, m_combo_baud); DDX_Control(pDX, IDC_COMBO_ADDNODE, m_combo_addnode); DDX_Control(pDX, IDC_COMBO_BOARDNO, m_combo_boardno); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCPM_TestProgDlg, CDialog) //{{AFX_MSG_MAP(CCPM_TestProgDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_DESTROY() ON_BN_CLICKED(IDC_BUTTON_BOARDINFO, OnButtonBoardinfo) ON_CBN_SELCHANGE(IDC_COMBO_BOARDNO, OnSelchangeComboBoardno) ON_BN_CLICKED(IDC_BUTTON_ACTIVEBOARD, OnButtonActiveboard) ON_BN_CLICKED(IDC_BUTTON_CLOSEBOARD, OnButtonCloseboard) ON_BN_CLICKED(IDC_BUTTON_ADDNODE, OnButtonAddnode) ON_CBN_SELCHANGE(IDC_COMBO_ADDNODE, OnSelchangeComboAddnode) ON_BN_CLICKED(IDC_BUTTON_REMOVE, OnButtonRemove) ON_BN_CLICKED(IDC_BUTTON_SETSTATE, OnButtonSetstate) ON_BN_CLICKED(IDC_BUTTON_GETSTATE, OnButtonGetstate) ON_BN_CLICKED(IDC_BUTTON_GUARDING, OnButtonGuarding) ON_BN_CLICKED(IDC_BUTTON_READSDO, OnButtonReadsdo) ON_BN_CLICKED(IDC_BUTTON_WRITESDO, OnButtonWritesdo) ON_BN_CLICKED(IDC_BUTTON_ABORTSDO, OnButtonAbortsdo) ON_BN_CLICKED(IDC_BUTTON_SENDSYNC, OnButtonSendsync) ON_BN_CLICKED(IDC_BUTTON_PDORTR, OnButtonPdortr) ON_BN_CLICKED(IDC_BUTTON_PDOOUTPUT, OnButtonPdooutput) ON_BN_CLICKED(IDC_BUTTON_DYNAMICPDO, OnButtonDynamicpdo) ON_BN_CLICKED(IDC_BUTTON_INSTALLPDO, OnButtonInstallpdo) ON_BN_CLICKED(IDC_BUTTON_REMOVEPDO, OnButtonRemovepdo) ON_BN_CLICKED(IDC_BUTTON_CHANGESYNC, OnButtonChangesync) ON_BN_CLICKED(IDC_BUTTON_CHANGEEMCY, OnButtonChangeemcy) ON_BN_CLICKED(IDC_BUTTON_EVENTTIMER, OnButtonEventtimer) ON_BN_CLICKED(IDC_BUTTON_TXTYPE, OnButtonTxtype) ON_BN_CLICKED(IDC_BUTTON_CHANGEPDOID, OnButtonChangepdoid) ON_BN_CLICKED(IDC_BUTTON_DO, OnButtonDo) ON_BN_CLICKED(IDC_BUTTON_AO, OnButtonAo) ON_BN_CLICKED(IDC_BUTTON_DI, OnButtonDi) ON_BN_CLICKED(IDC_BUTTON_AI, OnButtonAi) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_STOPSYNC, OnButtonStopsync) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCPM_TestProgDlg message handlers CString tempstr; BYTE BOARD = 0; BYTE NODE = 1; BYTE BoardState=0; // 0: Close, 1: Active BYTE NodeIsExist[128]; // If node has been added, the data is 1 else 0 WORD GuardingTime[128]; // If node has been guarded, the data is guarding time else 0 WORD RecenItem = 0; // EMCY/PDO message item //*************** HMI Interface ****************** void CCPM_TestProgDlg::WhenCloseBoard() { BoardState = 0; m_button_activeboard.ShowWindow(SW_SHOW); m_combo_boardno.EnableWindow(TRUE); m_combo_baud.EnableWindow(TRUE); //---------- Disable All Button & ComboBox m_button_closeboard.ShowWindow(SW_HIDE); m_combo_addnode.EnableWindow(FALSE); m_combo_nodestate.EnableWindow(FALSE); m_combo_pdochannel.EnableWindow(FALSE); m_combo_aiodio.EnableWindow(FALSE); m_combo_rxtxtype.EnableWindow(FALSE); m_combo_pdoentry.EnableWindow(FALSE); m_combo_offset.EnableWindow(FALSE); m_edit_guarding.EnableWindow(FALSE); m_edit_index.EnableWindow(FALSE); m_edit_subindex.EnableWindow(FALSE); m_edit_writedata.EnableWindow(FALSE); m_edit_pdodata.EnableWindow(FALSE); m_edit_pdocobid.EnableWindow(FALSE); m_edit_synccobid.EnableWindow(FALSE); m_edit_synctime.EnableWindow(FALSE); m_edit_setuppdo.EnableWindow(FALSE); m_edit_pdoindex.EnableWindow(FALSE); m_edit_iochannel.EnableWindow(FALSE); m_edit_changeid.EnableWindow(FALSE); m_edit_eventtimer.EnableWindow(FALSE); m_edit_txtype.EnableWindow(FALSE); m_edit_newpdoid.EnableWindow(FALSE); m_edit_iochannel2.EnableWindow(FALSE); m_edit_value.EnableWindow(FALSE); m_button_addnode.ShowWindow(SW_SHOW); m_button_addnode.EnableWindow(FALSE); m_button_remove.ShowWindow(SW_HIDE); m_button_remove.EnableWindow(FALSE); m_button_setstate.EnableWindow(FALSE); m_button_getstate.EnableWindow(FALSE); m_button_guarding.EnableWindow(FALSE); m_button_readsdo.EnableWindow(FALSE); m_button_writesdo.EnableWindow(FALSE); m_button_abortsdo.EnableWindow(FALSE); m_button_pdortr.EnableWindow(FALSE); m_button_pdooutput.EnableWindow(FALSE); m_button_dynamicpdo.EnableWindow(FALSE); m_button_installpdo.EnableWindow(FALSE); m_button_removepdo.EnableWindow(FALSE); m_button_sendsync.EnableWindow(FALSE); m_button_stopsync.EnableWindow(FALSE); m_button_changesync.EnableWindow(FALSE); m_button_changeemcy.EnableWindow(FALSE); m_button_eventtimer.EnableWindow(FALSE); m_button_txtype.EnableWindow(FALSE); m_button_changepdoid.EnableWindow(FALSE); m_button_do.EnableWindow(FALSE); m_button_di.EnableWindow(FALSE); m_button_ao.EnableWindow(FALSE); m_button_ai.EnableWindow(FALSE); m_static_addnode.SetBitmap(m_static_red.GetBitmap()); KillTimer(123); m_listctrl_receive.DeleteAllItems(); //---------------------------------------- } void CCPM_TestProgDlg::WhenActiveBoard() { BoardState = 1; m_button_activeboard.ShowWindow(SW_HIDE); m_combo_boardno.EnableWindow(FALSE); m_combo_baud.EnableWindow(FALSE); //---------- Enable All Button & ComboBox m_button_closeboard.ShowWindow(SW_SHOW); m_combo_addnode.EnableWindow(TRUE); m_button_addnode.EnableWindow(TRUE); m_button_remove.EnableWindow(TRUE); //---------------------------------------- RecenItem = 0; SetTimer(123,10,NULL); } void CCPM_TestProgDlg::WhenAddNode() { m_button_addnode.ShowWindow(SW_HIDE); m_button_remove.ShowWindow(SW_SHOW); m_combo_nodestate.EnableWindow(TRUE); m_combo_pdochannel.EnableWindow(TRUE); m_combo_aiodio.EnableWindow(TRUE); m_combo_rxtxtype.EnableWindow(TRUE); m_combo_pdoentry.EnableWindow(TRUE); m_combo_offset.EnableWindow(TRUE); m_edit_guarding.EnableWindow(TRUE); m_edit_index.EnableWindow(TRUE); m_edit_subindex.EnableWindow(TRUE); m_edit_writedata.EnableWindow(TRUE); m_edit_pdodata.EnableWindow(TRUE); m_edit_pdocobid.EnableWindow(TRUE); m_edit_synccobid.EnableWindow(TRUE); m_edit_synctime.EnableWindow(TRUE); m_edit_setuppdo.EnableWindow(TRUE); m_edit_pdoindex.EnableWindow(TRUE); m_edit_iochannel.EnableWindow(TRUE); m_edit_changeid.EnableWindow(TRUE); m_edit_eventtimer.EnableWindow(TRUE); m_edit_txtype.EnableWindow(TRUE); m_edit_newpdoid.EnableWindow(TRUE); m_edit_iochannel2.EnableWindow(TRUE); m_edit_value.EnableWindow(TRUE); m_button_setstate.EnableWindow(TRUE); m_button_getstate.EnableWindow(TRUE); m_button_guarding.EnableWindow(TRUE); m_button_readsdo.EnableWindow(TRUE); m_button_writesdo.EnableWindow(TRUE); m_button_abortsdo.EnableWindow(TRUE); m_button_pdortr.EnableWindow(TRUE); m_button_pdooutput.EnableWindow(TRUE); m_button_dynamicpdo.EnableWindow(TRUE); m_button_installpdo.EnableWindow(TRUE); m_button_removepdo.EnableWindow(TRUE); m_button_sendsync.EnableWindow(TRUE); m_button_changesync.EnableWindow(TRUE); m_button_changeemcy.EnableWindow(TRUE); m_button_eventtimer.EnableWindow(TRUE); m_button_txtype.EnableWindow(TRUE); m_button_changepdoid.EnableWindow(TRUE); m_button_do.EnableWindow(TRUE); m_button_di.EnableWindow(TRUE); m_button_ao.EnableWindow(TRUE); m_button_ai.EnableWindow(TRUE); } void CCPM_TestProgDlg::WhenRemoveNode() { m_button_addnode.ShowWindow(SW_SHOW); m_button_remove.ShowWindow(SW_HIDE); m_combo_nodestate.EnableWindow(FALSE); m_combo_pdochannel.EnableWindow(FALSE); m_combo_aiodio.EnableWindow(FALSE); m_combo_rxtxtype.EnableWindow(FALSE); m_combo_pdoentry.EnableWindow(FALSE); m_combo_offset.EnableWindow(FALSE); m_edit_guarding.EnableWindow(FALSE); m_edit_index.EnableWindow(FALSE); m_edit_subindex.EnableWindow(FALSE); m_edit_writedata.EnableWindow(FALSE); m_edit_pdodata.EnableWindow(FALSE); m_edit_pdocobid.EnableWindow(FALSE); m_edit_synccobid.EnableWindow(FALSE); m_edit_synctime.EnableWindow(FALSE); m_edit_setuppdo.EnableWindow(FALSE); m_edit_pdoindex.EnableWindow(FALSE); m_edit_iochannel.EnableWindow(FALSE); m_edit_changeid.EnableWindow(FALSE); m_edit_eventtimer.EnableWindow(FALSE); m_edit_txtype.EnableWindow(FALSE); m_edit_newpdoid.EnableWindow(FALSE); m_edit_iochannel2.EnableWindow(FALSE); m_edit_value.EnableWindow(FALSE); m_button_setstate.EnableWindow(FALSE); m_button_getstate.EnableWindow(FALSE); m_button_guarding.EnableWindow(FALSE); m_button_readsdo.EnableWindow(FALSE); m_button_writesdo.EnableWindow(FALSE); m_button_abortsdo.EnableWindow(FALSE); m_button_pdortr.EnableWindow(FALSE); m_button_pdooutput.EnableWindow(FALSE); m_button_dynamicpdo.EnableWindow(FALSE); m_button_installpdo.EnableWindow(FALSE); m_button_removepdo.EnableWindow(FALSE); m_button_sendsync.EnableWindow(FALSE); m_button_stopsync.EnableWindow(FALSE); m_button_changesync.EnableWindow(FALSE); m_button_changeemcy.EnableWindow(FALSE); m_button_eventtimer.EnableWindow(FALSE); m_button_txtype.EnableWindow(FALSE); m_button_changepdoid.EnableWindow(FALSE); m_button_do.EnableWindow(FALSE); m_button_di.EnableWindow(FALSE); m_button_ao.EnableWindow(FALSE); m_button_ai.EnableWindow(FALSE); } //************************************************* BOOL CCPM_TestProgDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 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 { tempstr.Format("CPM_TestProg -- Driver Ver %01.2f , Total %d Board",CPM100_GetVersion(),CPM100_TotalBoard()); this->SetWindowText(tempstr); m_combo_boardno.SetCurSel(0); m_combo_addnode.SetCurSel(0); m_combo_baud.SetCurSel(0); m_combo_pdochannel.SetCurSel(0); m_combo_aiodio.SetCurSel(0); m_combo_rxtxtype.SetCurSel(0); m_combo_pdoentry.SetCurSel(0); memset(NodeIsExist,0,128); memset(GuardingTime,0,128); m_static_red.ShowWindow(SW_HIDE); m_static_green.ShowWindow(SW_HIDE); WhenCloseBoard(); m_edit_synccobid.SetWindowText("80"); m_combo_offset.SetCurSel(0); m_listctrl_receive.InsertColumn(0,_T(""),LVCFMT_CENTER,275); } return TRUE; // return TRUE unless you set the focus to a control } void CCPM_TestProgDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // 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 CCPM_TestProgDlg::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 CCPM_TestProgDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CCPM_TestProgDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here OnButtonCloseboard(); } //*************** HMI Interface ****************** void CCPM_TestProgDlg::OnSelchangeComboBoardno() { // TODO: Add your control notification handler code here BOARD = m_combo_boardno.GetCurSel(); } void CCPM_TestProgDlg::OnSelchangeComboAddnode() { CString TempString; // TODO: Add your control notification handler code here NODE = m_combo_addnode.GetCurSel() + 1; if(NodeIsExist[NODE]){ // Node is added m_static_addnode.SetBitmap(m_static_green.GetBitmap()); WhenAddNode(); OnButtonGetstate(); } else{ // Node isn't added m_static_addnode.SetBitmap(m_static_red.GetBitmap()); WhenRemoveNode(); } TempString.Format("%d",GuardingTime[NODE]); m_edit_guarding.SetWindowText(TempString); } //*************************************************** void CCPM_TestProgDlg::OnButtonBoardinfo() { int ret; CString boardinfo; DWORD dwVID=0, dwDID=0, dwSVID=0, dwSDID=0, dwSAuxID=0, dwIrqNo=0; // TODO: Add your control notification handler code here ret = CPM100_GetBoardInf(m_combo_boardno.GetCurSel(), &dwVID,&dwDID,&dwSVID,&dwSDID,&dwSAuxID,&dwIrqNo); if(ret){ tempstr.Format("Get Board Information failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ tempstr.Format(" Vendor ID = %X\n Device ID = %X\n Sub-Vendor ID = %X\n Sub-Device ID = %X\n Sub-Aux ID = %X\n Irq No. = %X",dwVID,dwDID,dwSVID,dwSDID,dwSAuxID,dwIrqNo); boardinfo.Format("Board %d Information",m_combo_boardno.GetCurSel()); MessageBox(tempstr,boardinfo,MB_OK|MB_ICONINFORMATION); } } void CCPM_TestProgDlg::OnButtonActiveboard() { int ret; // TODO: Add your control notification handler code here ret = CPM100_ActiveBoard(BOARD); if(ret){ tempstr.Format("ActiveBoard failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ ret = CPM100_InitMaster(BOARD,m_combo_baud.GetCurSel()); if(ret){ tempstr.Format("Initialize Master failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ WhenActiveBoard(); } } } void CCPM_TestProgDlg::OnButtonCloseboard() { int ret; // TODO: Add your control notification handler code here if(!BoardState) return; // If board is closed, do not close again. ret = CPM100_ShutdownMaster(BOARD); if(ret){ tempstr.Format("Master shutdown failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ ret = CPM100_CloseBoard(BOARD); if(ret){ tempstr.Format("Close board failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ memset(NodeIsExist,0,128); memset(GuardingTime,0,128); WhenCloseBoard(); } } } void CCPM_TestProgDlg::OnButtonAddnode() { int ret; // TODO: Add your control notification handler code here ret = CPM100_AddNode(BOARD,NODE); if(ret){ tempstr.Format("Node add failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ NodeIsExist[NODE] = 1; OnSelchangeComboAddnode(); } } void CCPM_TestProgDlg::OnButtonRemove() { int ret; // TODO: Add your control notification handler code here ret = CPM100_RemoveNode(BOARD,NODE); if(ret){ tempstr.Format("Node remove failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ NodeIsExist[NODE] = 0; GuardingTime[NODE] = 0; OnSelchangeComboAddnode(); } } //------------ NMT Protocol void CCPM_TestProgDlg::OnButtonSetstate() { int ret; BYTE State; // TODO: Add your control notification handler code here switch(m_combo_nodestate.GetCurSel()){ case 0: State = 0x1; // opernational break; case 1: State = 0x80; // pre-opernational break; case 2: State = 0x2; // node stop break; case 3: State = 0x81; // reset state break; } ret = CPM100_NMTChangeState(BOARD,NODE,State); if(ret){ tempstr.Format("Set Node state failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ if(State == 0x81) GuardingTime[NODE] = 0; } } void CCPM_TestProgDlg::OnButtonGetstate() { int ret; BYTE State; // TODO: Add your control notification handler code here ret = CPM100_NMTGetState(BOARD,NODE,&State); if(ret){ tempstr.Format("Get Node state failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ switch(State){ case 0x5: // opernational m_combo_nodestate.SetCurSel(0); break; case 0x4: // node stop m_combo_nodestate.SetCurSel(2); break; case 0x7f: // pre-opernational m_combo_nodestate.SetCurSel(1); break; } } } void CCPM_TestProgDlg::OnButtonGuarding() { int ret; char TempText[10],*end; WORD GuardTime; BYTE LifeTime; // TODO: Add your control notification handler code here m_edit_guarding.GetWindowText(TempText,10); GuardTime = (WORD)strtol(TempText,&end,10); LifeTime = 3; ret = CPM100_NMTGuarding(BOARD,NODE,GuardTime,LifeTime); if(ret){ tempstr.Format("Set Guarding failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ GuardingTime[NODE] = GuardTime; } } //------------ End NMT Protocol //------------ SYNC Protocol void CCPM_TestProgDlg::OnButtonSendsync() { int ret; char TempText[10],*end; WORD Cobid; DWORD SYNCTime; // TODO: Add your control notification handler code here m_edit_synctime.GetWindowText(TempText,10); SYNCTime = (DWORD)strtol(TempText,&end,10); //The unit of Cyclic is 0.1ms SYNCTime = SYNCTime*10; //The unit of Cyclic*10 is 1ms //If Cyclic is 0, the function will send SYNC message one time m_edit_synccobid.GetWindowText(TempText,10); Cobid = (WORD)strtol(TempText,&end,16); ret = CPM100_SendSYNC(BOARD,Cobid,SYNCTime); if(ret){ tempstr.Format("Set SYNC failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ if(SYNCTime){ m_button_sendsync.EnableWindow(FALSE); m_button_stopsync.EnableWindow(TRUE); } } } void CCPM_TestProgDlg::OnButtonStopsync() { // TODO: Add your control notification handler code here int ret; char TempText[10],*end; WORD Cobid; DWORD SYNCTime; // TODO: Add your control notification handler code here m_edit_synctime.GetWindowText(TempText,10); SYNCTime = 0; m_edit_synccobid.GetWindowText(TempText,10); Cobid = (WORD)strtol(TempText,&end,16); ret = CPM100_SendSYNC(BOARD,Cobid,SYNCTime); if(ret){ tempstr.Format("Stop SYNC failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ m_button_sendsync.EnableWindow(TRUE); m_button_stopsync.EnableWindow(FALSE); } } //------------ End SYNC Protocol //------------ SDO Protocol void CCPM_TestProgDlg::OnButtonReadsdo() { int ret,i; char TempText[10],*end,SDOString[200]; BYTE SubIndex,RData[100]; WORD Index,RDatalen; // TODO: Add your control notification handler code here m_edit_index.GetWindowText(TempText,10); Index = (WORD)strtol(TempText,&end,16); m_edit_subindex.GetWindowText(TempText,10); SubIndex = (BYTE)strtol(TempText,&end,16); ret = CPM100_SDOReadData(BOARD,NODE,Index,SubIndex,&RDatalen,RData); if(ret){ tempstr.Format("Read SDO failure, error = %d",ret); MessageBox(tempstr,"Error",MB_OK|MB_ICONSTOP); } else{ sprintf(SDOString,"[%d]--",RDatalen); for(i=0;i= 100){ m_listctrl_receive.DeleteAllItems(); RecenItem = 0; } m_listctrl_receive.InsertItem(RecenItem,""); m_listctrl_receive.SetItemText(RecenItem,0,EMCYStr); m_listctrl_receive.EnsureVisible(RecenItem++,TRUE); } } } count = CPM100_ReadPDOCount(BOARD); if(count){ for(j=0;j= 100){ m_listctrl_receive.DeleteAllItems(); RecenItem = 0; } m_listctrl_receive.InsertItem(RecenItem,""); m_listctrl_receive.SetItemText(RecenItem,0,PDOStr); m_listctrl_receive.EnsureVisible(RecenItem++,TRUE); } } } CDialog::OnTimer(nIDEvent); }