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

📄 canappdlg.cpp

📁 CAN总线实验
💻 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 + -