C#界面设计

您所在的位置:网站首页 海康威视怎么切换画面设置 C#界面设计

C#界面设计

2024-07-16 02:21| 来源: 网络整理| 查看: 265

1、C# 多个ip摄像头画面预览以及截图界面

2、winform VS2013 .NET4 Client Profile

3、测试摄像头:海康威视,USB摄像头

4、需要输入IP地址,端口号,用户名和密码。预览、抓图、客户端录像基本功能,其中抓图包括BMP和JPEG抓图(包括抓图保存在缓冲区中)。

5、IP通道设置(添加、修改、删除)功能。

 以下为主窗体代码:

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.IO; using System.Runtime.InteropServices; using System.Threading; using System.Timers; using System.Configuration; //using System.Date namespace NVRCsharpDemo { public partial class MainWindow : Form { private bool m_bInitSDK = false; //private bool m_bRecord = false; private uint iLastErr = 0; private string str1; private string str2; private Int32 i = 0; private Int32 m_lTree=0; private string str; private long iSelIndex = 0; private uint dwAChanTotalNum = 0; private Int32 m_tokenWrite = -1; public int m_lChannel = -1; //private Int32 m_lPort = -1; //private IntPtr m_ptrRealHandle; private int[] iIPDevID = new int[96]; private int[] iChannelNum = new int[96]; private string curTime; private int deviceNum = 0; private string savePath1; private string savePath2; private string savePath3; //private double picTime; private CHCNetSDK.REALDATACALLBACK RealData = null; public CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo; private string m_token; public CHCNetSDK.NET_DVR_IPPARACFG_V40 m_struIpParaCfgV40; public CHCNetSDK.NET_DVR_STREAM_MODE m_struStreamMode; public CHCNetSDK.NET_DVR_IPCHANINFO m_struChanInfo; public CHCNetSDK.NET_DVR_IPCHANINFO_V40 m_struChanInfoV40; private PlayCtrl.DECCBFUN m_fDisplayFun = null; public delegate void MyDebugInfo(string str); //public string GetTimeStamp(); //private Int32 pic_Num = 0; public MyDeviceInfo DV1 = new MyDeviceInfo { IPAddress = "192.168.1.230", PortNumber= 8080,num = 1,picTime=60, m_lUserID = -1, m_lRealHandle = -1 }; public MyDeviceInfo DV2 = new MyDeviceInfo { IPAddress = "192.168.11.252", PortNumber = 8080, num = 2, picTime = 60, m_lUserID = -1, m_lRealHandle = -1 }; public MyDeviceInfo DV3 = new MyDeviceInfo { num = 3, picTime = 60, m_lUserID = -1, m_lRealHandle = -1 }; private int isDevice = -1; public class MyDeviceInfo { public int num; public string token { get; set; } public string IPAddress { get; set; } public Int32 PortNumber { get; set; } public string DeviceID { get; set; } public double picTime { get; set; } public Int32 m_lUserID { get; set; } public Int32 m_lRealHandle { get; set; } public string DVRUserName { get; set; } public string DVRPassword { get; set; } // public int[] iChannelNum = new int[96]; public void Init() { } } public MainWindow() { InitializeComponent(); //btnLogin.Enabled = false; //textBoxIP.Enabled = false; //textBoxPort.Enabled = false; //textBoxPicTime.Enabled = false; //textBoxUser.Enabled = false; //textBoxPassword.Enabled = false; btnJPEG.Enabled = false; m_bInitSDK = CHCNetSDK.NET_DVR_Init(); if (m_bInitSDK == false) { MessageBox.Show("NET_DVR_Init error!"); return; } else { //保存SDK日志 To save the SDK log CHCNetSDK.NET_DVR_SetLogToFile(3,"C:\\SdkLog\\", true); //comboBoxView.SelectedIndex = 0; for (int i = 0; i < 64; i++) { iIPDevID[i] = -1; iChannelNum[i] = -1; } } //UpdateAppConfig("FilePath", System.Environment.CurrentDirectory); } //public void DebugInfo(string str) //{ // if (str.Length > 0) // { // str += "\n"; // TextBoxInfo.AppendText(str); // } //} //private System.Windows.Forms.PictureBox WindowSelect(int i) //{ // switch (i) // { // case 1: // return // } //} private void DeviceSelect(MyDeviceInfo DV) { if (DV.m_lUserID < 0) { DV.IPAddress = textBoxIP.Text; //设备IP地址或者域名 Device IP DV.PortNumber = Int16.Parse(textBoxPort.Text);//设备服务端口号 Device Port DV.DVRUserName = textBoxUser.Text;//设备登录用户名 User name to login DV.DVRPassword = textBoxPassword.Text;//设备登录密码 Password to login byte[] GetIPAddress = new byte[16]; //登录设备 Login the device DV.m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DV.IPAddress, DV.PortNumber, DV.DVRUserName, DV.DVRPassword, ref DeviceInfo); if (DV.m_lUserID < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code MessageBox.Show("登陆失败!"); return; } else { textBoxPicTime.Enabled = true; btnJPEG.Enabled = true; //登录成功 btnLogin.Text = "退出"; textBoxIP.Enabled = false; textBoxPort.Enabled = false; textBoxUser.Enabled = false; textBoxPassword.Enabled = false; dwAChanTotalNum = (uint)DeviceInfo.byChanNum; string s = System.Text.Encoding.Default.GetString(DeviceInfo.sSerialNumber); s = s.Replace("\0", ""); DV.DeviceID = s.Substring(s.Length - 9); labelDeviceID.Text = DV.DeviceID; if (DeviceInfo.byIPChanNum > 0) { InfoIPChannel(DV); } else { for (i = 0; i < dwAChanTotalNum; i++) { ListAnalogChannel(i + 1, 1); iChannelNum[i] = i + (int)DeviceInfo.byStartChan; } } } //开始预览 if (DV.m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); if (DV.num == 1) { lpPreviewInfo.hPlayWnd = RealPlayWnd1.Handle;//预览窗口-1 live view window } else if (DV.num == 2) { lpPreviewInfo.hPlayWnd = RealPlayWnd2.Handle;//预览窗口 live view window } else if (DV.num == 3) { lpPreviewInfo.hPlayWnd = RealPlayWnd3.Handle;//预览窗口 live view window } lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 0;//连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 IntPtr pUser = IntPtr.Zero;//用户数据 user data //打开预览 Start live view DV.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(DV.m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser); if (DV.m_lRealHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code. //DebugInfo(str); Console.Write(str); return; } } if (DV.num == 1) { UpdateAppConfig("DV1_IPAddress", DV1.IPAddress); UpdateAppConfig("DV1_PortNum", DV1.PortNumber.ToString()); UpdateAppConfig("DV1_UserName", DV1.DVRUserName); UpdateAppConfig("DV1_Password", DV1.DVRPassword); } else if (DV.num == 2) { UpdateAppConfig("DV2_IPAddress", DV2.IPAddress); UpdateAppConfig("DV2_PortNum", DV2.PortNumber.ToString()); UpdateAppConfig("DV2_UserName", DV2.DVRUserName); UpdateAppConfig("DV2_Password", DV2.DVRPassword); } else if (DV.num == 3) { UpdateAppConfig("DV3_IPAddress", DV3.IPAddress); UpdateAppConfig("DV3_PortNum", DV3.PortNumber.ToString()); UpdateAppConfig("DV3_UserName", DV3.DVRUserName); UpdateAppConfig("DV3_Password", DV3.DVRPassword); } } else if (DV.m_lUserID >= 0) { //注销登录 Logout the device //m_lRealHandle判断是否是在预览视频中 //停止预览 Stop live view if (DV.num == 1) { CHCNetSDK.NET_DVR_StopRealPlay(DV1.m_lRealHandle); DV1.m_lRealHandle = -1; RealPlayWnd1.Invalidate();//刷新窗口-1 refresh the window } else if (DV.num == 2) { CHCNetSDK.NET_DVR_StopRealPlay(DV2.m_lRealHandle); DV2.m_lRealHandle = -1; RealPlayWnd2.Invalidate();//刷新窗口 refresh the window } else if (DV.num == 3) { CHCNetSDK.NET_DVR_StopRealPlay(DV3.m_lRealHandle); DV3.m_lRealHandle = -1; RealPlayWnd3.Invalidate();//刷新窗口 refresh the window } //退出 if (!CHCNetSDK.NET_DVR_Logout(DV.m_lUserID)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_Logout failed, error code= " + iLastErr; MessageBox.Show(str); //DebugInfo(str); return; } Console.Write("NET_DVR_StopRealPlay succ!"); // DV.m_lRealHandle = -1; DV.m_lUserID = -1; btnLogin.Text = "登陆并预览"; textBoxIP.Enabled = true; textBoxPort.Enabled = true; textBoxUser.Enabled = true; textBoxPassword.Enabled = true; //m_tokenWrite = -1; deviceNum -= 1; UpdateAppConfig("DeviceNum", deviceNum.ToString()); } } private void btnLogin_Click(object sender, EventArgs e) { //m_lUserID用来表示是否在登陆中,大于等于0表示已经登陆 switch (comboBoxDevice.SelectedIndex) { case 0: DeviceSelect(DV1); break; case 1: DeviceSelect(DV2); break; case 2: DeviceSelect(DV3); break; } return; } public void InfoIPChannel(MyDeviceInfo DV) { uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40); IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false); uint dwReturn = 0; int iGroupNo = 0; if (!CHCNetSDK.NET_DVR_GetDVRConfig(DV.m_lUserID, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_GET_IPPARACFG_V40 failed, error code= " + iLastErr; //获取IP资源配置信息失败,输出错误号 Failed to get configuration of IP channels and output the error code //DebugInfo(str); } else { m_struIpParaCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40)); for (i = 0; i < dwAChanTotalNum; i++) { ListAnalogChannel(i+1, m_struIpParaCfgV40.byAnalogChanEnable[i]); iChannelNum[i] = i + (int)DeviceInfo.byStartChan; } byte byStreamType; for (i = 0; i < m_struIpParaCfgV40.dwDChanNum; i++) { iChannelNum[i + dwAChanTotalNum] = i + (int)m_struIpParaCfgV40.dwStartDChan; byStreamType = m_struIpParaCfgV40.struStreamMode[i].byGetStreamType; dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40.struStreamMode[i].uGetStream); switch (byStreamType) { //目前NVR仅支持直接从设备取流 NVR supports only the mode: get stream from device directly case 0: IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[i].uGetStream, ptrChanInfo, false); m_struChanInfo = (CHCNetSDK.NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(CHCNetSDK.NET_DVR_IPCHANINFO)); //列出IP通道 List the IP channel ListIPChannel(i + 1, m_struChanInfo.byEnable, m_struChanInfo.byIPID); iIPDevID[i] = m_struChanInfo.byIPID + m_struChanInfo.byIPIDHigh * 256 - iGroupNo * 64 - 1; Marshal.FreeHGlobal(ptrChanInfo); break; case 6: IntPtr ptrChanInfoV40 = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[i].uGetStream, ptrChanInfoV40, false); m_struChanInfoV40 = (CHCNetSDK.NET_DVR_IPCHANINFO_V40)Marshal.PtrToStructure(ptrChanInfoV40, typeof(CHCNetSDK.NET_DVR_IPCHANINFO_V40)); //列出IP通道 List the IP channel ListIPChannel(i + 1, m_struChanInfoV40.byEnable, m_struChanInfoV40.wIPID); iIPDevID[i] = m_struChanInfoV40.wIPID - iGroupNo * 64 - 1; Marshal.FreeHGlobal(ptrChanInfoV40); break; default: break; } } } Marshal.FreeHGlobal(ptrIpParaCfgV40); } public void ListIPChannel(Int32 iChanNo, byte byOnline, int byIPID) { str1 = String.Format("IPCamera {0}", iChanNo); m_lTree++; if (byIPID == 0) { str2 = "X"; //通道空闲,没有添加前端设备 the channel is idle } else { if (byOnline == 0) { str2 = "offline"; //通道不在线 the channel is off-line } else str2 = "online"; //通道在线 The channel is on-line } //listViewIPChannel.Items.Add(new ListViewItem(new string[] { str1, str2 }));//将通道添加到列表中 add the channel to the list } public void ListAnalogChannel(Int32 iChanNo, byte byEnable) { str1 = String.Format("Camera {0}", iChanNo); m_lTree++; if (byEnable == 0) { str2 = "Disabled"; //通道已被禁用 This channel has been disabled } else { str2 = "Enabled"; //通道处于启用状态 This channel has been enabled } //listViewIPChannel.Items.Add(new ListViewItem(new string[] { str1, str2 }));//将通道添加到列表中 add the channel to the list } System.Timers.Timer myTimer; /// /// 获取时间戳 /// /// public string GetTimeStamp() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); string Time = Convert.ToInt64(ts.TotalSeconds).ToString(); //DateTime DT = System.DateTime.Now; //string Time = System.DateTime.Now.ToString(); return Time; } void myTimer_DV1(object sender, System.Timers.ElapsedEventArgs e) { int lChannel = iChannelNum[(int)iSelIndex]; //通道号 Channel number CHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA(); lpJpegPara.wPicQuality = 0; //图像质量 Image quality lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率) //抓图分辨率需要设备支持,更多取值请参考SDK文档 curTime = GetTimeStamp(); //JEPG抓图,数据保存在缓冲区中 Capture a JPEG picture and save in the buffer uint iBuffSize = 400000; //缓冲区大小需要不小于一张图片数据的大小 The buffer size should not be less than the picture size byte[] byJpegPicBuffer = new byte[iBuffSize]; uint dwSizeReturned = 0; if (!CHCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(DV1.m_lUserID, lChannel, ref lpJpegPara, byJpegPicBuffer, iBuffSize, ref dwSizeReturned)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_CaptureJPEGPicture_NEW failed, error code= " + iLastErr; MessageBox.Show(str); //DebugInfo(str); return; } else { //将缓冲区里的JPEG图片数据写入文件 save the data into a file string str = DV1.DeviceID + "_" + curTime + ".jpg"; FileStream fs = new FileStream(savePath1 +"\\" + str, FileMode.Create); int iLen = (int)dwSizeReturned; fs.Write(byJpegPicBuffer, 0, iLen); fs.Close(); //创建txt并写入图片的名字,供上传程序提取名字来找到图片上传 if (!File.Exists(System.Environment.CurrentDirectory + "\\picName.txt")) { FileStream fs1 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Create, FileAccess.Write);//创建写入文件 StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(str + "\n");//开始写入值 sw.Close(); fs1.Close(); } else { FileStream fs2 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Open, FileAccess.Write); StreamWriter sr = new StreamWriter(fs2); sr.BaseStream.Seek(0, SeekOrigin.End); sr.WriteLine(str+"\n");//开始写入值 sr.Close(); fs2.Close(); } str = "NET_DVR_CaptureJPEGPicture_NEW succ and save the data in buffer " + str; //DebugInfo(str); } } void myTimer_DV2(object sender, System.Timers.ElapsedEventArgs e) { int lChannel = iChannelNum[(int)iSelIndex]; //通道号 Channel number CHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA(); lpJpegPara.wPicQuality = 0; //图像质量 Image quality lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率) //抓图分辨率需要设备支持,更多取值请参考SDK文档 curTime = GetTimeStamp(); //JEPG抓图,数据保存在缓冲区中 Capture a JPEG picture and save in the buffer uint iBuffSize = 400000; //缓冲区大小需要不小于一张图片数据的大小 The buffer size should not be less than the picture size byte[] byJpegPicBuffer = new byte[iBuffSize]; uint dwSizeReturned = 0; if (!CHCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(DV2.m_lUserID, lChannel, ref lpJpegPara, byJpegPicBuffer, iBuffSize, ref dwSizeReturned)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_CaptureJPEGPicture_NEW failed, error code= " + iLastErr; MessageBox.Show(str); //DebugInfo(str); return; } else { //将缓冲区里的JPEG图片数据写入文件 save the data into a file string str = DV2.DeviceID + "_" + curTime + ".jpg"; FileStream fs = new FileStream(savePath2 + "\\" + str, FileMode.Create); int iLen = (int)dwSizeReturned; fs.Write(byJpegPicBuffer, 0, iLen); fs.Close(); //创建txt并写入图片的名字,供上传程序提取名字来找到图片上传 if (!File.Exists(System.Environment.CurrentDirectory + "\\picName.txt")) { FileStream fs1 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Create, FileAccess.Write);//创建写入文件 StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(str);//开始写入值 sw.Close(); fs1.Close(); } else { FileStream fs2 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Open, FileAccess.Write); StreamWriter sr = new StreamWriter(fs2); sr.BaseStream.Seek(0, SeekOrigin.End); sr.WriteLine(str + "\n");//开始写入值 sr.Close(); fs2.Close(); } str = "NET_DVR_CaptureJPEGPicture_NEW succ and save the data in buffer " + str; //DebugInfo(str); } } void myTimer_DV3(object sender, System.Timers.ElapsedEventArgs e) { int lChannel = iChannelNum[(int)iSelIndex]; //通道号 Channel number CHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA(); lpJpegPara.wPicQuality = 0; //图像质量 Image quality lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率) //抓图分辨率需要设备支持,更多取值请参考SDK文档 curTime = GetTimeStamp(); //JEPG抓图,数据保存在缓冲区中 Capture a JPEG picture and save in the buffer uint iBuffSize = 400000; //缓冲区大小需要不小于一张图片数据的大小 The buffer size should not be less than the picture size byte[] byJpegPicBuffer = new byte[iBuffSize]; uint dwSizeReturned = 0; if (!CHCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(DV3.m_lUserID, lChannel, ref lpJpegPara, byJpegPicBuffer, iBuffSize, ref dwSizeReturned)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_CaptureJPEGPicture_NEW failed, error code= " + iLastErr; MessageBox.Show(str); //DebugInfo(str); return; } else { //将缓冲区里的JPEG图片数据写入文件 save the data into a file string str = DV3.DeviceID + "_" + curTime + ".jpg"; FileStream fs = new FileStream(savePath3 + "\\" + str, FileMode.Create); int iLen = (int)dwSizeReturned; fs.Write(byJpegPicBuffer, 0, iLen); fs.Close(); //创建txt并写入图片的名字,供上传程序提取名字来找到图片上传 if (!File.Exists(System.Environment.CurrentDirectory + "\\picName.txt")) { FileStream fs1 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Create, FileAccess.Write);//创建写入文件 StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(str);//开始写入值 sw.Close(); fs1.Close(); } else { FileStream fs2 = new FileStream(System.Environment.CurrentDirectory + "\\picName.txt", FileMode.Open, FileAccess.Write); StreamWriter sr = new StreamWriter(fs2); sr.BaseStream.Seek(0, SeekOrigin.End); sr.WriteLine(str + "\n");//开始写入值 sr.Close(); fs2.Close(); } str = "NET_DVR_CaptureJPEGPicture_NEW succ and save the data in buffer " + str; //DebugInfo(str); } } private void btnJPEG_Click(object sender, EventArgs e) { MessageBox.Show("时间设定成功,将在预定时间后开始拍照!"); switch (comboBoxDevice.SelectedIndex) { case 0: //在设定的路径下创建保存图片的文件夹 string fileName1 = DV1.DeviceID; savePath1 = System.Environment.CurrentDirectory + "\\"+fileName1; DV1.picTime = double.Parse(textBoxPicTime.Text); UpdateAppConfig("DV1_PicTime", DV1.picTime.ToString()); deviceNum += 1; UpdateAppConfig("DeviceNum", deviceNum.ToString()); // Determine whether the directory exists. if (!Directory.Exists(savePath1)) { // Create the directory it does not exist. Directory.CreateDirectory(savePath1); } //定时器定时拍摄图片 myTimer = new System.Timers.Timer(DV1.picTime * 60000);//定时周期10秒 myTimer.Enabled = true; //定时器开始用 Control.CheckForIllegalCrossThreadCalls = false; myTimer.Elapsed += myTimer_DV1;//到10秒了做的事件 myTimer.AutoReset = true; //是否不断重复定时器操作 break; case 1: //在设定的路径下创建保存图片的文件夹 string fileName2 = DV2.DeviceID; savePath2 = System.Environment.CurrentDirectory + "\\" + fileName2; DV2.picTime = double.Parse(textBoxPicTime.Text); UpdateAppConfig("DV2_PicTime", DV2.picTime.ToString()); deviceNum += 1; UpdateAppConfig("DeviceNum", deviceNum.ToString()); // Determine whether the directory exists. if (!Directory.Exists(savePath2)) { // Create the directory it does not exist. Directory.CreateDirectory(savePath2); } //定时器定时拍摄图片 myTimer = new System.Timers.Timer(DV2.picTime * 60000);//定时周期10秒 myTimer.Enabled = true; //定时器开始用 Control.CheckForIllegalCrossThreadCalls = false; myTimer.Elapsed += myTimer_DV2;//到10秒了做的事件 myTimer.AutoReset = true; //是否不断重复定时器操作 break; case 2: //在设定的路径下创建保存图片的文件夹 string fileName3 = DV3.DeviceID; savePath3 = System.Environment.CurrentDirectory + "\\" + fileName3; DV3.picTime = double.Parse(textBoxPicTime.Text); UpdateAppConfig("DV3_PicTime", DV3.picTime.ToString()); deviceNum += 1; UpdateAppConfig("DeviceNum", deviceNum.ToString()); // Determine whether the directory exists. if (!Directory.Exists(savePath3)) { // Create the directory it does not exist. Directory.CreateDirectory(savePath3); } //定时器定时拍摄图片 myTimer = new System.Timers.Timer(DV3.picTime * 60000);//定时周期10秒 myTimer.Enabled = true; //定时器开始用 Control.CheckForIllegalCrossThreadCalls = false; myTimer.Elapsed += myTimer_DV3;//到10秒了做的事件 myTimer.AutoReset = true; //是否不断重复定时器操作 break; } } private void btn_Exit_Click(object sender, EventArgs e) { //停止预览 if (DV1.m_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(DV1.m_lRealHandle); DV1.m_lRealHandle = -1; } if (DV2.m_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(DV2.m_lRealHandle); DV2.m_lRealHandle = -1; } if (DV3.m_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(DV3.m_lRealHandle); DV3.m_lRealHandle = -1; } //注销登录 if (DV1.m_lUserID >= 0) { CHCNetSDK.NET_DVR_Logout(DV1.m_lUserID); DV1.m_lUserID = -1; } if (DV2.m_lUserID >= 0) { CHCNetSDK.NET_DVR_Logout(DV2.m_lUserID); DV2.m_lUserID = -1; } if (DV3.m_lUserID >= 0) { CHCNetSDK.NET_DVR_Logout(DV3.m_lUserID); DV3.m_lUserID = -1; } CHCNetSDK.NET_DVR_Cleanup(); Application.Exit(); } private void textBoxUserName_TextChanged(object sender, EventArgs e) { } //private void btnGetToken_Click(object sender, EventArgs e) //{ // if (m_tokenWrite < 0) // { // if (string.IsNullOrWhiteSpace(textBoxToken.Text)) // { // //DebugInfo("token can't be NULL!"); // MessageBox.Show("令牌不能为空!"); // } // else // { // // m_token = textBoxToken.Text; // btnLogin.Enabled = true; // textBoxIP.Enabled = true; // textBoxPort.Enabled = true; // textBoxUser.Enabled = true; // textBoxPassword.Enabled = true; // //textBoxToken.Enabled = false; // //btnGetToken.Text = "修改"; // m_tokenWrite = 1; // UpdateAppConfig("Token", m_token); // } // } // else { // //textBoxToken.Enabled = true; // //btnGetToken.Text = "确定"; // m_tokenWrite = -1; // } //} private void comboBoxSpeed_SelectedIndexChanged(object sender, EventArgs e) { } private void time_keypress(object sender, KeyPressEventArgs e) { if ((Char.IsNumber(e.KeyChar)) && e.KeyChar != (char)8) { //e.Handled = true; } else if(e.KeyChar==46){ if (textBoxPicTime.Text.Length -1) //{ // checkBoxPreview.Checked = true; //} //else //{ // checkBoxPreview.Checked = false; //} } private void PTZControlWithSpeed(int m_lRealHandle, uint direct, uint i) { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, direct, i, (uint)comboBoxSpeed.SelectedIndex + 1); } //private void PTZControlWithSpeed_Other(int m_lUserID, int direct, int i) //{ // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel,direct, i, (int)comboBoxSpeed.SelectedIndex + 1); //} private void btnLeft_MouseDown(object sender, MouseEventArgs e) { if (isDevice==1) { PTZControlWithSpeed(DV1.m_lRealHandle, CHCNetSDK.PAN_LEFT,0); } else if (isDevice == 2) { PTZControlWithSpeed(DV2.m_lRealHandle, CHCNetSDK.PAN_LEFT, 0); } else if (isDevice == 3) { PTZControlWithSpeed(DV3.m_lRealHandle, CHCNetSDK.PAN_LEFT, 0); } } private void btnLeft_MouseUp(object sender, MouseEventArgs e) { if (isDevice == 1) { PTZControlWithSpeed(DV1.m_lRealHandle, CHCNetSDK.PAN_LEFT, 1); } else if (isDevice == 2) { PTZControlWithSpeed(DV2.m_lRealHandle, CHCNetSDK.PAN_LEFT, 1); } else if (isDevice == 3) { PTZControlWithSpeed(DV3.m_lRealHandle, CHCNetSDK.PAN_LEFT, 1); } } private void textBoxIP_TextChanged(object sender, EventArgs e) { } private void textBoxPassword_TextChanged(object sender, EventArgs e) { } private void RealPlayWnd1_Click(object sender, EventArgs e) //1号摄像头窗口显示 { } private void groupBox3_Enter(object sender, EventArgs e) { } private void textBoxPort_TextChanged(object sender, EventArgs e) { } private void RealPlayWnd2_Click(object sender, EventArgs e) { } private void textBoxPicTime_TextChanged(object sender, EventArgs e) { } //以下为控制摄像头转动的功能,暂时设备无此功能 //private void btnUp_MouseDown(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_UP, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnUp_MouseUp(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_UP, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnRight_MouseDown(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_RIGHT, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnRight_MouseUp(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_RIGHT, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnDown_MouseDown(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_DOWN, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnDown_MouseUp(object sender, MouseEventArgs e) //{ // if (checkBoxPreview.Checked) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_DOWN, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // } //} //private void btnAuto_Click(object sender, EventArgs e) //{ // if (checkBoxPreview.Checked) // { // if (!bAuto) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_AUTO, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // btnAuto.Text = "Stop"; // bAuto = true; // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_AUTO, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // btnAuto.Text = "Auto"; // bAuto = false; // } // } // else // { // if (!bAuto) // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_AUTO, 0, (uint)comboBoxSpeed.SelectedIndex + 1); // btnAuto.Text = "Stop"; // bAuto = true; // } // else // { // CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_AUTO, 1, (uint)comboBoxSpeed.SelectedIndex + 1); // btnAuto.Text = "Auto"; // bAuto = false; // } // } //} } }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3