发表于:2008-02-21 16:33:00
2楼
void CVMemoryAppDlg::OnBtnWrite()
{
UpdateData(TRUE);
BOOL bIsOK = TRUE;
m_wOffset = m_wOffset-1;//偏移从1开始,而MMF是用0开始。
switch( m_nRegType )
{
case INPUT_COIL:
{
//VT_BOOL;
BOOL bSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(INPUT_COIL,m_wOffset,bSetValue);
break;
}
case OUTPUT_COIL:
{
// VT_BOOL;
BOOL bSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_COIL,m_wOffset,bSetValue);
break;
}
case INPUT_REGISTER ://enum REGTYPE {INPUT_COIL, OUTPUT_COIL, INPUT_REGISTER, OUTPUT_REGISTER};
{
switch( m_dataType )//enum VARTYPE {VAR_INT, VAR_LONG, VAR_FLOAT, VAR_STRING,VAR_BIT,VAR_WORD};
{
default:
case VAR_INT://VT_I2:
{
int nSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(INPUT_REGISTER, m_wOffset, nSetValue);
break;
}
case VAR_WORD://VT_UI2:
{
DWORD dwSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(INPUT_REGISTER, m_wOffset, dwSetValue);
break;
}
case VAR_BIT://VT_BOOL:
{
BOOL bSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(INPUT_REGISTER,m_wOffset,bSetValue);
break;
}
case VAR_STRING://VT_BSTR:
{
LPTSTR lpSetValue = (LPTSTR)(LPCTSTR)m_strWriteValue;
bIsOK = SetVRAM(INPUT_REGISTER,m_wOffset,lpSetValue);
break;
}
case VAR_LONG://VT_I4:
{
LONG lSetValue = atol(m_strWriteValue);
bIsOK = SetVRAM(INPUT_REGISTER, m_wOffset, lSetValue);
break;
}
case VAR_FLOAT://VT_R4:
{
float ftSetValue = (float)atof(m_strWriteValue);
bIsOK = SetVRAM(INPUT_REGISTER, m_wOffset, ftSetValue);
break;
}
}
}
case OUTPUT_REGISTER:
{
switch( m_dataType )//enum VARTYPE {VAR_INT, VAR_LONG, VAR_FLOAT, VAR_STRING,VAR_BIT,VAR_WORD};
{
default:
case VAR_INT://VT_I2:
{
int nSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_REGISTER, m_wOffset, nSetValue);
break;
}
case VAR_WORD://VT_UI2:
{
DWORD dwSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_REGISTER, m_wOffset, dwSetValue);
break;
}
case VAR_BIT://VT_BOOL:
{
BOOL bSetValue = atoi(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_REGISTER,m_wOffset,bSetValue);
break;
}
case VAR_STRING://VT_BSTR:
{
//LPTSTR lpSetValue = "hehe";
//字符串复制用
LPTSTR lpSetValue = "m_strWriteValue.GetBuffer(m_strWriteValue.GetLength())";
char test [500];
test[0] = 'Z';
test [1] = 'H';
/*
char *pstr = new char[m_strWriteValue.GetLength()] ;
for (int i=0; i<m_strWriteValue.GetLength(); i++)
{
*(pstr+i)=m_strWriteValue[i];
}
lpSetValue = pstr;*/
//LPTSTR lpSetValue = s;//(LPTSTR)(LPCTSTR)m_strWriteValue;
bIsOK = SetVRAM(OUTPUT_REGISTER,m_wOffset,test);
//m_strWriteValue.ReleaseBuffer();
break;
}
case VAR_LONG://VT_I4:
{
LONG lSetValue = atol(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_REGISTER, m_wOffset, lSetValue);
break;
}
case VAR_FLOAT://VT_R4:
{
float ftSetValue = (float)atof(m_strWriteValue);
bIsOK = SetVRAM(OUTPUT_REGISTER, m_wOffset, ftSetValue);
break;
}
}
}
break;
default: ASSERT( FALSE );
}
if (!bIsOK)
{
AfxMessageBox(_T("写MMF错误"));
}
m_wOffset = m_wOffset+1;//还原
theApp.WriteProfileInt(_T("Tag"), _T("RegTypeIndex"), m_nRegType);
theApp.WriteProfileInt(_T("Tag"), _T("DataTypeIndex"), m_dataType);
UpdateData(FALSE);
}