📄 dataframe.cpp
字号:
// 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 + -