⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exa06doc.cpp

📁 比较经典的串口开发原码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// 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 + -