// ControlView.cpp : implementation of the CControlView class
//
#include "stdafx.h"
#include "Control.h"
#include "conio.h"
#include "ControlDoc.h"
#include "ControlView.h"
#include "MyEdit.h"
#include "Inildlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CControlView
IMPLEMENT_DYNCREATE(CControlView, CFormView)
BEGIN_MESSAGE_MAP(CControlView, CFormView)
//{{AFX_MSG_MAP(CControlView)
ON_BN_CLICKED(IDC_WRITE, OnWrite24CXX)
ON_BN_CLICKED(IDC_READ, OnRead24CXX)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin)
ON_BN_CLICKED(IDC_INITIAL, OnInitial24CXX)
ON_BN_CLICKED(IDC_CLEAR, OnClear)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_NEXT2, OnNext2)
ON_BN_CLICKED(IDC_SS, OnSearchData)
ON_BN_CLICKED(IDC_SAVEDATA, OnSavedata)
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_COMD1, OnComd1)
ON_COMMAND(ID_COMD2, OnComd2)
ON_COMMAND(ID_COMD3, OnComd3)
ON_COMMAND(ID_COMD4, OnComd4)
ON_COMMAND(ID_COMD5, OnComd5)
ON_COMMAND(ID_COMD6, OnComd6)
ON_COMMAND(ID_COMD7, OnComd7)
ON_COMMAND(ID_COMD8, OnComd8)
ON_COMMAND(ID_COMD9, OnComd9)
ON_COMMAND(ID_COMD10, OnComd10)
ON_COMMAND(ID_COMD11, OnComd11)
//ON_BN_CLICKED(IDC_BUTTON1, OnTest)
//}}AFX_MSG_MAP
//ON_NOTIFY_EX( TTN_NEEDTEXT, 0, ToolTips() )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CControlView construction/destruction
CControlView::CControlView()
: CFormView(CControlView::IDD)
{
//{{AFX_DATA_INIT(CControlView)
m_EditPage = 0;
m_Address = _T("");
m_str0 = _T("0");
m_str1 = _T("1");
m_str2 = _T("2");
m_str3 = _T("3");
m_str4 = _T("4");
m_str5 = _T("5");
m_str6 = _T("6");
m_str7 = _T("7");
m_str8 = _T("8");
m_str9 = _T("9");
m_str10 = _T("A");
m_str11 = _T("B");
m_str12 = _T("C");
m_str13 = _T("D");
m_str14 = _T("E");
m_str15 = _T("F");
m_str16 = _T("0");
m_str17 = _T("1");
m_str18 = _T("2");
m_str19 = _T("3");
m_str20 = _T("4");
m_str21 = _T("5");
m_str22 = _T("6");
m_str23 = _T("7");
m_str24 = _T("8");
m_str25 = _T("9");
m_str26 = _T("A");
m_str27 = _T("B");
m_str28 = _T("C");
m_str29 = _T("D");
m_str30 = _T("E");
m_str31 = _T("F");
//}}AFX_DATA_INIT
// TODO: add construction code here
m_dwIicTimStd = 0;
m_EditPage = 0;
m_iicTime = 160;
m_Initial = TRUE;
m_DataChg = FALSE;
}
CControlView::~CControlView()
{
}
void CControlView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CControlView)
DDX_Control(pDX, IDC_PROGRESS, m_Progress);
DDX_Text(pDX, IDC_EDITPAGE, m_EditPage);
DDX_Text(pDX, IDC_SA, m_Address);
DDX_Text(pDX, IDC_COL0, m_str0);
DDX_Text(pDX, IDC_COL1, m_str1);
DDX_Text(pDX, IDC_COL2, m_str2);
DDX_Text(pDX, IDC_COL3, m_str3);
DDX_Text(pDX, IDC_COL4, m_str4);
DDX_Text(pDX, IDC_COL5, m_str5);
DDX_Text(pDX, IDC_COL6, m_str6);
DDX_Text(pDX, IDC_COL7, m_str7);
DDX_Text(pDX, IDC_COL8, m_str8);
DDX_Text(pDX, IDC_COL9, m_str9);
DDX_Text(pDX, IDC_COLA, m_str10);
DDX_Text(pDX, IDC_COLB, m_str11);
DDX_Text(pDX, IDC_COLC, m_str12);
DDX_Text(pDX, IDC_COLD, m_str13);
DDX_Text(pDX, IDC_COLE, m_str14);
DDX_Text(pDX, IDC_COLF, m_str15);
DDX_Text(pDX, IDC_ROW0, m_str16);
DDX_Text(pDX, IDC_ROW1, m_str17);
DDX_Text(pDX, IDC_ROW2, m_str18);
DDX_Text(pDX, IDC_ROW3, m_str19);
DDX_Text(pDX, IDC_ROW4, m_str20);
DDX_Text(pDX, IDC_ROW5, m_str21);
DDX_Text(pDX, IDC_ROW6, m_str22);
DDX_Text(pDX, IDC_ROW7, m_str23);
DDX_Text(pDX, IDC_ROW8, m_str24);
DDX_Text(pDX, IDC_ROW9, m_str25);
DDX_Text(pDX, IDC_ROW10, m_str26);
DDX_Text(pDX, IDC_ROW11, m_str27);
DDX_Text(pDX, IDC_ROW12, m_str28);
DDX_Text(pDX, IDC_ROW13, m_str29);
DDX_Text(pDX, IDC_ROW14, m_str30);
DDX_Text(pDX, IDC_ROW15, m_str31);
//}}AFX_DATA_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CControlView diagnostics
#ifdef _DEBUG
CControlDoc* CControlView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CControlDoc)));
//return (CControlDoc*)m_pDocument;
return STATIC_DOWNCAST(CControlDoc, m_pDocument);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CControlView message handlers
void CControlView::OnWrite24CXX()
{
if(m_DataChg)
OnSavedata();
if(m_TotalPage == 0){
AfxMessageBox("24CXX Initial Fail!");
return;
}
// TODO: Add your control notification handler code here
CProgressCtrl *pProgess = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
pProgess->SetRange(0,(256 * m_TotalPage));
pProgess->SetStep(1);
int data,nVal,k ,x= 0;
int flag,pa = 0;
int saddr = m_Slave;
CString temp,index;
CMapStringToString& map = GetDocument()->m_mapStringToString;
POSITION pos = map.GetStartPosition();
for(k=0x500 ; k< 0x600 ;k++)
{
GetDlgItemText(k,temp);
if(temp == "")
goto Error;
}
for (x = 0 ; x < m_TotalPage ; x++)
{
for( int i = 0 ; i< 256 ; i++ )
{
flag = saddr >> 8;
pa = ( (x * 256 + i) & 0xf00 ) >> 8;
if ( flag == 0 ){ // 24C01 -- 24C16
pa= pa << 1;
saddr = saddr | pa ;
}
index.Format("%X",(x * 256 + i));
map.Lookup(index,temp);
sscanf(temp,"%X", &data);
if(data > 0xff )
goto Error;
nVal = iicwrite(saddr,(x * 256 + i),data);
if(!nVal)
goto Error;
pProgess->SetPos(x * 256 + i);
Sleep(4);
}
saddr = 0xa0;
}
pProgess->SetPos(0);
return ;
Error:
pProgess->SetPos(0);
AfxMessageBox("Invalid data ,Write Data Fail!");
}
void CControlView::OnRead24CXX()
{
// TODO: Add your control notification handler code here
if(m_TotalPage == 0){
AfxMessageBox("24CXX Initial Fail!");
return;
}
OnClear();
CMapStringToString& map = GetDocument()->m_mapStringToString;
GetDocument()->m_mapStringToString.RemoveAll();
CProgressCtrl *pProgess = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
int nVal = 0;
pProgess->SetRange(0,(m_TotalPage * 256));
pProgess->SetStep(1);
CString str,m_page;
AfxGetApp()->m_pMainWnd->GetWindowText(str);
m_page.Format("%X",m_TotalPage);
GetDocument()->m_mapStringToString["TYPE"] = str ;
GetDocument()->m_mapStringToString["PAGE"] = m_page ;
Error = false;
int flag,pa,j = 0;
int saddr = m_Slave;
CString temp ,index , page;
for(int i = 0 ; i < m_TotalPage ; i++)
{
for (int x = 0 ; x < 256 ; x++)
{
flag = saddr >> 8;
pa = ( (i * 256 + x) & 0xf00 ) >> 8;
if ( flag == 0 ){ // 24C01 -- 24C16
pa= pa << 1;
saddr = saddr | pa ;
}
nVal = iicread(saddr,(i * 256+ x) );
if(Error){
goto fail; }
index.Format("%X",(i * 256 + x));
if(nVal < 16)
temp.Format("0%X",nVal);
else
temp.Format("%X",nVal);
GetDocument()->m_mapStringToString[index] = temp ;
pProgess->SetPos( i * 256 + x);
//Sleep(1); //Remove By Ken 12/05
}
saddr = 0xa0;
}
pProgess->SetPos(0); // Show Page 0
for(j = 0 ; j< 256 ; j++ ) // Load File to initial buffer data
{
index.Format("%X",j);
map.Lookup(index,temp);
SetDlgItemText(0x500+j,temp);
}
m_EditPage = 0;
page.Format("%d",m_EditPage);
SetDlgItemText(IDC_EDITPAGE,page);
ShowAsc();
return ;
fail:
pProgess->SetPos(0);
OnClear();
}
void CControlView::