海康威视摄像头程序
来源:互联网 发布:和女生聊天 知乎 编辑:程序博客网 时间:2024/04/29 21:29
我的资源里有写好的程序http://download.csdn.net/source/3538901
using System;
using System.Collections.Generic;using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using PreviewDemo;
using System.Configuration;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
protected override void Dispose(bool disposing)
{
if (m_lRealHandle >= 0)
{
CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
}
if (m_lUserID >= 0)
{
CHCNetSDK.NET_DVR_Logout_V30(m_lUserID);
}
if (m_bInitSDK == true)
{
CHCNetSDK.NET_DVR_Cleanup();
}
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
//海康
private Int32 m_lUserID = -1;
private bool m_bInitSDK = false;
private Int32 m_lRealHandle = -1;
private Int32 m_iPreviewType = 0;
private IntPtr m_ptrRealHandle;
private CHCNetSDK.REALDATACALLBACK m_fRealData = null;
private Int32 m_lPort = -1;
private HKPlayCtrl.DISPLAYCBFUN m_fDisplayFun = null;
private bool m_bJpegCapture = false;
private int hk = 0;
private int inithk = 0;//初始化 海康
private CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (hk == 1 && inithk == 1)
{ }
else if (hk == 0)//没点击过摄像头
{
hk = 1;
initHK();
play();
}
else
{
play();
}
}
//=================================================================================海康设备
private void initHK()
{
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
if (m_bInitSDK == false)
{
MessageBox.Show("NET_DVR_Init error!");
return;
}
else
{
string DVRIPAddress = ConfigurationManager.AppSettings["incar"].ToString();//"192.168.5.64";
Int16 DVRPortNumber = Int16.Parse(ConfigurationManager.AppSettings["dvrport"].ToString());
string DVRUserName = ConfigurationManager.AppSettings["username"].ToString();
string DVRPassword = ConfigurationManager.AppSettings["pwd"].ToString();
//海康
CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
if (m_lUserID == -1)
{
MessageBox.Show("login error!");
hk = 0;
}
else
{
inithk = 1;
lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
}
}
}
private void play()
{
if (inithk == 1)//初始化成功
{
lpClientInfo.lChannel = 1;
lpClientInfo.lLinkMode = 0x0000;
lpClientInfo.sMultiCastIP = "";
if (m_iPreviewType == 0) // use by callback
{
lpClientInfo.hPlayWnd = IntPtr.Zero;// todo!!! 这边应该做2中情况考虑去编写代码
m_ptrRealHandle = RealPlayWnd.Handle;
m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
IntPtr pUser = new IntPtr();
m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);
}
else if (1 == m_iPreviewType)
{
lpClientInfo.hPlayWnd = RealPlayWnd.Handle;
IntPtr pUser = new IntPtr();
m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);
}
if (m_lRealHandle == -1)
{
uint nError = CHCNetSDK.NET_DVR_GetLastError();
DebugInfo("NET_DVR_RealPlay fail %d!");
//return;
}
}
else//初始化 失败,因为已经初始化了
{
//MessageBox.Show("初始化失败!");
}
}
public delegate void MyDebugInfo(string str);
public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
{
MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
switch (dwDataType)
{
case CHCNetSDK.NET_DVR_SYSHEAD: // sys head
if (!HKPlayCtrl.PlayM4_GetPort(ref m_lPort))
{
MessageBox.Show("Get Port Fail");
}
if (dwBufSize > 0)
{
//set as stream mode, real-time stream under preview
if (!HKPlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, HKPlayCtrl.STREAME_REALTIME))
{
this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
}
//start player
if (!HKPlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024))
{
m_lPort = -1;
this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
break;
}
//set soft decode display callback function to capture
m_fDisplayFun = new HKPlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
if (!HKPlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
{
this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
}
//start play, set play window
this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");
if (!HKPlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
{
m_lPort = -1;
this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
break;
}
//set frame buffer number
if (!HKPlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
{
this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
}
//set display mode
if (!HKPlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/))//play off screen // todo!!!
{
this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
}
}
break;
case CHCNetSDK.NET_DVR_STREAMDATA: // video stream data
if (dwBufSize > 0 && m_lPort != -1)
{
if (!HKPlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize))
{
this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
}
}
break;
case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA: // Audio Stream Data
if (dwBufSize > 0 && m_lPort != -1)
{
if (!HKPlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize))
{
this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
}
}
break;
default:
break;
}
}
public void DebugInfo(string str)
{
if (str.Length > 0)
{
str += "\n";
//TextBoxInfo.AppendText(str);
}
}
public void RemoteDisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReserved)
{
MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
if (!m_bJpegCapture)
{
return;
}
else
{
uint nLastErr = 100;
// save picture as you want
if (!HKPlayCtrl.PlayM4_ConvertToJpegFile(pBuf, nSize, nWidth, nHeight, nType, "C:/Capture.jpg"))
{
//Debug.WriteLine("PlayM4_ConvertToJpegFile fail");
nLastErr = HKPlayCtrl.PlayM4_GetLastError(m_lPort);
this.BeginInvoke(AlarmInfo, "Jpeg Capture fail");
}
else
{
this.BeginInvoke(AlarmInfo, "Jpeg Capture Succ");
//Debug.WriteLine("PlayM4_ConvertToJpegFile Succ");
}
}
m_bJpegCapture = false;
}
private void button2_Click(object sender, EventArgs e)
{
if (inithk == 1)
{
CloseDVR();//关闭视频
inithk = 0;
}
}
private void CloseDVR()//关闭视频
{
////bool cao= CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);//停止预览
////CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
////CHCNetSDK.NET_DVR_Logout_V30(m_lUserID);
//CHCNetSDK.NET_DVR_Logout(m_lUserID);
//CHCNetSDK.NET_DVR_Cleanup();
bool logoutRtn = CHCNetSDK.NET_DVR_Logout_V30(m_lUserID);
bool cleanupRtn = CHCNetSDK.NET_DVR_Cleanup();
//Console.WriteLine("The error number is:" + CHCNetSDK.NET_DVR_GetLastError());
//if (cleanupRtn && logoutRtn)
// MessageBox.Show("Cleanup SDK resource and logout the current device.");
//this.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
CloseDVR();//关闭视频
}
private void button4_Click(object sender, EventArgs e)
{
HKPlayCtrl.PlayM4_Stop(m_lPort);//暂停
}
private void button5_Click(object sender, EventArgs e)
{
HKPlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle);//继续
}
}
}
- 海康威视摄像头程序
- domino 显示海康威视摄像头内容
- opencv读取海康威视摄像头
- opencv读取海康威视摄像头
- 海康威视摄像头的实时读取
- opencv读取海康威视摄像头
- 海康威视IP摄像头,调用的webcompenents
- OpenCV+海康威视摄像头的实时读取
- 2016海康威视摄像头监控web端实例+插件
- 海康威视 windows64系统 C++网络摄像头测试Demo
- OpenCV+海康威视摄像头的实时读取
- 海康威视摄像头忘记密码后如何重置
- 海康威视IP摄像头基于OPENCV的二次开发
- 海康威视摄像头的读取(vs2010+opencv2.4.9)
- 用海康威视摄像头做图像处理问题
- 海康威视网络摄像头连接NAS存储实践
- 【java】海康威视摄像头拍摄图片到内存中
- OpenCV笔记(2)打开海康威视摄像头
- 手工把LINQ转成表达式(六) join
- waitpid
- java开发之Ajax
- 怎样提高android代码效率
- PHP验证码类
- 海康威视摄像头程序
- oracle存储过程被调用时出现"rowid"无效或"对象不再存在"的解决方法
- linux多线程
- android中的按键处理
- C语言错误处理——setjmp & longjmp
- WRF嵌套网格设计 以北京地区为例
- 你是优秀程序员吗?
- 使用 WebSphere Business Modeler 实现业务流程的直接部署
- c3p0 - JDBC3 Connection and Statement Pooling