linux下的实时绘图

Linux使用graphics.h图形库绘图 对于现代windows系统 阅读详情

我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,根本就不实时,因为这个函数是异步的,如果线程循环的比较频繁的话,绘图区就来不及刷新,更何况我有10个draw_area需要更新。

    百度了下,发现了gtk_widget_send_expose这个函数,查了下devhelp,有这样一段话:

    Very rarely-used function. This function is used to emit an expose event signals on a widget. This function is not normally used directly...

    If you want to force an area of a window to be redrawn, use gdk_window_invalidate_rect() or gdk_window_invalidate_region(). To cause the redraw to be done immediately, follow that call with a call to gdk_window_process_updates().

    很明显了,使用gdk_window_invalidate_rect和gdk_window_process_updates,但使用了这两个函数之后还是没达到我要的效果,我要按下键盘才能更新绘图区,沮丧。

    继续百度,发现了XFlush这个函数,调用了下,XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));果然可以,不过又遇到了一个问题,程序运行一段时间之后,就没反应了,我按了下键盘,程序就崩溃了,终端输出了个提示,fatal io error 11,资源不够用啊之类的错误,我想函数应该不会出问题,线程和绘图之间的交错执行倒是让我感觉不妥,用GDB调试的时候,断点一会进入线程函数,一会进入绘图函数,我想问题大概就出在这里,又查了些线程的资料,补充后的代码如下:

具体的绘图就写在绘图区的信号响应函数中,线程这一块还是第一次用,耗了我一天的时间来解决这个问题,结果就因为enter和leave,问题虽然解决了,但是线程这一块还要深入研究下,以后用到的还有很多。

 

补充(2010.05.26):

        gdk_window_invalidate_rect (draw_area->window,
            NULL, FALSE);
        gdk_window_process_updates (draw_area->window,
            FALSE);
        XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));
这三句话可以用gdk_flush代替,而且更通用一些,适合X或者directfb

Linux环境下的QT动态曲线绘制实践指南 QT库是一套C++开发框架,由Trolltech公司开发,现属于Nokia旗下。它是一个跨平台的库,提供了一整套的工具和类来帮助开发者快速构建图形用户界面(GUI)应用程序。QT支持多种操作系统,包括Windows、Linux、Mac OS X、Android和iOS等。由于其良好的模块化设计和一致的API,QT在桌面应用程序和嵌入式设备的开发领域都得到了广泛的应用。QT图形视图模块(QGraphicsView)提供了一个用于管理、导航和渲染图形场景的高效方式。 阅读详情

相关推荐

linux下的画图工具——Gnuplot用法

linux环境下的画图工具,可以画出鸟巢等一些复杂的图形,画paper中的一些复杂图形很方便,很实用。

assertion 'GTK_IS_WIDGET (widget)' failed的解决办法

assertion ‘GTK_IS_WIDGET (widget)’ failed的解决办法 Linux系统下GTK+ 利用Glade界面设计过程中出现问题编译后执行出现下面错误:gcc -o demoglade demoglade.c `pkg-config --cflags --libs gtk+-2.0` ./demoglade (demoglade:17010): Gtk-CRITICAL

YunLan天地间 1万+

用 GTK+和GDK开发linux图形用户界面应用

用 GTK+和GDK开发linux图形用户界面应用

linux下利用gnuplot画图的方法

服务器 SSD产品测试 高级工程师必备技能

weixin_43841091的博客 3133

Linux的绘图工具库GDK(一).pdf

Linux的绘图工具库GDK(一).pdf

天融信防火墙NGFW4000(TG-4628)安装配置笔记

配置一台全新的天融信防火墙NGFW4000,配置完后,内网用户10.10.1.0/24和10.10.2.0/24可以通过防火墙上网,外网用户可以通过访问防火墙的外网接口地址来访问内网的WEB服务器10.10.1.200,并且内网用户也可以通过WEB服务器的外网地址进行访问。 网络说明: 防火墙外网接口地址:218.90.123.121/30 防火墙内网接口地址:19...

weixin_33671935的博客 4455

linux下Python的学习(五)用matplotlib画iostat的折线图

python linux 服务器测试 SSD 测试

weixin_43841091的博客 1096

数据库实验报告--MySQL

数据库完整版报告--MySQL 包括数据库创建、表的创建、视图以及授权和触发器的创建等内容,全是精华!看完点赞加收藏O(∩_∩)O~。

Mortalz7 4924

GDK8——强大的Linux内核调试工具

内核(Kernel)总是那么捉摸不透,而且有时也会出BUG,这时我们也应该对内核进行调试,但内核不像软件:内核调试很艰难,内核错误往往会导致系统宕机,很难保留出错时的现场而且任何对内核空间的访问和修改都可能引发更多错误。同时,市面上的调试工具(例如WinDbg、KD、CDB等)也不能很好的解决这些问题。机缘巧合之下,发现了一个非常强大的内核调试工具:GDK8(Web:),

iuu77的博客 2259

别再手动填数据了!Vivado里用.coe文件给ROM IP核预装数据的保姆级教程

本文详细介绍了在Vivado中使用.coe文件为ROM IP核预装数据的全流程教程,包括文件格式规范、数据转换技巧和Vivado配置指南。通过自动化数据加载,开发者可以显著提升FPGA开发效率,避免手动输入错误,适用于查找表、波形存储等多种应用场景。

weixin_33377602的博客 338

22、忆阻器、忆阻系统及其神经形态应用综述

本文综述了忆阻器与忆阻系统的理论基础及其在神经形态系统中的广泛应用。从忆阻器的基本定义出发,介绍了其在非线性电路、存储技术、通信和神经形态计算等领域的应用潜力。重点探讨了基于忆阻器的神经元模型(如Hodgkin-Huxley、FitzHugh-Nagumo和Hindmarsh-Rose模型)、突触实现方式及多种忆阻神经网络架构,包括细胞神经网络、脉冲神经网络和递归神经网络等。此外,深入分析了忆阻器在水库计算中的理论研究与硬件实现进展,展示了其在时间序列处理、模式识别和信号预测等方面的优异性能。尽管忆阻技术前

kiwi8的博客 207

linux下画图函数,linux下的实时绘图

我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,根本就不实时,因为这个函数是异步的,如果线程循环的比较频繁的话,绘图区就来不及刷新,更何况我有10个draw_area需要更新。百度了下,发现了gtk_widget_send_exp...

weixin_35610224的博客 754

