using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Ozeki.Media.MediaHandlers; using Ozeki.Media.MediaHandlers.IPCamera; using Ozeki.Media.MediaHandlers.IPCamera.Types; using Ozeki.Media.MediaHandlers.Video; using Ozeki.Media.IPCamera; using Ozeki.Media.IPCamera.Network; using Ozeki.Media.Video; using Ozeki.Media.Video.Controls; namespace ConfigureOnvifCameraRemotely07 { public partial class Form1 : Form { private IIPCamera _camera; private DrawingImageProvider _imageProvider; private MediaConnector _connector; private VideoViewerWF _videoViewerWf; private List<int> _ports; public Form1() { InitializeComponent(); _ports = new List<int>(); _connector = new MediaConnector(); _imageProvider = new DrawingImageProvider(); _videoViewerWf = new VideoViewerWF(); SetVideoViewer(); } private void SetVideoViewer() { CameraBox.Controls.Add(_videoViewerWf); _videoViewerWf.Size = new Size(260, 180); _videoViewerWf.BackColor = Color.Black; _videoViewerWf.TabStop = false; _videoViewerWf.FlipMode = FlipMode.None; _videoViewerWf.Location = new Point(30, 30); _videoViewerWf.Name = "_videoViewerWf"; } private void button_Connect_Click(object sender, EventArgs e) { _camera = IPCameraFactory.GetCamera("192.168.115.175:8080", "admin", "admin"); _camera.CameraStateChanged += _camera_CameraStateChanged; _connector.Connect(_camera.VideoChannel, _imageProvider); _videoViewerWf.SetImageProvider(_imageProvider); _videoViewerWf.Start(); _camera.Start(); } private void _camera_CameraStateChanged(object sender, CameraStateEventArgs e) { if (e.State == IPCameraState.Streaming) { InvokeGuiThread(() => groupBox_Network.Enabled = true); ClearGUI(); GetNetworkSettings(); if (!_camera.NetworkManager.DefaultConfig.UseDHCP) InvokeGuiThread(() => radioButton_Manual.Checked = true ); } } private void ClearGUI() { InvokeGuiThread(() => { textBox_IP.Text = String.Empty; textBox_Host.Text = String.Empty; textBox_Netmask.Text = String.Empty; textBox_Gateway.Text = String.Empty; textBox_DNS.Text = String.Empty; textBox_NTP_IP.Text = String.Empty; textBox_HTTP.Text = String.Empty; textBox_HTTPS.Text = String.Empty; textBox_RTSP.Text = String.Empty; comboBox_HTTP.Items.Clear(); comboBox_HTTPS.Items.Clear(); comboBox_RTSP.Items.Clear(); }); } private void GetNetworkSettings() { InvokeGuiThread(() => { textBox_IP.Text = _camera.NetworkManager.DefaultConfig.IPAddress; textBox_Host.Text = _camera.NetworkManager.DefaultConfig.HostName; textBox_Netmask.Text = _camera.NetworkManager.DefaultConfig.Netmask; textBox_Gateway.Text = _camera.NetworkManager.DefaultConfig.DefaultGateway; textBox_DNS.Text = _camera.NetworkManager.DefaultConfig.DNS; textBox_NTP_IP.Text = _camera.NetworkManager.DefaultConfig.NTP.IPAddress; if (_camera.NetworkManager.HttpPort == null) textBox_HTTP.Enabled = false; else { foreach (var ports in _camera.NetworkManager.HttpPort.Port) { comboBox_HTTP.Items.Add(ports); } } if (_camera.NetworkManager.HttpsPort == null) textBox_HTTPS.Enabled = false; else { foreach (var ports in _camera.NetworkManager.HttpsPort.Port) { comboBox_HTTPS.Items.Add(ports); } } if (_camera.NetworkManager.RtspPort == null) textBox_RTSP.Enabled = false; else { foreach (var ports in _camera.NetworkManager.RtspPort.Port) { comboBox_RTSP.Items.Add(ports); } } }); } private void button_Apply_Click(object sender, EventArgs e) { if (radioButton_DHCP.Checked) { _camera.NetworkManager.DefaultConfig.UseDHCP = true; } if (radioButton_Manual.Checked) { _camera.NetworkManager.DefaultConfig.UseDHCP = false; _camera.NetworkManager.DefaultConfig.IPAddress = textBox_IP.Text; _camera.NetworkManager.DefaultConfig.HostName = textBox_Host.Text; _camera.NetworkManager.DefaultConfig.Netmask = textBox_Netmask.Text; _camera.NetworkManager.DefaultConfig.DefaultGateway = textBox_Gateway.Text; _camera.NetworkManager.DefaultConfig.DNS = textBox_DNS.Text; if (_camera.NetworkManager.HttpPort != null) { _ports.Clear(); foreach (var item in comboBox_HTTP.Items) { var ports = Int32.Parse(item.ToString()); _ports.Add(ports); } _camera.NetworkManager.HttpPort = new CameraPort(CameraProtocolType.HTTP, true, _ports.ToArray()); } if (_camera.NetworkManager.HttpsPort != null) { _ports.Clear(); foreach (var item in comboBox_HTTPS.Items) { var ports = Int32.Parse(item.ToString()); _ports.Add(ports); } _camera.NetworkManager.HttpsPort = new CameraPort(CameraProtocolType.HTTPS, true, _ports.ToArray()); } if (_camera.NetworkManager.RtspPort != null) { _ports.Clear(); foreach (var item in comboBox_RTSP.Items) { var ports = Int32.Parse(item.ToString()); _ports.Add(ports); } _camera.NetworkManager.RtspPort = new CameraPort(CameraProtocolType.RTSP, true, _ports.ToArray()); } } _camera.NetworkManager.ApplyConfig(); } private void button_HTTP_Add_Click(object sender, EventArgs e) { if (!comboBox_HTTP.Items.Contains(textBox_HTTP.Text)) comboBox_HTTP.Items.Add(textBox_HTTP.Text); } private void button_HTTPS_Add_Click(object sender, EventArgs e) { if (!comboBox_HTTPS.Items.Contains(textBox_HTTPS.Text)) comboBox_HTTPS.Items.Add(textBox_HTTPS.Text); } private void button_RTSP_Add_Click(object sender, EventArgs e) { if (!comboBox_RTSP.Items.Contains(textBox_RTSP.Text)) comboBox_RTSP.Items.Add(textBox_RTSP.Text); } private void button_HTTP_Delete_Click(object sender, EventArgs e) { for (int i = 0; i < comboBox_HTTP.Items.Count; i++) { if (comboBox_HTTP.Items[i].ToString() == textBox_HTTP.Text) comboBox_HTTP.Items.Remove(comboBox_HTTP.Items[i]); } } private void button_HTTPS_Delete_Click(object sender, EventArgs e) { for (int i = 0; i < comboBox_HTTPS.Items.Count; i++) { if (comboBox_HTTPS.Items[i].ToString() == textBox_HTTPS.Text) comboBox_HTTPS.Items.Remove(comboBox_HTTPS.Items[i]); } } private void button_RTSP_Delete_Click(object sender, EventArgs e) { for (int i = 0; i < comboBox_RTSP.Items.Count; i++) { if (comboBox_RTSP.Items[i].ToString() == textBox_RTSP.Text) comboBox_RTSP.Items.Remove(comboBox_RTSP.Items[i]); } } private void radioButton_Manual_CheckedChanged(object sender, EventArgs e) { groupBox_Basic.Enabled = true; groupBox_Ports.Enabled = true; } private void radioButton_DHCP_CheckedChanged(object sender, EventArgs e) { groupBox_Basic.Enabled = false; groupBox_Ports.Enabled = false; } private void InvokeGuiThread(Action action) { BeginInvoke(action); } } }
Edited by phillpower2, 18 October 2014 - 12:09 PM.
email address removed for security.