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

📄 epromdialg.cpp

📁 郎顿51开发板上位机代码 帮助你快速开发工控程序
💻 CPP
字号:
// EpromDialg.cpp : implementation file
//

#include "stdafx.h"
#include "dvp.h"
#include "EpromDialg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEpromDialg dialog


CEpromDialg::CEpromDialg(CWnd* pParent /*=NULL*/)
	: CDialog(CEpromDialg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEpromDialg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CEpromDialg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEpromDialg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CEpromDialg, CDialog)
	//{{AFX_MSG_MAP(CEpromDialg)
	ON_BN_CLICKED(IDC_READ_BUTTON, OnReadButton)
	ON_BN_CLICKED(IDC_WRITE_BUTTON, OnWriteButton)
	ON_WM_CHAR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEpromDialg message handlers

//处理关于的eprom命令
bool CEpromDialg::DealCmd(const unsigned char * cmd)
{
	CEdit * edit = (CEdit *)this->GetDlgItem(IDC_DATA_RX);
	CString hexstr;
	hexstr = ConverBufToHex(&cmd[3] , cmd[0] - 3);
	edit->SetWindowText(hexstr); //显示eprom的内容
	return true;
}

//读eprom,num为读的个数
int CEpromDialg::ReadEprom(int num)
{
	if(num < 0 || num > 255)
		return 0;

	unsigned char buf[] = {0x08,0x04,0x82,0x01,0x10,0x00,0x09};
	buf[4] = num;
	buf[5] = MakeVerify(&buf[1] , 4);
	return DvpView->SendData(buf , 7);
}

//写eprom,data为缓冲区,len为缓存区大小
int CEpromDialg::WriteEprom(unsigned char * data , int len)
{
	unsigned char hbuf[] = {0x08,0x00,0x81,0x01}; //命令头
	if(len <= 0 || len > 10)//目前只支持读10个字节
		return 0;

	unsigned char * buf = new unsigned char[len + 6]; //命令缓存
	hbuf[1] = len + 3;
	memcpy(buf , hbuf , 4);
	memcpy(&buf[4] , data , len);
	
	buf[len + 4] = MakeVerify(&buf[1] , len + 3);
	buf[len + 5] = 0x09;//命令尾
	
	int re = DvpView->SendData(buf , len + 6);
	delete buf;

	return re;
}


//响应读eprom事件
void CEpromDialg::OnReadButton() 
{
	ReadEprom(10);	//现阶段只支持读10个字节
}

//响应写eprom事件
void CEpromDialg::OnWriteButton() 
{
	CEdit * edit = (CEdit *)this->GetDlgItem(IDC_DATA_TX);
	CString hexstr;
	edit->GetWindowText(hexstr);
	if(hexstr.GetLength() == 0)
		return;

	unsigned char * buf = new unsigned char[hexstr.GetLength()];

	int len = ConverHexToBuff(hexstr,buf,hexstr.GetLength());
	WriteEprom(buf , len);

	delete buf;
}

//
void CEpromDialg::OnCancel() 
{
	CDialog::OnCancel();
}

void CEpromDialg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnChar(nChar, nRepCnt, nFlags);
}

BOOL CEpromDialg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CEdit * edt = (CEdit *)this->GetDlgItem(IDC_DATA_TX);
	edt->SetLimitText(20);//十六进制数据长度为20个字符,10个字节
		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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