华为OD机试 - 统计文本数量(Java 2025 A卷 100分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1438

Linux终端轻量监控:gnuplot+ps+awk实时绘图实战

gnuplot 是一种面向命令行的轻量级科学绘图工具,基于纯文本数据流工作,核心原理是通过标准输入接收结构化数值(如制表符分隔的进程指标),结合脚本指令完成坐标映射与图形渲染。其技术价值在于极低的资源开销(内存<5MB)和零GUI依赖,特别适用于无图形界面、资源受限或自动化嵌入场景,如边缘设备监控、Docker容器内资源快照、CI/CD流水线可视化等。相比 Matplotlib 或 QtCharts 等重型方案,gnuplot 在终端中可直接驱动动态趋势图,配合 ps 数据采集与 awk 实时清洗,构成符合

weixin_28829325的博客 314

BurpSuite工具HaE插件好用正则收集

数据集合面板里面直接查询捕获到的相关数据内容,省去一个个翻找数据包内容的烦恼。插件捕获到匹配正则表达式的数据包后,可以在。可以对正则条目进行添加、编辑、删除。规则信息管理,我们点击。

墨痕诉清风的博客 651

基于 YOLOv26 的车辆违规停车检测系统:实时监控

本文提出了一种基于YOLOv26的车辆违规停车实时检测系统。系统采用多模块架构,包括视频预处理、YOLOv26目标检测、DeepSORT目标跟踪、停车区域定义、行为分析和违规判定等功能模块。关键技术包括使用YOLOv26s模型进行车辆检测,结合DeepSORT算法实现车辆跟踪,支持多种停车区域定义方式(多边形、矩形、限时区域等)。系统通过边缘计算平台部署,实现了对道路边、禁止停车区等场景的实时监控,能够准确识别长时间停车、禁止区域停车等违规行为,并触发告警机制。实验结果表明,该系统在车辆检测准确率和违规判定

一键难忘的博客 773

linux实时绘图库,matplotlib绘图库之Artist对象详解

Matplotlib是一个面向对象的绘图库,在最终图像上所呈现出来的所有元素,都是一个可以控制的对象,那么如何理解绘图的过程呢?可以简单地类比在画布上画图的过程,首先大致的绘制流程:创建Figure对象(相当于在画架上添加画布)为灭一个Figure对象添加一个或者多个Axes对象(在某张画布上划分不同的画图区域)调用Axes对象的方法来创建各种简单类型的Artist对象(在某一个画图区域添加各种具...

weixin_39725403的博客 287

第10章: MMU notifier与HMM的协作

本文摘要: HMM(Heterogeneous Memory Management)是Linux内核提供的异构内存管理框架,用于统一CPU与设备(如GPU、DSP等)的内存访问。它通过镜像页表技术实现虚拟地址空间共享,自动同步CPU和设备页表变化,支持透明的内存迁移和设备内存管理。HMM构建在mmu_interval_notifier机制上,利用序列号检测页表修改冲突,提供高效并发控制。核心数据结构包括hmm_range和HMM PFN标志位,通过hmm_range_fault()实现页表遍历和缺页处理。

图形/计算GPU的驱动与虚拟化技术分享园地 3097

java matplot_使用Matplotlib以非阻塞方式绘图

实时绘图import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 2 * np.pi, 100)# plt.axis([x[0], x[-1], -1, 1]) # disable autoscalingfor point in x:plt.plot(point, np.sin(2 * point), '.',...

weixin_28974985的博客 572

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RuntimeError('Invalid DISPLAY variable')的处理及linux服务器上使用matplotlib.pyplot绘图

使用远程连接Linux服务器运行Python代码时出现如下错误: Traceback (most recent call last): File "./tools/demo.py", line 153, in <module> demo(sess, net, im_name) File "./tools/demo.py", lin

Mao_Jonah的博客 2272

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

为什么你应该立即尝试Marker:Linux上最强大的Markdown编辑器

如果你在Linux平台上寻找一款功能全面的Markdown编辑器,那么Marker绝对是你的不二之选。这款基于GTK3开发的编辑器不仅界面简洁美观,更集成了数学公式渲染、实时预览、绘图工具等强大功能,让文档编写变得前所未有的高效和愉悦。 ## 🎯 完美的双栏编辑体验 Marker采用经典的左右分栏设计,左侧是Markdown源代码编辑区,右侧是实时渲染的预览窗口。这种布局让你在编写代码的同时

gitblog_00526的博客 661

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vscode 远程调试绘图方法 python并画出loss曲线

通过 vscode 进行远程调试时无法直接显示远程绘图结果,每次通过保存图片的方式太过繁琐,其实可以通过显式配置 Linux 系统的 DISPLAY 环境变量实现直接显示绘图结果。 一、首先安装并配置 X11 安装包 sudo apt-get install xorg sudo apt-get install openbox 并修改配置 vim /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLas

duxinyuhi的专栏 3590

linux账号和权限管理思维导图,Linux系统支持的思维导图软件有哪些?

原标题:Linux系统支持的思维导图软件有哪些?思维导图是一种把抽象概念图像化的思维方式,对于打破惯性思维,锻炼全局思考观念,开发大脑潜能都有非常好的效果。如今思维导图日益流行,可依旧有些看官对思维导图了解甚少,思维导图功能十分丰富,若是笔者一一介绍,想必各位看官也无耐心看下去了。那么我们就借助一张思维导图给大家带来一些初步的了解。 由图中就可已看出思维导图的厉害之处,而这还只是冰山一角,正如大家...

weixin_39805387的博客 385

Lorien无限画布:重新定义数字创作边界的开源绘图神器

在数字创作领域,传统绘图软件的画布限制常常成为创意表达的枷锁。Lorien作为一款基于Godot引擎开发的开源无限画布绘图软件,为Windows、Linux和macOS用户带来了前所未有的创作自由。这款工具不仅打破了空间限制,更通过直观的界面设计和强大的功能组合,为各类用户提供了完美的数字绘图解决方案。 ## 项目亮点速览 Lorien的核心价值在于其革命性的无限画布设计。与需要预先设定画布尺

gitblog_00197的博客 588

Autotest监控与报告:实时测试状态跟踪与结果分析

Autotest是一款强大的Linux自动化测试工具,能够帮助开发者实现测试流程的自动化管理,同时提供完善的监控与报告功能,让测试状态实时可见,结果分析高效准确。无论是新手还是资深用户,都能通过Autotest的监控与报告系统轻松掌握测试动态,及时发现问题并优化测试策略。 ## 一、Autotest监控与报告系统架构解析 📊 Autotest的监控与报告系统是其核心功能之一,它基于清晰的架构

gitblog_00946的博客 404

【ROS2】演示:理解实时编程

目录背景安装并运行演示运行测试刚刚发生了什么事?调整内存锁定权限输出概述延迟为调度程序设置权限绘图结果背景实时计算是许多机器人系统的关键特性,特别是自动驾驶汽车、航天器和工业制造等安全和任务关键型应用。我们在设计和原型开发 ROS 2 时考虑了实时性能约束,因为这是在 ROS 1 的早期阶段没有考虑到的需求,现在要将 ROS 1 重构为实时友好已经变得难以处理。本文档概述了实时计算的...

cxyhjl的博客 959
上一篇: debian非正常关机进不了图形界面的解决方法
下一篇: Debian系统配置文件说明
tracing
博客等级 码龄20年 108粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值