C# 视频监控系列(6):服务器端——封装API(上)(1)

2024-04-13 00:26:10

前言

写系列文章的时候[前言]部分变得无言了,可能来得顺利了点吧: ) 本章中提供的封装均是我用笨办法从<<Hikvision 板卡网络开发包编程手册V4.7>>和<<DS-4000HC、HCS、HC+、HF、HS、MD卡的Windows编程指南V4.3>>中拷贝出来并参照VC++代码进行整理的,主要是针对HikServer.dll和DS40xxSDK.dll的调用封装。

注意

本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心、实现以及其他能够贴出来的代码我都会贴出来,并且争取尽所能的回答留言里的每一个问题,感谢大家关注,欢迎交流 :)

系列

1.     C# 视频监控系列(1):准备

2.     C# 视频监控系列(2):客户端——封装API

3.     C# 视频监控系列(3):客户端——连接服务器

4.     C# 视频监控系列(4):客户端——音频接收和抓图

5.     C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

6.     C# 视频监控系列(6):服务器端——封装API(上) [HikServer.dll]

正文

1.     HikServer.dll

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;namespaceHikServer
{
publicstructPSERVER_VIDEOINFO
    {
///<summary>///序列号///BYTE    m_datatype[64];///</summary>[MarshalAs(UnmanagedType.ByValArray, SizeConst=64)]publicbyte[] m_datatype;///<summary>///系统的通道个数///BYTE    m_channum;///</summary>publicbytem_channum;///<summary>///超时等待时间,1-300单位:分钟///DWORD   m_waittime;///</summary>publicintm_waittime;///<summary>///目前没有使用///DWORD   m_bufnum;///</summary>publiculongm_bufnum;
    }
//[StructLayout(LayoutKind.Sequential)]//public struct PSERVER_VIDEOINFO//{//public IntPtr m_datatype;//序列号//public byte m_channum;//系统的通道个数//public int m_waittime;//超时等待时间,1-300单位:分钟//public int m_bufnum;//目前没有使用//}///<summary>///通道数据类型///</summary>publicenumChannelDataType
    {
        NORMAL
=50,
        DIALING,
        SMALLPIC
    }
///<summary>///VC++Demo:委托内调用SetIBPMode(ChannelHandle[port],211,2,2,framerat);///</summary>///<param name="port"></param>///<param name="framerat"></param>publicdelegatevoidSetIBP(intport,intframerat);///<summary>///VC++Demo:委托内调用CaptureIFrame(ChannelHandle[port]);///</summary>///<param name="port"></param>publicdelegatevoidMakeIFrame(intport);///<summary>///VC++Demo:委托内调用StartVideoCapture(ChannelHandle[port]);///</summary>///<param name="nChannel"></param>publicdelegatevoidStartCap(intnChannel);///<summary>///VC++Demo:委托内调用StopVideoCapture(ChannelHandle[port]);///</summary>///<param name="nChannel"></param>publicdelegatevoidStopCap(intnChannel);///<summary>///验证用户名密码///</summary>///<param name="username"></param>///<param name="namelen"></param>///<param name="password"></param>///<param name="passlen"></param>///<returns></returns>[UnmanagedFunctionPointer(CallingConvention.StdCall)]publicdelegateintCheckPassword(stringusername,ushortnamelen,stringpassword,ushortpasslen);///<summary>///验证IP///VC++Demo:return 0;///</summary>///<param name="nChannel"></param>///<param name="nIP"></param>///<returns></returns>[UnmanagedFunctionPointer(CallingConvention.StdCall)]publicdelegateintCheckIP(intnChannel,stringnIP);publicstaticclassHikServer
    {
publicstaticreadonlyuintWM_USER=0x0400;///<summary>///启动服务端///返回true表示成功,返回false表示失败///<code>///BOOL  __stdcall  MP4_ServerStart(PSERVER_VIDEOINFO videoinfo);///</code>///</summary>///<param name="videoinfo"></param>///<returns></returns>[DllImport("HikServer.dll")]publicstaticexternintMP4_ServerStart(refPSERVER_VIDEOINFO videoinfo);///<summary>///停止服务端///返回true表示成功,返回false表示失败///<code>///BOOL  __stdcall  MP4_ServerStop();///</code>///</summary>///<returns></returns>[DllImport("HikServer.dll")]publicstaticexternboolMP4_ServerStop();///<summary>///获取服务器状态///返回true表示服务器已经启动,返回false表示服务器没有启动///<code>///BOOL  __stdcall  MP4_ServerGetState(WORD * clientnum);///typedef unsigned short      WORD;///</code>///</summary>///<param name="clientnum">表示当前与服务器相连的客户端数据</param>///<returns></returns>[DllImport("HikServer.dll")]publicstaticexternboolMP4_ServerGetState(outushortclientnum);///<summary>///给客户端发送命令码///和函数MP4_ServerStringToClient不同,它给正连接在该通道上的所有客户端发送命令码。///返回true表示成功,返回false表示失败///<code>///BOOL  __stdcall  MP4_ServerCommandToClient(char cCommand,char nChannel);///</code>///</summary>///<param name="cCommand">命令码</param>///<param name="nChannel">通道号</param>[DllImport("HikServer.dll")]publicstaticexternvoidMP4_ServerCommandToClient(intcCommand,intnChannel);///<summary>///设置接收命令码的相关参数///<code>///void  __stdcall  MP4_ServerSetMessage(UINT nMessage,HWND hWnd);///</code>///</summary>///<param name="nMessage">对应接收程序的消息</param>///<param name="hWnd">应用程序窗口句柄</param>[DllImport("HikServer.dll")]publicstaticexternvoidMP4_ServerSetMessage(uintnMessage, IntPtr hWnd);///<summary>///设置是否进行IP验证。///如果进行IP验证,调用该函数,那么每次客户端连接的时候,会调用CheckIP。///如果不进行IP验证,不需要调用该函数。///如果调用了MP4_ServerCheckIP之后,又想取消IP验证,只需要调用MP4_ServerCheckIP(NULL)。///<code>///void  __stdcall MP4_ServerCheckIP(int(CALLBACK *CheckIP)(DWORD nChannel,char* nIP));///CheckIP函数说明:nChannel表示通道号,nIP表示客户端的IP地址。返回0表示验证通过,返回-1///表示验证没有通过。///</code>///</summary>[DllImport("HikServer.dll")]publicstaticexternvoidMP4_ServerCheckIP(CheckIP cip);///<summary>///设置是否进行用户身份验证。///使用同MP4_ServerCheckIP。///目前namelen和password两个值无效,都是50,并不表示用户名和密码的实际长度。用户名和密码必须小于50个字节。///说明:///1>因为开发包对用户名和密码不做任何处理,只是简单地分别发送50字节的数据到服务端,所以在验证///的实现过程中,用户可以通过设置标志位的方法来确定用户名和密码的实际长度。///2>也可以同时进行IP验证和用户身份验证。在开发包中先进行用户身份验证,再进行IP验证。///<code>///7. void  __stdcall  MP4_ServerCheckPassword(int(CALLBACK *CheckPassword)(char *username,WORD namelen,char *password,WORD passlen));///CheckPassword函数说明:username表示用户名,namelen表示用户名字符串长度,password表示密码,passlen表示密码字符串长度。///</code>///</summary>///<param name="nMessage"></param>///<param name="hWnd"></param>[DllImport("HikServer.dll")]publicstaticexternvoidMP4_ServerCheckPassword(CheckPassword cp);///<summary>///往发送缓存写数据。///网络开发包通过这个接口获得板卡的数据。///说明:///现在开发包内部不会直接调用StartVideoCapture和StopVideoCapture函数,而是通过StartCap和StopCap///来启动和停止捕获数据。如果用户调用StopVideoCapture或者停止调用MP4_ServerWriteData都会使客户///端无法收到数据。///<code>///8. void  __stdcall  MP4_ServerWriteData(DWORD nChannel,UCHAR *pPacketBuffer, DWORD  nPacketSize, int frameType, int breakable);///typedef unsigned long       DWORD;///typedef unsigned char UCHAR;///</code>///</summary>///<param name="nChannel">通道号。</param>///<param name="pPacketBuffer">缓冲区指针。</param>///<param name="nPacketSize">缓冲区长度。</param>///<param name="frameType">帧类型。</param>///<param name="breakable">ReadStreamData的返回值</param>[DllImport("HikServer.dll")]publicstaticexternvoidMP4_ServerWriteData(ulongnChannel,stringpPacketBuffer,ulongnPacketSize,intframeType,intbreakable);

转载于:https://blog.51cto.com/over140/586668

C# 视频监控系列(6):服务器端——封装API(上)(1)相关推荐

  1. C# 视频监控系列(7):服务器端——封装API(下)(1)

    前言 写系列文章的时候[前言]部分变得无言了,可能来得顺利了点吧: ) 本章中提供的封装均是我用笨办法从<<Hikvision 板卡网络开发包编程手册V4.7>>和<&l ...

  2. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]

    前言 当你认真的写完客户端和服务器端的时候可能不需要再继续往下看关于播放器的代码和说明,因为你已经掌握了如何转换VC++代码的技巧了,加上GOOGLE再来完成这个播放器应该算小菜了.但是作为我的系列, ...

  3. C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)

    前言 录像功能是监控系统中最重要的功能之一,除了本文的功能实现外,还需要你自己考虑合适的存储策略:存储大小.时间段.存储盘符等. 注意 本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码 ...

  4. C# 视频监控系列(13):H264播放器——控制播放和截图

    C# 视频监控系列(13):H264播放器--控制播放和截图 前言 本该把这部分和上一篇合成一篇的,无奈挣扎半天,还是想对称起来,客户端3篇.服务器端3篇--所有播放器也勉强凑3篇吧(封装API的文章 ...

  5. C# 视频监控系列(14):总结贴——VC++代码转成C#小结

    前言 关键字:c++ to C# 原计划是再写一篇H264播放器转换AVI的文章才开始写总结的,至今未能成功,由于时间问题并且也暂时没有这个需求,所以决定从原计划中去掉这一章节直接进入总结贴,然后结束 ...

  6. C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结

    前言 本章主要把可能用到的C# WinForm 功能性代码在这里汇总一下,以备实现其他功能来满足客户的其他需求,或者方便自己开发. 注意 本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代 ...

  7. C# 视频监控系列(2):客户端——封装API

    前言 本章主要是在C#封装的海康DVR客户端SDK 的代码上修改的,并参考<Hikvision 板卡网络开发包编程手册V4.7.pdf>补上更完整的注释,并且参照VC++源码做了小部分修改 ...

  8. C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

    前言 这几天加紧赶工写服务器端的程序,所有系列文章更新较慢,见谅: ) 注意 本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心.实现以及其他能够贴 ...

  9. C# 视频监控系列(10):服务器端——验证、设置画面质量、字幕叠加、板卡序列号...

    C# 视频监控系列(10):服务器端--验证.设置画面质量.字幕叠加.板卡序列号 豆豆网   技术应用频道   2009年04月08日  [字号:小 中 大] 收藏本文 被过滤广告 关键字: NetB ...

