📄 epromdialg.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 + -