📄 canappdlg.cpp
字号:
// CANAppDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CANApp.h"
#include "CANAppDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CCANAppDlg dialog
CCANAppDlg::CCANAppDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCANAppDlg::IDD, pParent)
{
m_hFile=0;
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCANAppDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CCANAppDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_btnOpen, &CCANAppDlg::OnBnClickedbtnopen)
ON_BN_CLICKED(IDC_btnSend, &CCANAppDlg::OnBnClickedbtnsend)
ON_BN_CLICKED(IDC_btnReceive, &CCANAppDlg::OnBnClickedbtnreceive)
ON_BN_CLICKED(IDC_btnSetMask, &CCANAppDlg::OnBnClickedbtnsetmask)
ON_WM_DESTROY()
END_MESSAGE_MAP()
// CCANAppDlg message handlers
BOOL CCANAppDlg::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
SetDlgItemText(IDC_SendData, L"TransmitData");
SetDlgItemText(IDC_maskValue, L"0");
SetDlgItemText(IDC_ReceivdID, L"8");
SetDlgItemText(IDC_SendID, L"128");
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CCANAppDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
DRA::RelayoutDialog(
AfxGetInstanceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_CANAPP_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_CANAPP_DIALOG));
}
#endif
void CCANAppDlg::OnBnClickedbtnopen()
{
m_hFile = CreateFile(L"CAN1:",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(m_hFile == INVALID_HANDLE_VALUE)
MessageBox(_T("打开设备错误!"),_T("系统提示"),MB_OK);
}
void CCANAppDlg::OnBnClickedbtnsend()
{
CString str;
DWORD dw;
int loopnum, datanum, temp;
if(m_hFile)
{
GetDlgItemText(IDC_SendData,str);
CAN_MESSAGE SendMsgData = {0};
SendMsgData.receive_dlc = SendMsgData.send_dlc = 8;
SendMsgData.send_id = GetDlgItemInt(IDC_ReceivdID);
SendMsgData.receive_id = GetDlgItemInt(IDC_SendID);
if((datanum = str.GetLength()) > 8)
datanum = 8;
loopnum = str.GetLength() / 8;
if((str.GetLength() % 8) == 0) loopnum -= 1;
temp = loopnum;
while(loopnum >= 0)
{
for(int i = 0; i < datanum; i++)
{
SendMsgData.send_buf[i] = str.GetAt(i + 8 * (temp - loopnum));
}
WriteFile(m_hFile, &SendMsgData, sizeof(CAN_MESSAGE), &dw, NULL);
loopnum--;
}
}
else
MessageBox(_T("CAN设备没有打开"),_T("系统提示"),MB_OK);
}
void CCANAppDlg::OnBnClickedbtnreceive()
{
if(m_hFile)
{
DWORD dw;
CAN_MESSAGE RecvMsgData = {0};
ReadFile(m_hFile, &RecvMsgData, sizeof(CAN_MESSAGE), &dw, NULL);
CString str;
str.Format(L"recive_id=0x%x\r\nreceive_dlc=0x%x\r\n",
RecvMsgData.receive_id, RecvMsgData.receive_dlc);
str.Format(L"%sreceive_buf[8]=%c%c%c%c%c%c%c%c\r\n", str,
RecvMsgData.receive_buf[0],
RecvMsgData.receive_buf[1],
RecvMsgData.receive_buf[2],
RecvMsgData.receive_buf[3],
RecvMsgData.receive_buf[4],
RecvMsgData.receive_buf[5],
RecvMsgData.receive_buf[6],
RecvMsgData.receive_buf[7]);
SetDlgItemText(IDC_Receive, str);
}
else
MessageBox(_T("CAN设备没有打开"),_T("系统提示"),MB_OK);
}
void CCANAppDlg::OnBnClickedbtnsetmask()
{
DWORD buf[1]={0};
DWORD re;
buf[0] = GetDlgItemInt(IDC_maskValue);
if(m_hFile)
DeviceIoControl(m_hFile, 7, buf, sizeof(DWORD) , NULL, 0, &re, NULL);
else
MessageBox(_T("CAN设备没有打开"),_T("系统提示"),MB_OK);
}
void CCANAppDlg::OnDestroy()
{
CDialog::OnDestroy();
if(m_hFile)
CloseHandle(m_hFile)
// TODO: Add your message handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -