最近需要做一个C#版本的控制终端,控制摄像头,获取摄像头的水平角度和垂直角度

获取当前摄像头的角度,需要调用一个名为NET_DVR_GetDVRConfig的bool类型的函数

在C++中,函数定义:NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned)

在C#封装过程中,函数改为:

[DllImport(@"HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRConfig(int lUserID, uint dwCommand, int lChannel, IntPtr lpOutBuffer, uint dwOutBufferSize, ref uint lpBytesReturned);

在调用的过程中,主要是第四个参数的转换遇到了问题

首先看一下C++Demo里面的函数用法:

  NET_DVR_PTZPOS m_ptzPos = {};
DWORD dwReturned;
BOOL bRet = NET_DVR_GetDVRConfig(m_lUserID[m_struSlaveCameraCond.byID], NET_DVR_GET_PTZPOS, , &m_ptzPos, sizeof(NET_DVR_PTZPOS), &dwReturned);
if (!bRet)
{
g_pMainDlg->AddLog(m_iDeviceIndex, OPERATION_FAIL_T, "NET_DVR_GET_PTZPOS");
return;
} int m_iPara1 = HexToDecMa(m_ptzPos.wPanPos);
int m_iPara2 = HexToDecMa(m_ptzPos.wTiltPos);
int m_iPara3 = HexToDecMa(m_ptzPos.wZoomPos);

C++获取角度

首先结构体实例化 ,传入对应的参数,返回bool类型的值,值为True时,获取结构体里面的值

在c#中,传递的第四个参数的类型由LPVOID 类型的转化为了IntPtr类型的

首先两篇文档:Marshal.StructureToPtr方法Marshal.PtrToStructure方法

了解了Intptr与架构体之间的相互转化,就好处理了,代码如下:

   //首先获取当前结构体的长度
int nSizeOfPtz = Marshal.SizeOf(Ptz);
//定义一个IntPtr类型的数据
IntPtr intPtr = Marshal.AllocHGlobal(nSizeOfPtz);
DevideAngle = CHCNetSDK.NET_DVR_GetDVRConfig(_mLUserId, CHCNetSDK.NET_DVR_GET_PTZPOS, , intPtr, (uint)nSizeOfPtz, ref dwReturned);
//IntPtr数据转换成Struct结构体
Ptz = (CHCNetSDK.NET_DVR_PTZPOS)Marshal.PtrToStructure(intPtr, typeof(CHCNetSDK.NET_DVR_PTZPOS));
Pan = HexToDecMa(Ptz.wPanPos);
Tit = HexToDecMa(Ptz.wTiltPos);

C#获取角度

C# 封装SDK 获取摄像头的水平角度和垂直角度的更多相关文章

  1. iOS UIWebView中javascript与Objective-C交互、获取摄像头

    UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...

  2. UIWebView中javascript与Objective-C交互、获取摄像头

    UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...

  3. 通过摄像机视频设备或者流媒体服务器SDK获取到数据转换成RTMP流实现网页/手机微信播放

    写这篇博客主要是为了给新入门的流媒体开发者解惑,现在看到各种开发者的需求:网页播放RTSP摄像机.微信播放RTSP摄像机.网页播放摄像机SDK输出的视频流.网页播放第三方流媒体平台输出的视频流.包括G ...

  4. 使用高德地图SDK获取定位信息

    使用高德地图SDK获取定位信息 第一步: 在高德官网下载SDK,如我这里需要获取定位信息,故仅下载"定位功能" 第二步: 注册成为开发者,并创建应用获取相应的key.其中,在使用A ...

  5. Opencv+MFC获取摄像头数据,显示在Picture控件

    分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...

  6. iOS 获取摄像头当前方向

    在做二维码扫描和直播获取视频流的过程中,可能会用到 AVCaptureDevice AVCaptureVideoPreviewLayer AVCaptureSession 这几个参数,其中 1.定义显 ...

  7. 用百度SDK获取地理位置和天气信息

    以下实现通过百度SDK获取地理位置和天气信息,请參考title=android-locsdk/guide/v5-0">百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解 ...

  8. onvif获取摄像头的流媒体地址完整流程

    linux设备上的Onvif 实现6:获取摄像头的流媒体地址完整流程 整体流程: Probe: 发现网络摄像头,获取webserver地址 http://192.168.15.240/onvif/de ...

  9. RK3288获取摄像头的Sensor ID【原创】

    平台信息:内核:linux3.0.68 系统:android/android6.0平台:RK3288 作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 说明:通过I2C总 ...

随机推荐

  1. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

  2. IMU 标定 | 工业界和学术界有什么不同?

    点击"计算机视觉life"关注,置顶更快接收消息! 由于格式问题最好在公众号上观看<IMU 标定-工业界和学术界有什么不同?> 本文主要介绍了IMU基本结构原理和误差的 ...

  3. 将 notepad++ 添加到鼠标右键菜单 带图标

    1.打开注册表编辑器,HKEY_CLASSES_ROOT\*\shell目录点击右键.新建-->项,这里命名的项则就是鼠标右键列表里面显示的内容,这里起名为[Edit With Notepad+ ...

  4. python解析FreeMind思维导图

    记录瞬间 在实际工作中,通常需要使用思维导图进行一些分析和设计,但是,在设计好之后,想要把思维导图的内容转化成文字进行输出怎么做呢? 使用python(当然可以使用其他的语言进行处理)可以很好的解决这 ...

  5. 用requests库和BeautifulSoup4库爬取新闻列表

    import requests from bs4 import BeautifulSoup url='http://news.gzcc.cn/html/xiaoyuanxinwen/' res=req ...

  6. RESTful API 最佳实践----转载阮一峰

    文章地址http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html

  7. dom反转

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. redis 哈希(hash)函数

    哈希(hash)函数 hSet 命令/方法/函数 Adds a value to the hash stored at key. If this value is already in the has ...

  9. mika的模板库

    二分图最大匹配: 1.匈牙利算法:注意dfs中是dfs(c[w[i]]),搜索的是与之匹配的点. #include<cstdio> #include<cstring> ],w[ ...

  10. Linux下/proc目录的作用

    文章是摘抄过来,方便自己查阅! 1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在 ...