📄 exa06doc.cpp
字号:
// TODO: Add your command handler code here
CSamParaDialog dlg;
ShowPara(5,dlg);
if(dlg.DoModal()==IDOK)
{
EditParm(5 , dlg);
}
}
void CExa06Doc::OnChannel7()
{
// TODO: Add your command handler code here
CSamParaDialog dlg;
ShowPara(6,dlg);
if(dlg.DoModal()==IDOK)
{
EditParm(6, dlg);
}
}
void CExa06Doc::OnChannel8()
{
// TODO: Add your command handler code here
CSamParaDialog dlg;
ShowPara(7,dlg);
if(dlg.DoModal()==IDOK)
{
EditParm(7, dlg);
}
}
void CExa06Doc::SendTo51()
{
CString sendStr;
sndTempNum = sndTempNum%4;
sndNum = sndTempNum;
sendStr.Format("AT%d",sndNum);
if(DataCOMClosed == false)
m_CtrlCOM.SetOutput(COleVariant(sendStr));
sndTempNum++;
}
void CExa06Doc::GetData()
{
VARIANT variant;
COleSafeArray safearray;
long len=0;
BYTE tempDataIn[256];
variant = m_DataCOM.GetInput();
safearray = variant;
len = safearray.GetOneDimSize();
DataWithHeadLen = len/4;
//////////////////convert data into byte type/////////////////////
for(long k=0;k<len;k++)
safearray.GetElement(&k,tempDataIn+k);
////////////////convert data into dword type/////////////////////
for(k=0;k<len;k=k+4)
{
DataInWithHead[k/4] = tempDataIn[k];
DataInWithHead[k/4] = DataInWithHead[k/4]<<8;
DataInWithHead[k/4] += tempDataIn[k+1];
DataInWithHead[k/4] = DataInWithHead[k/4]<<8;
DataInWithHead[k/4] += tempDataIn[k+2];
DataInWithHead[k/4] = DataInWithHead[k/4]<<8;
DataInWithHead[k/4] += tempDataIn[k+3];
}
}
bool CExa06Doc::CheckData()
{
DWORD datasum = CheckSum(DataInWithHead ,4 ,DataWithHeadLen-3);
DWORD allsum = CheckSum(DataInWithHead ,0 ,DataWithHeadLen-1);
if((DataInWithHead[0]!=0x00000003)||
(DataInWithHead[DataWithHeadLen-3]!=datasum)||
(DataInWithHead[DataWithHeadLen-1]!=allsum))
{
AfxMessageBox("校验和错误");
return false;
}
return true;
}
char CExa06Doc::ConvertHexChar(char ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;
else return (-1);
}
DWORD CExa06Doc::CheckSum(DWORD array[] , int start , int end)
{
DWORD sum=0,temp;
BYTE ttemp;
for(int i=start;i<end;i++)
{
temp=array[i];
for(int j=0;j<=3;j++)
{
ttemp=temp&0xff;
sum+=ttemp;
temp=temp>>8;
}
}
sum=~sum;
return(sum);
}
int CExa06Doc::AddToDataList()
{
CExa06View* pView;
CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
pView = (CExa06View*)pFrame->GetActiveView();
int peaknum = 0;
double temp;
peaknum = DataInWithHead[7];
if(peaknum != PointPerChannel)
return 1;
if(datacont<20)
{
for(int i=0;i<peaknum;i++)
{
temp = ((double)(DataInWithHead[8+i]&0x0000ffff))/1000+180;
tempbuffer.buffer[i] += (ChannelInit[sndNum%ChannelNum][i]-299792.458/temp)*
ChannelValueA[sndNum%ChannelNum][i]+ChannelValueT[sndNum%ChannelNum][i];
}
tempbuffer.CurChannel = sndNum%ChannelNum;
}
else
{
for(int i=0;i<peaknum;i++)
{
tempbuffer.buffer[i] = tempbuffer.buffer[i]/20;
//////////////////////加入对温度的检测/////////////////////////////////////////
if(((tempbuffer.buffer[i]>PreAlarmHigh_Temper)&&(tempbuffer.buffer[i]<AlarmHigh_Temper))||
((tempbuffer.buffer[i]<PreAlarmLow_Temper)&&(tempbuffer.buffer[i]>AlarmLow_Temper)))
{
Beep(100,100);
Mode = 1;
tempbuffer.alarm = 1;
// KillTimer(pView->m_hWnd, 1);
// SetTimer(pView->m_hWnd,1,SamAlarmHZ*1000/80,NULL);
}
else if((tempbuffer.buffer[i]>AlarmHigh_Temper)||(tempbuffer.buffer[i]<AlarmLow_Temper))
{
Beep(1000,1000);
Mode = 1;
tempbuffer.alarm = 1;
// KillTimer(pView->m_hWnd, 1);
// SetTimer(pView->m_hWnd,1,SamAlarmHZ*1000/80,NULL);
}
else
{
if(Mode == 1){
Mode = 0;
tempbuffer.alarm = 0;
// KillTimer(pView->m_hWnd, 1);
// SetTimer(pView->m_hWnd,1,SamNormHZ*1000/80,NULL);
}
}
drawLock.Lock();
tempdraw[ctrlcont-1].buffer[i] = tempbuffer.buffer[i];
drawLock.Unlock();
}
/*
Lock.Lock();
ListBuffer.AddTail(tempbuffer);
Lock.Unlock();
*/
}
return 0;
}
int CExa06Doc::String2Hex(CString str , CByteArray &senddata)
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len=str.GetLength();
senddata.SetSize(len/2);
for(int i=0;i<len;)
{
char lstr,hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}
void CExa06Doc::ShowPara(int i, CSamParaDialog& dlg)
{
dlg.m_nA01 = ChannelValueA[i][0];
dlg.m_nA02 = ChannelValueA[i][1];
dlg.m_nA03 = ChannelValueA[i][2];
dlg.m_nA04 = ChannelValueA[i][3];
dlg.m_nA05 = ChannelValueA[i][4];
dlg.m_nA06 = ChannelValueA[i][5];
dlg.m_nA07 = ChannelValueA[i][6];
dlg.m_nA08 = ChannelValueA[i][7];
dlg.m_nA09 = ChannelValueA[i][8];
dlg.m_nA10 = ChannelValueA[i][9];
dlg.m_nA11 = ChannelValueA[i][10];
dlg.m_nA12 = ChannelValueA[i][11];
dlg.m_nA13 = ChannelValueA[i][12];
dlg.m_nA14 = ChannelValueA[i][13];
dlg.m_nA15 = ChannelValueA[i][14];
dlg.m_nA16 = ChannelValueA[i][15];
dlg.m_nA17 = ChannelValueA[i][16];
dlg.m_nA18 = ChannelValueA[i][17];
dlg.m_nA19 = ChannelValueA[i][18];
dlg.m_nA20 = ChannelValueA[i][19];
dlg.m_nInit01 = ChannelInit[i][0];
dlg.m_nInit02 = ChannelInit[i][1];
dlg.m_nInit03 = ChannelInit[i][2];
dlg.m_nInit04 = ChannelInit[i][3];
dlg.m_nInit05 = ChannelInit[i][4];
dlg.m_nInit06 = ChannelInit[i][5];
dlg.m_nInit07 = ChannelInit[i][6];
dlg.m_nInit08 = ChannelInit[i][7];
dlg.m_nInit09 = ChannelInit[i][8];
dlg.m_nInit10 = ChannelInit[i][9];
dlg.m_nInit11 = ChannelInit[i][10];
dlg.m_nInit12 = ChannelInit[i][11];
dlg.m_nInit13 = ChannelInit[i][12];
dlg.m_nInit14 = ChannelInit[i][13];
dlg.m_nInit15 = ChannelInit[i][14];
dlg.m_nInit16 = ChannelInit[i][15];
dlg.m_nInit17 = ChannelInit[i][16];
dlg.m_nInit18 = ChannelInit[i][17];
dlg.m_nInit19 = ChannelInit[i][18];
dlg.m_nInit20 = ChannelInit[i][19];
dlg.m_nT01 = ChannelValueT[i][0];
dlg.m_nT02 = ChannelValueT[i][1];
dlg.m_nT03 = ChannelValueT[i][2];
dlg.m_nT04 = ChannelValueT[i][3];
dlg.m_nT05 = ChannelValueT[i][4];
dlg.m_nT06 = ChannelValueT[i][5];
dlg.m_nT07 = ChannelValueT[i][6];
dlg.m_nT08 = ChannelValueT[i][7];
dlg.m_nT09 = ChannelValueT[i][8];
dlg.m_nT10 = ChannelValueT[i][9];
dlg.m_nT11 = ChannelValueT[i][10];
dlg.m_nT12 = ChannelValueT[i][11];
dlg.m_nT13 = ChannelValueT[i][12];
dlg.m_nT14 = ChannelValueT[i][13];
dlg.m_nT15 = ChannelValueT[i][14];
dlg.m_nT16 = ChannelValueT[i][15];
dlg.m_nT17 = ChannelValueT[i][16];
dlg.m_nT18 = ChannelValueT[i][17];
dlg.m_nT19 = ChannelValueT[i][18];
dlg.m_nT20 = ChannelValueT[i][19];
dlg.m_strDot01 = ChannelName[i][0];
dlg.m_strDot02 = ChannelName[i][1];
dlg.m_strDot03 = ChannelName[i][2];
dlg.m_strDot04 = ChannelName[i][3];
dlg.m_strDot05 = ChannelName[i][4];
dlg.m_strDot06 = ChannelName[i][5];
dlg.m_strDot07 = ChannelName[i][6];
dlg.m_strDot08 = ChannelName[i][7];
dlg.m_strDot09 = ChannelName[i][8];
dlg.m_strDot10 = ChannelName[i][9];
dlg.m_strDot11 = ChannelName[i][10];
dlg.m_strDot12 = ChannelName[i][11];
dlg.m_strDot13 = ChannelName[i][12];
dlg.m_strDot14 = ChannelName[i][13];
dlg.m_strDot15 = ChannelName[i][14];
dlg.m_strDot16 = ChannelName[i][15];
dlg.m_strDot17 = ChannelName[i][16];
dlg.m_strDot18 = ChannelName[i][17];
dlg.m_strDot19 = ChannelName[i][18];
dlg.m_strDot20 = ChannelName[i][19];
}
void CExa06Doc::EditParm(int i, CSamParaDialog& dlg)
{
ChannelValueA[i][0] = dlg.m_nA01;
ChannelValueA[i][1] = dlg.m_nA02;
ChannelValueA[i][2] = dlg.m_nA03;
ChannelValueA[i][3] = dlg.m_nA04;
ChannelValueA[i][4] = dlg.m_nA05;
ChannelValueA[i][5] = dlg.m_nA06;
ChannelValueA[i][6] = dlg.m_nA07;
ChannelValueA[i][7] = dlg.m_nA08;
ChannelValueA[i][8] = dlg.m_nA09;
ChannelValueA[i][9] = dlg.m_nA10;
ChannelValueA[i][10] = dlg.m_nA11;
ChannelValueA[i][11] = dlg.m_nA12;
ChannelValueA[i][12] = dlg.m_nA13;
ChannelValueA[i][13] = dlg.m_nA14;
ChannelValueA[i][14] = dlg.m_nA15;
ChannelValueA[i][15] = dlg.m_nA16;
ChannelValueA[i][16] = dlg.m_nA17;
ChannelValueA[i][17] = dlg.m_nA18;
ChannelValueA[i][18] = dlg.m_nA19;
ChannelValueA[i][19] = dlg.m_nA20;
ChannelInit[i][0] = dlg.m_nInit01;
ChannelInit[i][1] = dlg.m_nInit02;
ChannelInit[i][2] = dlg.m_nInit03;
ChannelInit[i][3] = dlg.m_nInit04;
ChannelInit[i][4] = dlg.m_nInit05;
ChannelInit[i][5] = dlg.m_nInit06;
ChannelInit[i][6] = dlg.m_nInit07;
ChannelInit[i][7] = dlg.m_nInit08;
ChannelInit[i][8] = dlg.m_nInit09;
ChannelInit[i][9] = dlg.m_nInit10;
ChannelInit[i][10] = dlg.m_nInit11;
ChannelInit[i][11] = dlg.m_nInit12;
ChannelInit[i][12] = dlg.m_nInit13;
ChannelInit[i][13] = dlg.m_nInit14;
ChannelInit[i][14] = dlg.m_nInit15;
ChannelInit[i][15] = dlg.m_nInit16;
ChannelInit[i][16] = dlg.m_nInit17;
ChannelInit[i][17] = dlg.m_nInit18;
ChannelInit[i][18] = dlg.m_nInit19;
ChannelInit[i][19] = dlg.m_nInit20;
ChannelValueT[i][0] = dlg.m_nT01;
ChannelValueT[i][1] = dlg.m_nT02;
ChannelValueT[i][2] = dlg.m_nT03;
ChannelValueT[i][3] = dlg.m_nT04;
ChannelValueT[i][4] = dlg.m_nT05;
ChannelValueT[i][5] = dlg.m_nT06;
ChannelValueT[i][6] = dlg.m_nT07;
ChannelValueT[i][7] = dlg.m_nT08;
ChannelValueT[i][8] = dlg.m_nT09;
ChannelValueT[i][9] = dlg.m_nT10;
ChannelValueT[i][10] = dlg.m_nT11;
ChannelValueT[i][11] = dlg.m_nT12;
ChannelValueT[i][12] = dlg.m_nT13;
ChannelValueT[i][13] = dlg.m_nT14;
ChannelValueT[i][14] = dlg.m_nT15;
ChannelValueT[i][15] = dlg.m_nT16;
ChannelValueT[i][16] = dlg.m_nT17;
ChannelValueT[i][17] = dlg.m_nT18;
ChannelValueT[i][18] = dlg.m_nT19;
ChannelValueT[i][19] = dlg.m_nT20;
ChannelName[i][0] = dlg.m_strDot01;
ChannelName[i][1] = dlg.m_strDot02;
ChannelName[i][2] = dlg.m_strDot03;
ChannelName[i][3] = dlg.m_strDot04;
ChannelName[i][4] = dlg.m_strDot05;
ChannelName[i][5] = dlg.m_strDot06;
ChannelName[i][6] = dlg.m_strDot07;
ChannelName[i][7] = dlg.m_strDot08;
ChannelName[i][8] = dlg.m_strDot09;
ChannelName[i][9] = dlg.m_strDot10;
ChannelName[i][10] = dlg.m_strDot11;
ChannelName[i][11] = dlg.m_strDot12;
ChannelName[i][12] = dlg.m_strDot13;
ChannelName[i][13] = dlg.m_strDot14;
ChannelName[i][14] = dlg.m_strDot15;
ChannelName[i][15] = dlg.m_strDot16;
ChannelName[i][16] = dlg.m_strDot17;
ChannelName[i][17] = dlg.m_strDot18;
ChannelName[i][18] = dlg.m_strDot19;
ChannelName[i][19] = dlg.m_strDot20;
}
void CExa06Doc::AddPointPos()
{
PointPos[0].x = 28; PointPos[0].y = 148;
PointPos[1].x = 81; PointPos[1].y = 149;
PointPos[2].x = 133; PointPos[2].y = 149;
PointPos[3].x = 180; PointPos[3].y = 149;
PointPos[4].x = 223; PointPos[4].y = 149;
PointPos[5].x = 278; PointPos[5].y = 149;
PointPos[6].x = 317; PointPos[6].y = 149;
PointPos[7].x = 361; PointPos[7].y = 149;
PointPos[8].x = 432; PointPos[8].y = 149;
PointPos[9].x = 481; PointPos[9].y = 149;
PointPos[10].x = 531; PointPos[10].y = 149;
PointPos[11].x = 584; PointPos[11].y = 149;
PointPos[12].x = 623; PointPos[12].y = 149;
PointPos[13].x = 668; PointPos[13].y = 149;
PointPos[14].x = 711; PointPos[14].y = 149;
PointPos[15].x = 752; PointPos[15].y = 149;
PointPos[16].x = 185; PointPos[16].y = 464;
PointPos[17].x = 342; PointPos[17].y = 465;
PointPos[18].x = 434; PointPos[18].y = 435;
PointPos[19].x = 594; PointPos[19].y = 465;
PointPos[20].x = 926; PointPos[20].y = 260;
PointPos[21].x = 926; PointPos[21].y = 355;
PointPos[22].x = 1182; PointPos[22].y = 260;
PointPos[23].x = 1182; PointPos[23].y = 355;
PointPos[24].x = 1437; PointPos[24].y = 260;
PointPos[25].x = 1437; PointPos[25].y = 355;
PointPos[26].x = 481 ; PointPos[26].y = 671;
PointPos[27].x = 638 ; PointPos[27].y = 675;
PointPos[28].x = 748 ; PointPos[28].y = 675;
PointPos[29].x = 1420 ; PointPos[29].y = 674;
PointPos[30].x = 98 ; PointPos[30].y = 917;
PointPos[31].x = 144 ; PointPos[31].y = 917;
PointPos[32].x = 188 ; PointPos[32].y = 917;
PointPos[33].x = 230 ; PointPos[33].y = 917;
PointPos[34].x = 272 ; PointPos[34].y = 917;
PointPos[35].x = 313 ; PointPos[35].y = 917;
PointPos[36].x = 358 ; PointPos[36].y = 917;
PointPos[37].x = 400 ; PointPos[37].y = 917;
PointPos[38].x = 440 ; PointPos[38].y = 917;
PointPos[39].x = 480 ; PointPos[39].y = 917;
PointPos[40].x = 552 ; PointPos[40].y = 917;
PointPos[41].x = 596 ; PointPos[41].y = 917;
PointPos[42].x = 638 ; PointPos[42].y = 917;
PointPos[43].x = 679 ; PointPos[43].y = 917;
PointPos[44].x = 745 ; PointPos[44].y = 917;
PointPos[45].x = 791 ; PointPos[45].y = 917;
PointPos[46].x = 832 ; PointPos[46].y = 917;
PointPos[47].x = 873 ; PointPos[47].y = 917;
PointPos[48].x = 921 ; PointPos[48].y = 917;
PointPos[49].x = 1028 ; PointPos[49].y = 917;
PointPos[50].x = 1071 ; PointPos[50].y = 917;
PointPos[51].x = 1116 ; PointPos[51].y = 917;
PointPos[52].x = 1158 ; PointPos[52].y = 917;
PointPos[53].x = 1199 ; PointPos[53].y = 917;
PointPos[54].x = 1240 ; PointPos[54].y = 917;
PointPos[55].x = 1285 ; PointPos[55].y = 917;
PointPos[56].x = 1326 ; PointPos[56].y = 917;
PointPos[57].x = 1367 ; PointPos[57].y = 917;
PointPos[58].x = 1416 ; PointPos[58].y = 917;
PointPos[59].x = 1470 ; PointPos[59].y = 917;
}
void CExa06Doc::ChannelParam()
{
CString str;
for(int i=0;i<ChannelNum;i++)
{
for(int j=0;j<PointPerChannel;j++)
{
str.Format("%d-%d",i+1,j+1);
ChannelName[i][j] = str;
ChannelValueA[i][j] = 100;
// ChannelInit[i][j] = 0;
ChannelValueT[i][j] = 20;
}
}
ChannelInit[0][0] = 1539.2917;
ChannelInit[0][1] = 1541.2543;
ChannelInit[0][2] = 1542.6501;
ChannelInit[0][3] = 1544.2792;
ChannelInit[0][4] = 1546.4938;
ChannelInit[0][5] = 1547.995;
ChannelInit[0][6] = 1549.5553;
ChannelInit[0][7] = 1550.9983;
ChannelInit[0][8] = 1552.838;
ChannelInit[0][9] = 1553.8924;
ChannelInit[0][10] = 1555.513;
ChannelInit[0][11] = 1556.8943;
ChannelInit[0][12] = 1558.7967;
ChannelInit[0][13] = 1560.2813;
ChannelInit[0][14] = 1561.3865;
ChannelInit[1][0] = 1533.7869;
ChannelInit[1][1] = 1536.1447;
ChannelInit[1][2] = 1537.3105;
ChannelInit[1][3] = 1538.6439;
ChannelInit[1][4] = 1540.0271;
ChannelInit[1][5] = 1542.0154;
ChannelInit[1][6] = 1543.4285;
ChannelInit[1][7] = 1545.3936;
ChannelInit[1][8] = 1546.9407;
ChannelInit[1][9] = 1548.3308;
ChannelInit[1][10] = 1550.2845;
ChannelInit[1][11] = 1551.8654;
ChannelInit[1][12] = 1552.9828;
ChannelInit[1][13] = 1554.9563;
ChannelInit[1][14] = 1556.4578;
ChannelInit[2][0] = 1538.0045;
ChannelInit[2][1] = 1539.4577;
ChannelInit[2][2] = 1541.5158;
ChannelInit[2][3] = 1543.0233;
ChannelInit[2][4] = 1545.1865;
ChannelInit[2][5] = 1546.3901;
ChannelInit[2][6] = 1547.5795 ;
ChannelInit[2][7] = 1549.4992;
ChannelInit[2][8] = 1551.3113;
ChannelInit[2][9] = 1553.9407 ;
ChannelInit[2][10] = 1555.1257;
ChannelInit[2][11] = 1556.4336 ;
ChannelInit[2][12] = 1558.27;
ChannelInit[2][13] = 1559.9485;
ChannelInit[2][14] = 1561.7037;
ChannelInit[3][0] = 1534.6977;
ChannelInit[3][1] = 1535.9794;
ChannelInit[3][2] = 1538.3597;
ChannelInit[3][3] = 1540.0113;
ChannelInit[3][4] = 1542.0074;
ChannelInit[3][5] = 1543.1663;
ChannelInit[3][6] = 1545.4016;
ChannelInit[3][7] = 1547.1163;
ChannelInit[3][8] = 1548.1869;
ChannelInit[3][9] = 1550.4448;
ChannelInit[3][10] = 1551.7369;
ChannelInit[3][11] = 1553.2;
ChannelInit[3][12] = 1555.0531;
ChannelInit[3][13] = 1556.8539;
ChannelInit[3][14] = 1558.424;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -