📄 e2promctrl.cpp
字号:
// E2promCtrl.cpp: implementation of the CE2promCtrl class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "..\ZDUSBMP_DUT.h"
#include "E2promCtrl.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
char cHexAsc[] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CE2promCtrl::CE2promCtrl()
{
bOpenFile = FALSE;
pDLTempBuf = new UCHAR[MAX_USB_EEPROM_SIZE];
TRACE("Heap memory to pDLTempBuf.\n");
}
CE2promCtrl::~CE2promCtrl()
{
delete []pDLTempBuf;
TRACE("Free pDLTempBuf.\n");
}
//For example:
// CString mSTR0;
// UCHAR mchar[20];
//
// memset(mchar, 0x00, 20);
// for (int i=0; i<10; i++){
// CharToHex(pDLTempBuf[EE_STR0+i], &mchar[i*2]);
// }
// mSTR0.Format("%s", mchar);
void CE2promCtrl::CharToHex(UCHAR inum, UCHAR *ostr)
{
int iinum = ((int)inum) & 0xff;
*ostr++ = cHexAsc[(iinum >> 4 )];
*ostr++ = cHexAsc[(iinum & 0x0F)];
*ostr = NULL;
}
BOOL CE2promCtrl::CheckHEXValues(CString str, int length)
{
for (int j=0; j<length; j++){
if( (str.GetAt(j) > 'F') || (str.GetAt(j) < 'A') && (str.GetAt(j) > '9') || (str.GetAt(j) < '0') ){
return FALSE;
}
}
return TRUE;
}
//For example:
// UCHAR tmp[14];
// LoadCurrData(0, tmp);
void CE2promCtrl::LoadCurrData(int mItem, UCHAR pDataBuff[])
{
switch(mItem){
case 0: //MAC
memcpy(&pDLTempBuf[EE_MAC_ADDRESS], pDataBuff, 6);
break;
case 1: //SN
memcpy(&pDLTempBuf[EE_SERIAL_NUMBER_ADDRESS], pDataBuff, 12);
break;
case 2: //SP
memcpy(&pDLTempBuf[EE_SET_POINT_ADDRESS], pDataBuff, 14);
break;
case 3: //IT
memcpy(&pDLTempBuf[EE_INTEGRATION_ADDRESS], pDataBuff, 14);
break;
}
}
void CE2promCtrl::ClearCurrData(int mItem)
{
switch(mItem){
case 0: //MAC
memset(mCurrEepromData.MAC, 0x00, 6);
break;
case 1: //SN
memset(mCurrEepromData.SN, 0x00, 12);
break;
case 2: //SP
memset(mCurrEepromData.SetPoint, 0x00, 14);
break;
case 3: //IT
memset(mCurrEepromData.Integration, 0x00, 14);
break;
case 4: //all
memset(mCurrEepromData.MAC, 0x00, 6);
memset(mCurrEepromData.SN, 0x00, 12);
memset(mCurrEepromData.SetPoint, 0x00, 14);
memset(mCurrEepromData.Integration, 0x00, 14);
break;
}
}
bool CE2promCtrl::AddMACAddress()
{
unsigned int t_mac_buf = 0;
unsigned int m_mac_buf[6];
m_mac_buf[0] = CurrentMAC[0];
m_mac_buf[1] = CurrentMAC[1];
m_mac_buf[2] = CurrentMAC[2];
m_mac_buf[3] = CurrentMAC[3];
m_mac_buf[4] = CurrentMAC[4];
m_mac_buf[5] = CurrentMAC[5];
if (m_mac_buf[5] < 0xff || m_mac_buf[5] < 0xFF){
m_mac_buf[5] += 1;
CurrentMAC[5] = m_mac_buf[5];
return TRUE;
}
if (m_mac_buf[4] < 0xff || m_mac_buf[4] < 0xFF){
m_mac_buf[5] = 0;
m_mac_buf[4] += 1;
CurrentMAC[5] = m_mac_buf[5];
CurrentMAC[4] = m_mac_buf[4];
return TRUE;
}
if (m_mac_buf[3] < 0xff || m_mac_buf[3] < 0xFF){
m_mac_buf[5] = 0;
m_mac_buf[4] = 0;
m_mac_buf[3] += 1;
CurrentMAC[5] = m_mac_buf[5];
CurrentMAC[4] = m_mac_buf[4];
CurrentMAC[3] = m_mac_buf[3];
return TRUE;
}
if (m_mac_buf[2] < 0xff || m_mac_buf[2] < 0xFF){
m_mac_buf[5] = 0;
m_mac_buf[4] = 0;
m_mac_buf[3] = 0;
m_mac_buf[2] += 1;
CurrentMAC[5] = m_mac_buf[5];
CurrentMAC[4] = m_mac_buf[4];
CurrentMAC[3] = m_mac_buf[3];
CurrentMAC[2] = m_mac_buf[2];
return TRUE;
}
if (m_mac_buf[1] < 0xff || m_mac_buf[1] < 0xFF){
m_mac_buf[5] = 0;
m_mac_buf[4] = 0;
m_mac_buf[3] = 0;
m_mac_buf[2] = 0;
m_mac_buf[1] += 1;
CurrentMAC[5] = m_mac_buf[5];
CurrentMAC[4] = m_mac_buf[4];
CurrentMAC[3] = m_mac_buf[3];
CurrentMAC[2] = m_mac_buf[2];
CurrentMAC[1] = m_mac_buf[1];
return TRUE;
}
if (m_mac_buf[0] < 0xff || m_mac_buf[0] < 0xFF){
m_mac_buf[5] = 0;
m_mac_buf[4] = 0;
m_mac_buf[3] = 0;
m_mac_buf[2] = 0;
m_mac_buf[1] = 0;
m_mac_buf[0] += 1;
CurrentMAC[5] = m_mac_buf[5];
CurrentMAC[4] = m_mac_buf[4];
CurrentMAC[3] = m_mac_buf[3];
CurrentMAC[2] = m_mac_buf[2];
CurrentMAC[1] = m_mac_buf[1];
CurrentMAC[0] = m_mac_buf[0];
return TRUE;
}
return false;
}
BOOL CE2promCtrl::AddSerialNumber()
{
unsigned int t_sn_buf = 0;
unsigned int m_sn_buf[12];
m_sn_buf[0] = CurrentSN[0];
m_sn_buf[1] = CurrentSN[1];
m_sn_buf[2] = CurrentSN[2];
m_sn_buf[3] = CurrentSN[3];
m_sn_buf[4] = CurrentSN[4];
m_sn_buf[5] = CurrentSN[5];
m_sn_buf[6] = CurrentSN[6];
m_sn_buf[7] = CurrentSN[7];
m_sn_buf[8] = CurrentSN[8];
m_sn_buf[9] = CurrentSN[9];
m_sn_buf[10] = CurrentSN[10];
m_sn_buf[11] = CurrentSN[11];
if (m_sn_buf[11] < 0xff || m_sn_buf[11] < 0xFF){
m_sn_buf[11] += 1;
CurrentSN[11] = m_sn_buf[11];
return TRUE;
}
if (m_sn_buf[10] < 0xff || m_sn_buf[10] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
return TRUE;
}
if (m_sn_buf[9] < 0xff || m_sn_buf[9] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
return TRUE;
}
if (m_sn_buf[8] < 0xff || m_sn_buf[8] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
return TRUE;
}
if (m_sn_buf[7] < 0xff || m_sn_buf[7] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
return TRUE;
}
if (m_sn_buf[6] < 0xff || m_sn_buf[6] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
return TRUE;
}
if (m_sn_buf[5] < 0xff || m_sn_buf[5] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
return TRUE;
}
if (m_sn_buf[4] < 0xff || m_sn_buf[4] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] = 0;
m_sn_buf[4] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
CurrentSN[4] = m_sn_buf[4];
return TRUE;
}
if (m_sn_buf[3] < 0xff || m_sn_buf[3] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] = 0;
m_sn_buf[4] = 0;
m_sn_buf[3] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
CurrentSN[4] = m_sn_buf[4];
CurrentSN[3] = m_sn_buf[3];
return TRUE;
}
if (m_sn_buf[2] < 0xff || m_sn_buf[2] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] = 0;
m_sn_buf[4] = 0;
m_sn_buf[3] = 0;
m_sn_buf[2] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
CurrentSN[4] = m_sn_buf[4];
CurrentSN[3] = m_sn_buf[3];
CurrentSN[2] = m_sn_buf[2];
return TRUE;
}
if (m_sn_buf[1] < 0xff || m_sn_buf[1] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] = 0;
m_sn_buf[4] = 0;
m_sn_buf[3] = 0;
m_sn_buf[2] = 0;
m_sn_buf[1] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
CurrentSN[4] = m_sn_buf[4];
CurrentSN[3] = m_sn_buf[3];
CurrentSN[2] = m_sn_buf[2];
CurrentSN[1] = m_sn_buf[1];
return TRUE;
}
if (m_sn_buf[0] < 0xff || m_sn_buf[0] < 0xFF){
m_sn_buf[11] = 0;
m_sn_buf[10] = 0;
m_sn_buf[9] = 0;
m_sn_buf[8] = 0;
m_sn_buf[7] = 0;
m_sn_buf[6] = 0;
m_sn_buf[5] = 0;
m_sn_buf[4] = 0;
m_sn_buf[3] = 0;
m_sn_buf[2] = 0;
m_sn_buf[1] = 0;
m_sn_buf[0] += 1;
CurrentSN[11] = m_sn_buf[11];
CurrentSN[10] = m_sn_buf[10];
CurrentSN[9] = m_sn_buf[9];
CurrentSN[8] = m_sn_buf[8];
CurrentSN[7] = m_sn_buf[7];
CurrentSN[6] = m_sn_buf[6];
CurrentSN[5] = m_sn_buf[5];
CurrentSN[4] = m_sn_buf[4];
CurrentSN[3] = m_sn_buf[3];
CurrentSN[2] = m_sn_buf[2];
CurrentSN[1] = m_sn_buf[1];
CurrentSN[0] = m_sn_buf[0];
return TRUE;
}
return false;
}
bool CE2promCtrl::AutoIncress()
{
int i;
//increase MAC and SN
for(i=0; i<6; i++)
CurrentMAC[i] = 0;
for(i=0; i<6; i++)
memset(&CurrentMAC[i], (UINT)mCurrEepromData.MAC[i], 1);
if (!AddMACAddress()){
//AfxMessageBox("MAC address value is overflow!!!");
return false;
}
for(i=0; i<12; i++)
CurrentSN[i] = 0;
for(i=0; i<12; i++)
memset(&CurrentSN[i], (UINT)mCurrEepromData.SN[i], 1);
if (!AddSerialNumber()){
// AfxMessageBox("Serial Number value is overflow!!!");
return false;
}
//clear all current values
ClearCurrData(4);
//upgrade values
for(i=0; i<6; i++)
memset(&mCurrEepromData.MAC[i], CurrentMAC[i], 1);
for(i=0; i<12; i++)
memset(&mCurrEepromData.SN[i], CurrentSN[i], 1);
return true;
}
void CE2promCtrl::WriteBuffToCurrData(int mItem, UCHAR pDataBuff[], int mCh)
{
switch(mItem){
case 0: //MAC
memcpy(mCurrEepromData.MAC, pDataBuff, 6);
break;
case 1: //SN
memcpy(mCurrEepromData.SN, pDataBuff, 12);
break;
case 2: //SP
mCurrEepromData.SetPoint[mCh] = pDataBuff[0];
break;
case 3: //IT
mCurrEepromData.Integration[mCh] = pDataBuff[0];
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -