Baumer工业相机堡盟工业相机如何在C#平台使用BGAPI SDK实现相机资源的正确释放(C#)

简介: Baumer工业相机堡盟工业相机如何在C#平台使用BGAPI SDK实现相机资源的正确释放(C#)

Baumer工业相机

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。


Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。

Baumer工业相机的BGAPI SDK一般在使用相机后在最好需要将相机资源释放,释放的步骤比较重要,本文介绍如何在C#平台下正确地使用BGAPI SDK释放相机资源。


Baumer工业相机SDK技术背景

Baumer工业相机的BGAPI SDK可以提供相机的图像原始数据,在集成相机和视觉软件使用后,关闭视觉软件时需要同时使用SDK去释放SDK占用的相机资源。


工业相机的SDK(Software Development Kit)是为了方便开发人员对工业相机进行控制和图像采集而提供的一套软件工具。而Halcon是一款强大的机器视觉软件,能够进行图像处理、分析、识别等多种任务。


这里主要描述如何在C#的平台下实现对应的资源释放功能的核心代码


代码分析

本文介绍使用BGAPI SDK对Baumer工业相机进行开发时,使用SDK进行相机资源释放的功能。


释放所有相机资源

相机资源释放,在软件关闭,程序退出的时候,需要将创建的资源逐一关闭并释放,资源关闭

释放的顺序跟创建的顺序正好相反;


C#环境下释放所有相机资源代码如下所示:

private void buttonExit_Click(object sender, EventArgs e)
{
    if (pDevice != null)
    {
        try
        {
          //执行相机关闭指令
            if (pDevice.RemoteNodeList.GetNodePresent("AcquisitionAbort"))
                pDevice.RemoteNodeList["AcquisitionAbort"].Execute();
            pDevice.RemoteNodeList["AcquisitionStop"].Execute();
        }
        catch (BGAPI2.Exceptions.IException ex)
        {
            string str19;
            str19 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());
            MessageBox.Show(str19);
        }
    }
    if (pDataStream != null & pBufferList != null)
    {
        try
        {
            pDataStream.StopAcquisition();
            pBufferList.DiscardAllBuffers();
        }
        catch (BGAPI2.Exceptions.IException ex)
        {
            string str20;
            str20 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());
            MessageBox.Show(str20);
        }
    }
    if (pDataStream != null)
    {
        try
        {
          //取消注册事件
            pDataStream.UnregisterNewBufferEvent();
            pDataStream.RegisterNewBufferEvent(BGAPI2.Events.EventMode.UNREGISTERED);
            BGAPI2.Events.EventMode currentEventMode = pDataStream.EventMode;
        }
        catch (BGAPI2.Exceptions.IException ex)
        {
            string str21;
            str21 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());
            MessageBox.Show(str21);
        }
    }
    if (pBufferList != null)
    {
        try
        {
            while (pBufferList.Count > 0)
            {
                pBuffer = pBufferList.Values.First();
                pBufferList.RevokeBuffer(pBuffer);
            }
            //关闭相机的数据流
            pDataStream.Close();
            //关闭相机的设备
            pDevice.Close();
            //关闭相机连接的网口
            pInterface.Close();
            //关闭相机连接的实例类
            pSystem.Close();
            //释放相机连接类的资源
            this.Close();
        }
        catch (BGAPI2.Exceptions.IException ex)
        {
            string str22;
            str22 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());
            MessageBox.Show(str22);
        }
    }
}

释放相机资源注意点

C#环境下释放相机资源代码需要特别注意相机数据流的停止指令,这块尤其重要;

有时停止指令发送后,未停止相机数据流,后面直接执行相机的类释放会导致报错发生。

if (pDataStream != null & pBufferList != null)
    {
        try
        {
            pDataStream.StopAcquisition();
            pBufferList.DiscardAllBuffers();
        }
        catch (BGAPI2.Exceptions.IException ex)
        {
            string str20;
            str20 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());
            MessageBox.Show(str20);
        }
    }

工业相机SDK来释放工业相机的资源的优点

增加灵活性: 通过使用SDK,开发人员可以定制和调整相机功能,以更好地适应他们的具体应用要求。


改进集成: 该SDK允许多个相机和相机组件与其他硬件和软件系统无缝集成。


更大程度的控制: 使用工业相机SDK可以更深入、更直接地访问相机的功能和数据,从而更好地控制捕获的图像和视频。


增强性能: 使用SDK可以提高相机性能,加快数据处理速度,从而获得更高质量的图像和视频。


降低成本: SDK允许在选择和定制相机系统时有更大的灵活性,从长远来看有可能导致成本的节约。


工业相机SDK来释放工业相机的资源的重要性

在软件中正确释放工业相机资源非常重要,因为它可以确保相机及其相关硬件不会处于不一致或不稳定的状态,这可能导致内存泄漏、性能下降和系统崩溃等问题。


遵循SDK(软件开发工具包)中的步骤,可以确保摄像机使用的所有组件被正确关闭,任何内存或其他系统资源被正确释放。


这可以帮助确保摄像机及其相关组件正常工作,并确保软件应用程序长期稳定和可靠。

目录
相关文章
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
73 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
44 0
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
59 0
|
3月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
8天前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
31 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
10月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
237 0
|
3月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
1168 0
|
8天前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
29 4
|
8天前
|
开发工具 Android开发
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
35 2
|
8天前
|
开发工具 Android开发
[Android Studio]please select android sdk
[Android Studio]please select android sdk
23 1