最新文章

  1. 【工具软件】webstorm的实用快捷操作(持续积累)
  2. job for nginx.service failed_用Python操作Kubernetes的Job
  3. 不再受限于数据集和硬件,下一代 ML 软件如何构建?
  4. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
  5. 清除浮动的方法总结CSS实现水平垂直居中方法总结
  6. Wampserver之 virtualHost
  7. telnet实现本地回显
  8. mysql inet addr_InetAddress类的使用
  9. java session 生命周期_java之hibernate之session中对象的生命周期
  10. 两幅图的RGB+Depth点云拼接
  11. 起来吧!不要做奴隶的ITproject师们!
  12. OpenCV下载/OpenCV国内镜像/opencv_contrib下载
  13. 服务器lsass系统错误,电脑开机提示lsass.exe系统错误无法进入系统的解决方法
  14. 什么?Python的多进程居然比单进程慢?
  15. 量子有什么特性计算机,量子是什么、量子具有什么特性、又有什么作用?
  16. 市面上主流的音视频竞品分析对比
  17. 总结:堡垒机和跳板机
  18. java 获取代码注释
  19. linux memcached默认端口,memcached介绍以及安装
  20. 高危OpenSSL 漏洞可导致远程代码执行

热门文章

  1. 通过iscsi配置在aix上挂载存储设备
  2. WEB API:语音识别
  3. 19.Silverlight调用webservice上传多个文件
  4. Juniper Firewall多进单出配制实例
  5. 彻底解决.net中编码问题的心得
  6. 30万手表推荐_今年六十岁生日,儿子说要送只30万的手表,请问有哪些推荐?...
  7. Maximum upload size exceede上传文件大小超出解决
  8. AIX 环境下遇到Device Busy问题
  9. js点击图片查看大图,并可以拖动,且滚动滑轮放大缩小
  10. C专家编程复习摘要一