C# 封装SDK 获取摄像头的水平角度和垂直角度
最近需要做一个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 获取摄像头的水平角度和垂直角度的更多相关文章
- iOS UIWebView中javascript与Objective-C交互、获取摄像头
UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...
- UIWebView中javascript与Objective-C交互、获取摄像头
UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...
- 通过摄像机视频设备或者流媒体服务器SDK获取到数据转换成RTMP流实现网页/手机微信播放
写这篇博客主要是为了给新入门的流媒体开发者解惑,现在看到各种开发者的需求:网页播放RTSP摄像机.微信播放RTSP摄像机.网页播放摄像机SDK输出的视频流.网页播放第三方流媒体平台输出的视频流.包括G ...
- 使用高德地图SDK获取定位信息
使用高德地图SDK获取定位信息 第一步: 在高德官网下载SDK,如我这里需要获取定位信息,故仅下载"定位功能" 第二步: 注册成为开发者,并创建应用获取相应的key.其中,在使用A ...
- Opencv+MFC获取摄像头数据,显示在Picture控件
分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...
- iOS 获取摄像头当前方向
在做二维码扫描和直播获取视频流的过程中,可能会用到 AVCaptureDevice AVCaptureVideoPreviewLayer AVCaptureSession 这几个参数,其中 1.定义显 ...
- 用百度SDK获取地理位置和天气信息
以下实现通过百度SDK获取地理位置和天气信息,请參考title=android-locsdk/guide/v5-0">百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解 ...
- onvif获取摄像头的流媒体地址完整流程
linux设备上的Onvif 实现6:获取摄像头的流媒体地址完整流程 整体流程: Probe: 发现网络摄像头,获取webserver地址 http://192.168.15.240/onvif/de ...
- RK3288获取摄像头的Sensor ID【原创】
平台信息:内核:linux3.0.68 系统:android/android6.0平台:RK3288 作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 说明:通过I2C总 ...
随机推荐
- Tomcat配置技巧
1. 配置系统管理(Admin Web Application) 大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面.Tomcat按照自己的方式,同样提供一个 ...
- 基于Servlet的MVC模式用户登录实例
关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: ...
- How to use draggable attribute?怎样使用拖拽属性代码分享
6.7 Drag and dropSupport: dragndropChrome for Android NoneChrome 4+iOS Safari 11.0+UC Browser for An ...
- ubuntu 16.04 搭建tigervnc
主要参考 https://vitux.com/ubuntu-vnc-server/ apt install xfce4 xfce4-goodies -yapt install -y tightvncs ...
- SecureCRT通过密钥登录(网上也有很多教程,但是有些不详细,此教程本人亲测)
1.先打开SecureCRT,标题标--工具---创建公钥,如图: 2.点击创建公钥,弹出选项点下一步 3.继续点下一步: 4.继续点下一步: 5.继续点下一步(密钥长度默认1024即可),生成密钥需 ...
- 关于MySQL数据库的安装和卸载
0.官网下载 https://www.mysql.com/ 选择需要的版本下载 两种安装方式,选择需要的安装包 下载 1.MySQL 5.6 for Windows 解压缩版配置安装 https:// ...
- ngx-admin with Asp.net Core 2.0, possibly plus OrchardCore
1 Download ngx-admin from https://github.com/akveo/ngx-admin 2 Create a new Web Application in vs201 ...
- String<-->int
String s = "123); int a = Integer.parseInt(s); String b = String.valueOf(a); Integer i = 100; 自 ...
- Java8分组(groupingBy)
1.分组,计数,排序 public class Java8Example1 { public static void main(String[] args) { List<String> ...
- 【Spring-Controller 整理研究】@RequestMapping略解
本文以纯后端的角度,去研究Spring Controller在各种情况的行为,及各种属性的作用. 实验准备 利用https://start.spring.io/快速生成一个开箱即用的小巧spring ...