case 30:
{
/* ———————————————— 显示曲线 ————————————————— */
miData = new MIData; //给指针分配一个内存
if (miData->id > 0) //问题0xC0000005: 是使用了空指针 *ptr = NULL
{
/* —————————————— 开始结束时间 ———————————————— */
CString bridgeSn, inverterSn;
CTimeSpan tempSpan_1 = CTimeSpan(0, 0, 1, 35); //设置时间间隔
CTimeSpan tempSpan_2 = CTimeSpan(0, 0, 0, 0);
CTime t = CTime::GetCurrentTime(); //获取时间
CString nowTime = t.Format("%H:%M:%S");
CTime tStart = t - tempSpan_1;
CString strTempSt = tStart.Format("%Y-%m-%d %H:%M:%S"); //CTime转CString
CTime tEnd = t + tempSpan_2;
CString strTempEnd = tEnd.Format("%Y-%m-%d %H:%M:%S");
/* —————————————— 开始结束时间 ———————————————— */
/*
COleSafeArray XValue;
COleSafeArray YValue;
DWORD pNumElements = (sizeof(fieldName) / sizeof(char *));
XValue.Create(VT_R8, 1, &pNumElements);
XValue.Create(VT_R8, 1, &pNumElements);
long i(0);
for (i = 0; i < sizeof(fieldName) / sizeof(char *); ++i)
{
XValue.PutElement(&i, pX + i);
XValue.PutElement(&i, pX + i);
}
*/
if (m_comboBridge1.GetCurSel() != 0)
m_comboBridge1.GetWindowText(bridgeSn);
if (m_comboInverter1.GetCurSel() != 0)
m_comboInverter1.GetWindowText(inverterSn);
if (dataAccess.SearchData(bridgeSn, inverterSn, strTempSt, strTempEnd))
{
/*_CrtDumpMemoryLeaks();*/
CRecordset& rs = dataAccess.GetRecordset();
CString value;
while (!rs.IsEOF())
{
for (int i = 0; i < sizeof(fieldNamee) / sizeof(char*); ++i)
{
short index = rs.GetFieldIndexByName(fieldNamee[i]);
rs.GetFieldValue(index, value);
vec.push_back(value);
double douValue = atof(value.GetBuffer()); //CString 强转成 double
switch (i)
{
case 0:
((CSeries)m_chart1.Series(nline0)).AddXY(s_x, douValue, nowTime, RGB(0, 0, 0)); //AddXY(x, y, x_str, RGB)
m++;
printf("描点次数为:%d \n", m);
break;
case 1:
((CSeries)m_chart1.Series(nline1)).AddXY(s_x, douValue, nowTime, RGB(255, 0, 0));
break;
case 2:
((CSeries)m_chart1.Series(nline2)).AddXY(s_x, douValue, nowTime, RGB(46, 139, 87));
break;
case 3:
((CSeries)m_chart1.Series(nline3)).AddXY(s_x, douValue, nowTime, RGB(0, 0, 255));
break;
case 4:
((CSeries)m_chart1.Series(nline4)).AddXY(s_x, douValue, nowTime, RGB(205, 92, 92));
break;
case 5:
((CSeries)m_chart1.Series(nline5)).AddXY(s_x, douValue, nowTime, RGB(255, 185, 15));
break;
default:
break;
}
vec.erase(vec.begin() + 0);
Sleep(50);
}
/*m_chart1.UpdateData();*/
s_x += 1.0;
if (((CSeries)m_chart1.Series(nline0)).get_Count() > 10)
{
((CSeries)m_chart1.Series(nline0)).Delete(0);
((CSeries)m_chart1.Series(nline1)).Delete(0);
((CSeries)m_chart1.Series(nline2)).Delete(0);
((CSeries)m_chart1.Series(nline3)).Delete(0);
((CSeries)m_chart1.Series(nline4)).Delete(0);
((CSeries)m_chart1.Series(nline5)).Delete(0);
((CAxis)(((CAxes)m_chart1.get_Axis()).get_Bottom())).Scroll(1.0, TRUE);
}
rs.MoveNext();
Sleep(100);
}
}
}
delete miData;
}
break;
你到底有多少数据,什么进程占用的cpu高,是不是数据库那一块,或者你的数据天然地太多了。关闭窗口,内存下降么。