📄 draw_wave.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 + -