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

📄 dataframe.cpp

📁 CAN通讯的测试软件,数据可发送及接收,并能设置时间
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// TODO: Add extra initialization here	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CDataFrame::OnBtnDown() 
{
	// TODO: Add your control notification handler code here
    CString ID;

	// get number of settiing frame 
	UpdateData(TRUE);

	if(m_index <= m_intFrameNum)
	{	
		// 判断下一帧数据:从已经保存的数据结构中取数,还是设置新的默认值
        if(m_index < m_setPacketNum)
		{
			// DATA frame
            if(ptrPacket[m_index].rtr <= 0)
			{
				m_cmbFrame.SetCurSel(0);
			}
			else
			{
				m_cmbFrame.SetCurSel(1); 
			}
         
			// ID(从十六进制转换为字符串)
			if(m_workMode)
			{
				ID = HexToString4(ptrPacket[m_index].CAN_ID *  MultiplyXY(2,3));  
			}
			else
			{
				ID = HexToString4(ptrPacket[m_index].CAN_ID *  MultiplyXY(2,5));  
			}
			m_strID3 = ID.Mid(0,2); 
			m_strID2 = ID.Mid(2,2);
			m_strID1 = ID.Mid(4,2);
			m_strID0 = ID.Mid(6,2); 

			// DATA length
			m_intDataNum = ptrPacket[m_index].length;
			// DATA
            m_Data0 = HexToString2(ptrPacket[m_index].data[0]);
            m_Data1 = HexToString2(ptrPacket[m_index].data[1]); 
		    m_Data2 = HexToString2(ptrPacket[m_index].data[2]);
		    m_Data3 = HexToString2(ptrPacket[m_index].data[3]);
			m_Data4 = HexToString2(ptrPacket[m_index].data[4]);
			m_Data5 = HexToString2(ptrPacket[m_index].data[5]);
			m_Data6 = HexToString2(ptrPacket[m_index].data[6]);
			m_Data7 = HexToString2(ptrPacket[m_index].data[7]);
		}
		else if(m_index < m_intFrameNum)
		{
			// DATA Frame
			m_cmbFrame.SetCurSel(0);
	        // ID 
			m_strID0 = "00";
			m_strID1 = "00";
			m_strID2 = "00";
			m_strID3 = "00";
            // DATA length
			m_intDataNum = 0x08;
            // DATA
			m_Data0 = "00";
			m_Data1 = "00";	
			m_Data2 = "00";
			m_Data3 = "00";
			m_Data4 = "00";
			m_Data5 = "00";
			m_Data6 = "00";
			m_Data7 = "00";
		}

		// add Index 
		if(m_index < m_intFrameNum)
		{
			m_index += 1;
		}

		if(m_setPacketNum < m_intFrameNum)
		{
			m_setPacketNum += 1;
		}
		else
		{
			m_setPacketNum = m_intFrameNum;
		}
		UpdateData(FALSE);			
	}
}


void CDataFrame::OnBtnUp() 
{
	// TODO: Add your control notification handler code here

	CString ID;

	// get number of settiing frame 
	UpdateData(TRUE);
	
	// 保存已经设置的数据	
	if((m_index >= 2) && (m_index <= m_intFrameNum))
	{
	  	// CAN ID
		// 需要转化为16进制 
	   	if(m_workMode)
		{
			ptrPacket[m_index-1].CAN_ID = (StringToHex(m_strID3) * 256 * 256 * 256 + StringToHex(m_strID2) * 256 * 256
										+ StringToHex(m_strID1) * 256 + StringToHex(m_strID0) * 256)/8;
		}
		else
		{
			 ptrPacket[m_index-1].CAN_ID = (StringToHex(m_strID3) * 256 + StringToHex(m_strID2))/32;
		}
		// RTR 
		if(m_cmbFrame.GetCurSel() <= 0)
		{
			ptrPacket[m_index-1].rtr =0;
		}
		else
		{
			ptrPacket[m_index-1].rtr =1;
		}
		// DATA length
		ptrPacket[m_index-1].length  = m_intDataNum;		
		// Data 
		{
			ptrPacket[m_index-1].data[0] = (unsigned char)StringToHex(m_Data0);
			ptrPacket[m_index-1].data[1] = (unsigned char)StringToHex(m_Data1);
			ptrPacket[m_index-1].data[2] = (unsigned char)StringToHex(m_Data2);
			ptrPacket[m_index-1].data[3] = (unsigned char)StringToHex(m_Data3);
			ptrPacket[m_index-1].data[4] = (unsigned char)StringToHex(m_Data4);
			ptrPacket[m_index-1].data[5] = (unsigned char)StringToHex(m_Data5);
			ptrPacket[m_index-1].data[6] = (unsigned char)StringToHex(m_Data6);
			ptrPacket[m_index-1].data[7] = (unsigned char)StringToHex(m_Data7);
		}	
	}

	//从已经保存的数据结构中取数   
	if(m_index > 1)
	{
	    m_index -= 1;
	}
	else
	{
		return;
	}	
	if((m_index <= m_intFrameNum) && (m_index >= 1))
	{  
		// DATA frame
        if(ptrPacket[m_index-1].rtr <= 0)
		{
			m_cmbFrame.SetCurSel(0);
		}
		else
		{
			m_cmbFrame.SetCurSel(1); 
		}
       
		// ID(从十六进制转换为字符串)
		if(m_workMode)
		{
			ID = HexToString4(ptrPacket[m_index-1].CAN_ID *  MultiplyXY(2,3));  
		}
		else
		{
			ID = HexToString4(ptrPacket[m_index-1].CAN_ID *  MultiplyXY(2,5));  
		}
		m_strID3 = ID.Mid(0,2); 
		m_strID2 = ID.Mid(2,2);
		m_strID1 = ID.Mid(4,2);
		m_strID0 = ID.Mid(6,2); 
    
		// DATA length
		m_intDataNum = ptrPacket[m_index-1].length;
		// DATA
        m_Data0 = HexToString2(ptrPacket[m_index-1].data[0]);
        m_Data1 = HexToString2(ptrPacket[m_index-1].data[1]); 
		m_Data2 = HexToString2(ptrPacket[m_index-1].data[2]);
		m_Data3 = HexToString2(ptrPacket[m_index-1].data[3]);
		m_Data4 = HexToString2(ptrPacket[m_index-1].data[4]);
		m_Data5 = HexToString2(ptrPacket[m_index-1].data[5]);
		m_Data6 = HexToString2(ptrPacket[m_index-1].data[6]);
		m_Data7 = HexToString2(ptrPacket[m_index-1].data[7]);
	}	
	UpdateData(FALSE);	
}


