LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃

203 阅读4分钟

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃

出现下列问题,如何解决?

1.        LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃

2.        正在通过cRIO-9034运行独立的LabVIEW应用程序,但它因drawmgr.cpp中的错误而崩溃

3.        在 Windows 任务管理器中注意到LabVIEW使用的GDI对象数量接近10,000

4.        错误发生的时间不一致

5.        这些可能发生在VI编辑模式下、运行时和LabVIEW启动期间

方案

尝试减少前面板对象的数量。

这将有助于减少LabVIEW使用的GDI对象的总量。

如果在运行VI时GDI对象随着时间的推移而增加,请检查VI中的递归元素,这些元素可能会在前面板上重复渲染对象。为此,可以在Windows任务管理器中跟踪GDI对象的使用情况(请参阅下面的附加信息)。

更改 GDI 对象句柄的限制。MSDN:GDI Objects (Windows) 中描述了一种在 Windows(2000 年后)中增加GDI对象数量的方法。

安装显卡厂商提供的最新显卡驱动程序。这通常会修复导致 GDI 溢出的内存泄漏。

更改选板加载设置。

1.        在任何LabVIEW窗口中,在顶部菜单栏导航至工具»选项...

2.        这将会打开选项窗口。导航到控件/函数选板。

3.        在顶部有加载选项,选择在需要时加载选板以尝试减轻崩溃。

在\user.lib目录中删除不必要的库。LabVIEW会为每个选板图像使用一个 GDI 对象,因此具有大量选板 的VI 将导致此崩溃。

如果在 VI 中不断打开和关闭数据库,请通过收集更多要发送的数据来避免频繁打开/关闭数据库。

重新启动cRIO(或其他使用的硬件)可能会是一个临时的解决方案,但请按照上述详细步骤操作以防止问题再次出现。

如果在调查上述选项后问题仍然存在,请致电 NI 支持寻求进一步地解决问题。

相关信息

GDI(图形设备接口)对象是负责表示图形对象的固定Windows资源。每个GDI对象都是、进程私有的,这意味着只有创建GDI对象的进程才能使用其对象句柄。

包括LabVIEW.exe在内的每个进程都被Windows限制为10,000个GDI对象,并且请求更多GDI对象会导致 LabVIEW 崩溃。此崩溃被NI错误报告工具 (NIER)捕获为 image.cpp或drawmgr.cpp中的DAbort。要确认导致崩溃的原因是否是过度使用GDI,请使用Windows任务管理器查看LabVIEW使用了GDI的数量。对于Windows 10,默认情况下不显GDI数量。需要转到任务管理器中的详细信息 --> 右键单击“名称”列»“选择列”。

这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发,请与我们联系。

厂家没有提供LabVIEW的例子。根据通讯协议的相关的说明,编写了适合项目的程序。程序截图如下所示

 

相关资料说明,如下所示。

 

LabVIEW程序,如下附件所示。

 

北京瀚文网星科技有限责任公司www.bjcyck.com,是一家以LabVIEW(虚拟仪器)为主要技术手段的开发公司。其服务领域包括:汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各领域。涵盖了从研发、测试、生产到服务的产品开发所有阶段。

公司提供运动控制、电子设计、视觉和射频以及无线等诸多领域的解决方案,技术咨询以及资源整合。所提供服务确保符合北京瀚文网星产品认证和行业标准,更有效地使用北京瀚文网星的全球资源,提供LabVIEW软件开发、维护、破解等服务以及北京瀚文网星产品代理。

13691203761王工(手机微信)