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

📄 draw_wave.c

📁 uClinux 下MicroWindows开发的电机控制平台软件和模拟示波器的双路数据采集系统源码
💻 C
字号:
//---------------------------------------------------显示波形的函数void *FUN_Draw_Wave(){   register int INT_Temp_ADResult=0;//AD临时存放   register int INT_P1Temp_ADResult=0;//存放1通道前一个值   register int INT_P2Temp_ADResult=0;//存放2通道前一个值   register int INT_Totol_Count=0;//画波形的X值   register int INT_Temp_1=0;//监测起采起画点   register int INT_Temp_2=0;//监测起采起画点   register int INT_Temp_3=0;//监测起采起画点   register int INT_Temp_Sub1_One=0;//1通道,INT_Temp_2-INT_Temp_1   register int INT_Temp_Sub2_One=0;//INT_Temp_3-INT_Temp_2   register int INT_Temp_Sub1_Two=0;//2通道,INT_Temp_2-INT_Temp_1   register int INT_Temp_Sub2_Two=0;//INT_Temp_3-INT_Temp_2   register int i=0;   register int k=0;   Wid_Wave_Temp=GrNewPixmap(320,200,NULL);while(1) {       while(1)//等待起采起画点	    {	     INT_Temp_1=FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2);	     INT_Temp_2=FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2);	     INT_Temp_3=FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2)+FUN_Get_AD_Result(2);	     INT_Temp_Sub1_One=INT_Temp_2-INT_Temp_1;	     INT_Temp_Sub2_One=INT_Temp_3-INT_Temp_2;         	     INT_Temp_1=FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3);	     INT_Temp_2=FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3);	     INT_Temp_3=FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3)+FUN_Get_AD_Result(3);	     INT_Temp_Sub1_Two=INT_Temp_2-INT_Temp_1;	     INT_Temp_Sub2_Two=INT_Temp_3-INT_Temp_2;	     if(((INT_Temp_Sub1_One>0)&&(INT_Temp_Sub2_One<0))||((INT_Temp_Sub1_Two>0)&&(INT_Temp_Sub2_Two<0)))//双通道中任意一个满足	      {	        break;	      }//if	    }//while(1)	                Mask_AD=0;//读入AD标志	    INT_DISABLE(8);//关中断  	    for(i=0;i<320;i++)//取得AD数据            {	         for(k=1;k<Mask_Screen_XCount;k++)//对X轴的拉伸	           {;}				   if(Mark_System_State&Mark_System_Stop)//暂停时,不采集数据既不更新AD数组缓冲区,但还在画波形				   {  				      AD_Data_Buffer_One[i]=FUN_Get_AD_Result(2);				      AD_Data_Buffer_Two[i]=FUN_Get_AD_Result(3);  				   }//if	           //}//for	    }//for	    INT_ENABLE(8);//开中断	    Mask_AD=1;//读入AD标志	    Mask_Resh=0;	    if(Mask_Store)	    {	     for(i=0;i<320;i++)	      {	        Show_Data_Buffer_One[i]=AD_Data_Buffer_One[i];	        Show_Data_Buffer_Two[i]=AD_Data_Buffer_Two[i];	      }	    }	    Mask_Resh=1;	    GrClearArea(Wid_Wave_Temp,0,0,320,200,0);//清屏	    GrFillRect(Wid_Wave_Temp,Gid_Draw_White,0,0,320,200);//画填充矩形为背景白色	    FUN_Draw_Angel();//画坐标网格	    	    INT_P1Temp_ADResult = AD_Data_Buffer_One[0];//取得AD值            INT_P1Temp_ADResult = INT_P1Temp_ADResult/5.12;//对其进行坐标的变换            INT_P1Temp_ADResult = 200-INT_P1Temp_ADResult;//对其进行坐标的变换	    INT_P1Temp_ADResult = 100+(INT_P1Temp_ADResult-100)*Mask_YSpread_One;//Y轴的拉伸            INT_P1Temp_ADResult = INT_P1Temp_ADResult-Mask_YMove_One;//Y轴的上移下移                    INT_P2Temp_ADResult = AD_Data_Buffer_Two[0];//取得AD值            INT_P2Temp_ADResult = INT_P2Temp_ADResult/5.12;//对其进行坐标的变换            INT_P2Temp_ADResult = 200-INT_P2Temp_ADResult;//对其进行坐标的变换	    INT_P2Temp_ADResult = 100+(INT_P2Temp_ADResult-100)*Mask_YSpread_Two;//Y轴的拉伸	    INT_P2Temp_ADResult = INT_P2Temp_ADResult-Mask_YMove_Two;//Y轴的上移下移        for(INT_Totol_Count=0;INT_Totol_Count<320;INT_Totol_Count++)//画波形          {                       if(Mark_Channel_State!=2)//除了只显示2通道时,都显示1通道			 {			   if(Mask_Show)			   {			   INT_Temp_ADResult = Show_Data_Buffer_One[INT_Totol_Count];//取得AD值                           INT_Temp_ADResult = INT_Temp_ADResult/5.12;//对其进行坐标的变换                           INT_Temp_ADResult = 200-INT_Temp_ADResult;//对其进行坐标的变换			   INT_Temp_ADResult = 100+(INT_Temp_ADResult-100)*Mask_YSpread_One;//Y轴的拉伸                           INT_Temp_ADResult = INT_Temp_ADResult-Mask_YMove_One;//Y轴的上移下移			   GrPoint(Wid_Wave_Temp,Gid_Draw_Green_Black_One,INT_Totol_Count,INT_Temp_ADResult);			   }			   INT_Temp_ADResult = AD_Data_Buffer_One[INT_Totol_Count];//取得AD值                           INT_Temp_ADResult = INT_Temp_ADResult/5.12;//对其进行坐标的变换                           INT_Temp_ADResult = 200-INT_Temp_ADResult;//对其进行坐标的变换			   INT_Temp_ADResult = 100+(INT_Temp_ADResult-100)*Mask_YSpread_One;//Y轴的拉伸                           INT_Temp_ADResult = INT_Temp_ADResult-Mask_YMove_One;//Y轴的上移下移			   if(INT_Totol_Count)			   {	                     GrLine(Wid_Wave_Temp,Gid_Draw_Green_Black_One,INT_Totol_Count-1,INT_P1Temp_ADResult,INT_Totol_Count,INT_Temp_ADResult);	                   }			   GrPoint(Wid_Wave_Temp,Gid_Draw_Green_Black_One,INT_Totol_Count,INT_Temp_ADResult);	                   INT_P1Temp_ADResult=INT_Temp_ADResult;			 }//if		       if(Mark_Channel_State!=1)//除了只显示1通道时,都显示2通道			 {			   if(Mask_Show)			   {			   INT_Temp_ADResult = Show_Data_Buffer_Two[INT_Totol_Count];//取得AD值                           INT_Temp_ADResult = INT_Temp_ADResult/5.12;//对其进行坐标的变换                           INT_Temp_ADResult = 200-INT_Temp_ADResult;//对其进行坐标的变换			   INT_Temp_ADResult = 100+(INT_Temp_ADResult-100)*Mask_YSpread_One;//Y轴的拉伸                           INT_Temp_ADResult = INT_Temp_ADResult-Mask_YMove_One;//Y轴的上移下移			   GrPoint(Wid_Wave_Temp,Gid_Draw_Red_Black_Two,INT_Totol_Count,INT_Temp_ADResult);			   }			   INT_Temp_ADResult = AD_Data_Buffer_Two[INT_Totol_Count];//取得AD值                           INT_Temp_ADResult = INT_Temp_ADResult/5.12;//对其进行坐标的变换                           INT_Temp_ADResult = 200-INT_Temp_ADResult;//对其进行坐标的变换			   INT_Temp_ADResult = 100+(INT_Temp_ADResult-100)*Mask_YSpread_Two;//Y轴的拉伸			   INT_Temp_ADResult = INT_Temp_ADResult-Mask_YMove_Two;//Y轴的上移下移			   if(INT_Totol_Count)			   {	                     GrLine(Wid_Wave_Temp,Gid_Draw_Red_Black_Two,INT_Totol_Count-1,INT_P2Temp_ADResult,INT_Totol_Count,INT_Temp_ADResult);	                   }			   GrPoint(Wid_Wave_Temp,Gid_Draw_Red_Black_Two,INT_Totol_Count,INT_Temp_ADResult);	                   INT_P2Temp_ADResult=INT_Temp_ADResult;			 }//if          }//for	  GrCopyArea(Wid_Wave,Gid_Draw_White,0,0,320,200,Wid_Wave_Temp,0,0,0);	  if(!Mark_System_Stop)	  {	   pthread_exit(NULL);	  } }//while(1)}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -