• codeblock图形界面编程(五)基于ege库的数据采集波形绘图


    codeblock图形界面编程(五)基于ege库的绘图

    在嵌入式的项目开发中,数据检测、记录和分析往往是必要的功能,为了更加直观有效地展示数据,图形化的显示和分析往往事半功倍,另外,在分析故障情况是,往往需要区分问题原因,专业人员通过展示的图形,就可以区分是数据采集问题、还是数据分析算法问题,达到缩小范围,高效找到并解决问题的目的。

    ege库在codeblock中配置

    EGE, 全称 Easy Graphics Engine(简易图形引擎),是 windows 下的简易绘图库,是一个面向 C/C++ 语言的图形库,官网下载dz :

    	https://xege.org
    
    • 1

    当前最新版本为:

    	ege20.08_all(推荐, 支持vs2010-vs2019以及devcpp,codeblocks等)
    
    • 1

    推荐使用。

    关于 ege图形库在codeblock中的安装和配置,网上教程好多,不在赘述。在此只强调两点:

    1. 一定要正确配置ege头文件目录,目录名字中不要有中文。
    2. ege的lib文件夹中要选择正确的codeblock版本

    一定要和codeblock的版本一致,如下图:

    在这里插入图片描述

    ege库常用函数

    基础函数

     (1)初始化,创建窗口
    initgraph(Length_PicX, Length_PicY,INIT_RENDERMANUAL);	
    (2)设置绘画颜色
    setcolor(EGERGB(0xFF, 0x0, 0x0));
    (3)设置背景颜色
    setbkcolor(WHITE);
    (4)画圆
    circle(320, 240, 100);
    (5)画直线 
    ege_line(Zero_X, Zero_Y, Length_X,Length_Y);
    (6)结束绘图
    closegraph();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    进阶函数

    (1)   画矩形和填充矩形
    
    void EGEAPI ege_rectangle(float x, float y, float w, float h, PIMAGE pimg = NULL);
    void EGEAPI ege_fillrect(float x, float y, float w, float h, PIMAGE pimg = NULL);
    
    (2)画多边形和填充多边形
    
    void EGEAPI ege_drawpoly(int numpoints, ege_point* polypoints, PIMAGE pimg = NULL);
    void EGEAPI ege_fillpoly(int numpoints, ege_point* polypoints, PIMAGE pimg = NULL);
    
    (3)画椭圆和填充椭圆
    
    void EGEAPI ege_ellipse(float x, float y, float w, float h, PIMAGE pimg = NULL);
    void EGEAPI ege_fillellipse(float x, float y, float w, float h, PIMAGE pimg = NULL);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    (4) 画扇形和填充扇形

    void EGEAPI ege_pie(float x, float y, float w, float h, float stangle, float sweepAngle, PIMAGE pimg = NULL);
    void EGEAPI ege_fillpie(float x, float y, float w, float h, float stangle, float sweepAngle, PIMAGE pimg = NULL);
    
    • 1
    • 2

    (5)获取图像文件:

    PIMAGE getimage(pimg, "图片文件名(带扩展名)");
    该函数有多个重载,分别从不同的地方获取图像
    
    • 1
    • 2

    项目实例

    在本项目实例中,我们实现一个50hz数据采集波形的输出功能,程序实现如下:

    	int Drad_Pic_from_Datet(unsigned int *buff,int length,int rad)
    	{
    	    int i;		
    	    int StartX,StartY,EndX,EndY;		
    		initgraph(800, 600);
    		//设置绘画颜色为红色
    		setcolor(EGERGB(0xFF, 0x0, 0x0));
    		//设置背景颜色为白色
    		setbkcolor(WHITE);
    	
    		//直线 x坐标轴
    		ege_line(Zero_X, Zero_Y, Zero_X+Length_X, Zero_Y+0);
    		
    	
    		//直线 y坐标轴
    		ege_line(Zero_X, Zero_Y+Length_Y, Zero_X+0, Zero_Y-Length_Y);
    
    		for(i=0;i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    运行后,输出图形如下:

    在这里插入图片描述当然,不同的采集数据决定了输出波形的形状,我们也可以对入口参数buff做工具填充,实现填充图形的显示功能。

  • 相关阅读:
    esp8266用arduino连上阿里云(图文操作,100%成功)
    深度学习之基于YoloV5-Pose的人体姿态检测可视化系统
    2流高手速成记(之二):SpringBoot之基础Web开发
    开题报告:基于java企业公司网站系统 毕业设计论文开题报告模板
    vue中的mixin混入
    应用部署引起上游服务抖动问题分析及优化实践方案
    蓝桥杯嵌入式国赛笔记(4):多路AD采集
    戴姆勒——从豪华私家车到无人驾驶飞机
    思科路由器配置
    c:变参函数:汇编解析;va_list;marco 宏:__VA_ARGS__
  • 原文地址:https://blog.csdn.net/cyjbj/article/details/127410140