码迷,mamicode.com
首页 > 编程语言 > 详细

C#调用C++DLL/天地伟业解码器二次开发

时间:2019-01-26 14:29:26      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:fse   _stdcall   erp   ace   toc   .com   dsd   nbsp   inno   

一:前言

  解码器是用来解码摄像头输出视频的。SDK是异步模式,很多功能都是依靠异步消息驱动。

二:SDK调用顺序  

  1. 初始化开发包(该SDK版本为Version4.0)

    int __stdcall Dec_ClientStartup(unsigned int_uiMessage, HWND _hWnd);

  2. 设置开发包需要的一些参数

    int __stdcall DEC_ClientSetNotify(DecNotifyFun* _pNotify);

  3. 调用开发包所提供的其他函数(连接摄像头预览视频、调整视频等功能函数)

  4. 释放开发包

    int __stdcall DEC_ClientCleanup(); 

三:二次开发

  1.初始化开发包

C++:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 技术分享图片

C#:

技术分享图片

技术分享图片

 //结构体写在namespace里,不是类里

技术分享图片

技术分享图片

技术分享图片

       2.登录解码器

技术分享图片

技术分享图片

    //注册登录函数

   技术分享图片

 //调用函数。执行完该函数后,会触发OnMainNotify主回调信息函数,可以在OnMainNotify函数里这么写

 技术分享图片

  //为了拿到登录状态(状态在非托管内存中),将信息放到托管的LogonStatus结构体里,使用Marshal.PtrToStructure完成

 技术分享图片

  //NetSDKMsg定义回调消息类型

技术分享图片

  3:连接摄像头,解码器进行解码

技术分享图片

技术分享图片

   //联合体:需要联合体的哪一个结构体只需定义哪一个结构体,无需定义ServerItem 

 技术分享图片

 C#:

技术分享图片

技术分享图片

 

技术分享图片

技术分享图片

   //strServerPtzPortocol为动态链接库,和NVDSDK.dll一起放在bin包

   //结构体嵌套结构体

   //此函数ServerItem参数是一个结构体,具体传哪一种结构体视情况(NormalServer/OnvifServer/RtspServer/EncodeChannel)而定。

   //C#定义的NormalServer结构体里放入我们需要传入的数据(摄像头账号密码等信息)使用StructureToPtr将数据放入非托管内存中

 

C#调用C++DLL/天地伟业解码器二次开发

标签:fse   _stdcall   erp   ace   toc   .com   dsd   nbsp   inno   

原文地址:https://www.cnblogs.com/HansZimmer/p/10323300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!