void CDataFrame::OnSelchangeCmbFrame() 
{
	// TODO: Add your control notification handler code here
	if(m_cmbFrame.GetCurSel() == 0)
	{	
		// Data Frame
		m_index  = 1;
		m_intLoopNum = 1;
		m_intFrameNum = 1;
		m_intDataNum = 8;
	
		m_strID0 = "00";
		m_strID1 = "00";
    
		// Data Visible
		CEdit* pLX;
		pLX = (CEdit*) GetDlgItem(IDC_EdtData0);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData1);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData2);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData3);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData4);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData5);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData6);
		pLX->ShowWindow(SW_SHOW);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData7);
		pLX->ShowWindow(SW_SHOW);

		m_Data0 = "00";
		m_Data1 = "00";	
		m_Data2 = "00";
		m_Data3 = "00";
		m_Data4 = "00";
		m_Data5 = "00";
		m_Data6 = "00";
		m_Data7 = "00";
	}
	else if(m_cmbFrame.GetCurSel() == 1)
	{
		// RTR Frame: Data length is 0
		m_intDataNum = 0x0;
	   
		// Data inVisible
		CEdit* pLX;
		pLX = (CEdit*) GetDlgItem(IDC_EdtData0);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData1);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData2);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData3);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData4);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData5);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData6);
		pLX->ShowWindow(SW_HIDE);
		pLX = (CEdit*) GetDlgItem(IDC_EdtData7);
		pLX->ShowWindow(SW_HIDE);
	}
	UpdateData(FALSE);	
}


void CDataFrame::OnOK() 
{
	// TODO: Add extra validation here
	
	UpdateData(TRUE);    

	// 保存已经设置的数据
	//CAN ID
	// 需要转化为16进制 
	if(m_workMode)
	{
		ptrPacket[m_index-1].CAN_ID = (StringToHex(m_strID3) * 256 * 256 * 256 + StringToHex(m_strID2) * 256 * 256
			                        + StringToHex(m_strID1) * 256 + StringToHex(m_strID0))/8;
	}
	else
	{
	     ptrPacket[m_index-1].CAN_ID = (StringToHex(m_strID3) * 256 + StringToHex(m_strID2))/32;
	}

	// RTR 
	if(m_cmbFrame.GetCurSel() <= 0)
	{
		ptrPacket[m_index-1].rtr = 0;
	}
	else
	{
		ptrPacket[m_index-1].rtr = 1;
	}

	// DATA length
    ptrPacket[m_index-1].length  = m_intDataNum;	
	// Data 
	{
		ptrPacket[m_index-1].data[0] = (unsigned char)StringToHex(m_Data0);
		ptrPacket[m_index-1].data[1] = (unsigned char)StringToHex(m_Data1);
		ptrPacket[m_index-1].data[2] = (unsigned char)StringToHex(m_Data2);
		ptrPacket[m_index-1].data[3] = (unsigned char)StringToHex(m_Data3);
		ptrPacket[m_index-1].data[4] = (unsigned char)StringToHex(m_Data4);
		ptrPacket[m_index-1].data[5] = (unsigned char)StringToHex(m_Data5);
		ptrPacket[m_index-1].data[6] = (unsigned char)StringToHex(m_Data6);
		ptrPacket[m_index-1].data[7] = (unsigned char)StringToHex(m_Data7);
	}

	// get Setting Packet Number
	m_setPacketNum = m_intFrameNum;
	CDialog::OnOK();
}


void CDataFrame::OnCancel() 
{
	// TODO: Add extra cleanup here
	CDialog::OnCancel();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -