general overhaul & add presets
This commit is contained in:
99
MainForm.cs
99
MainForm.cs
@@ -12,15 +12,22 @@ namespace robospot_camera_finder
|
||||
|
||||
private BindingList<Camera> all_cameras = new();
|
||||
|
||||
class Camera
|
||||
public static string cam_username = "admin";
|
||||
public static string cam_password = "RoboSpot10";
|
||||
|
||||
public class Camera
|
||||
{
|
||||
private IPAddress ip;
|
||||
private string name;
|
||||
private string location;
|
||||
private string serial;
|
||||
|
||||
public Camera(string name, IPAddress ip)
|
||||
public Camera(string name, IPAddress ip, string location, string serial)
|
||||
{
|
||||
this.name = name;
|
||||
this.ip = ip;
|
||||
this.location = location;
|
||||
this.serial = serial;
|
||||
}
|
||||
|
||||
public string camera_name
|
||||
@@ -38,6 +45,21 @@ namespace robospot_camera_finder
|
||||
return ip;
|
||||
}
|
||||
}
|
||||
|
||||
public string camera_location
|
||||
{
|
||||
get
|
||||
{
|
||||
return location;
|
||||
}
|
||||
}
|
||||
public string camera_serial
|
||||
{
|
||||
get
|
||||
{
|
||||
return serial;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public MainForm()
|
||||
@@ -79,33 +101,67 @@ namespace robospot_camera_finder
|
||||
|
||||
browser.ServiceAdded += (sender, args) =>
|
||||
{
|
||||
foreach (var cam_addr in args.Announcement.Addresses)
|
||||
{
|
||||
if (cam_addr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||
{
|
||||
Camera camera = new Camera("Camera " + cam_addr.ToString(), cam_addr);
|
||||
all_cameras.Add(camera);
|
||||
}
|
||||
}
|
||||
ServiceAdded(sender, args);
|
||||
};
|
||||
|
||||
browser.ServiceChanged += (sender, args) =>
|
||||
{
|
||||
ServiceAdded(sender, args);
|
||||
};
|
||||
|
||||
browser.ServiceRemoved += (sender, args) =>
|
||||
{
|
||||
foreach (var cam_ip in args.Announcement.Addresses)
|
||||
ServiceRemoved(sender, args);
|
||||
};
|
||||
}
|
||||
|
||||
private void ServiceAdded(object sender, ServiceAnnouncementEventArgs args)
|
||||
{
|
||||
foreach (var cam_addr in args.Announcement.Addresses)
|
||||
{
|
||||
if (cam_addr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||
{
|
||||
if (cam_ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + cam_addr + "/stw-cgi/system.cgi?msubmenu=deviceinfo&action=view");
|
||||
request.Credentials = new NetworkCredential(MainForm.cam_username, MainForm.cam_password);
|
||||
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
||||
string text;
|
||||
using (var sr = new StreamReader(response.GetResponseStream())) { text = sr.ReadToEnd(); }
|
||||
string[] resp_lines = text.Split('\n');
|
||||
string location_line = Array.Find(resp_lines, line => line.Trim().StartsWith("DeviceLocation="));
|
||||
string serial_line = Array.Find(resp_lines, line => line.Trim().StartsWith("SerialNumber="));
|
||||
string location = "";
|
||||
string serial = "";
|
||||
if (location_line != null)
|
||||
{
|
||||
foreach (var camera in all_cameras)
|
||||
location = location_line.Substring("DeviceLocation=".Length).Trim();
|
||||
}
|
||||
if (serial_line != null)
|
||||
{
|
||||
serial = serial_line.Substring("SerialNumber=".Length).Trim();
|
||||
}
|
||||
|
||||
Camera camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial);
|
||||
all_cameras.Add(camera);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ServiceRemoved(object sender, ServiceAnnouncementEventArgs args)
|
||||
{
|
||||
foreach (var cam_ip in args.Announcement.Addresses)
|
||||
{
|
||||
if (cam_ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||
{
|
||||
foreach (var camera in all_cameras)
|
||||
{
|
||||
if (cam_ip == camera.camera_ip)
|
||||
{
|
||||
if (cam_ip == camera.camera_ip)
|
||||
{
|
||||
all_cameras.Remove(camera);
|
||||
return;
|
||||
}
|
||||
all_cameras.Remove(camera);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
@@ -117,8 +173,11 @@ namespace robospot_camera_finder
|
||||
{
|
||||
if (lbMain.SelectedItem != null)
|
||||
{
|
||||
Form viewer = new StreamViewer(lbMain.GetItemText(lbMain.SelectedItem), lbMain.SelectedValue.ToString());
|
||||
toolStripStatusLabel.Text = "Loading camera...";
|
||||
Camera camera = all_cameras.FirstOrDefault<Camera>(cam => cam.camera_ip.ToString() == lbMain.SelectedValue.ToString());
|
||||
Form viewer = new StreamViewer(lbMain.GetItemText(lbMain.SelectedItem), lbMain.SelectedValue.ToString(), camera, this);
|
||||
viewer.Show();
|
||||
toolStripStatusLabel.Text = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user