adding discovery menu

This commit is contained in:
Vincent BOUQUET
2024-03-03 18:57:02 +01:00
parent 9abc348dd3
commit a12aff10cc
2 changed files with 113 additions and 70 deletions

43
MainForm.Designer.cs generated
View File

@@ -36,9 +36,11 @@
discoveryToolStripMenuItem = new ToolStripMenuItem(); discoveryToolStripMenuItem = new ToolStripMenuItem();
startToolStripMenuItem = new ToolStripMenuItem(); startToolStripMenuItem = new ToolStripMenuItem();
stopToolStripMenuItem = new ToolStripMenuItem(); stopToolStripMenuItem = new ToolStripMenuItem();
forceReloadToolStripMenuItem = new ToolStripMenuItem(); forceRediscoverToolStripMenuItem = new ToolStripMenuItem();
saveToolStripMenuItem = new ToolStripMenuItem(); saveToolStripMenuItem = new ToolStripMenuItem();
loadToolStripMenuItem = new ToolStripMenuItem(); loadToolStripMenuItem = new ToolStripMenuItem();
toolStripSeparator1 = new ToolStripSeparator();
toolStripStatusDisco = new ToolStripStatusLabel();
statusStripMain.SuspendLayout(); statusStripMain.SuspendLayout();
menuStrip1.SuspendLayout(); menuStrip1.SuspendLayout();
SuspendLayout(); SuspendLayout();
@@ -56,7 +58,7 @@
// //
// statusStripMain // statusStripMain
// //
statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel }); statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel, toolStripStatusDisco });
statusStripMain.Location = new Point(0, 428); statusStripMain.Location = new Point(0, 428);
statusStripMain.Name = "statusStripMain"; statusStripMain.Name = "statusStripMain";
statusStripMain.Size = new Size(800, 22); statusStripMain.Size = new Size(800, 22);
@@ -79,7 +81,7 @@
// //
// discoveryToolStripMenuItem // discoveryToolStripMenuItem
// //
discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceReloadToolStripMenuItem, saveToolStripMenuItem, loadToolStripMenuItem }); discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceRediscoverToolStripMenuItem, toolStripSeparator1, saveToolStripMenuItem, loadToolStripMenuItem });
discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem"; discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem";
discoveryToolStripMenuItem.Size = new Size(70, 20); discoveryToolStripMenuItem.Size = new Size(70, 20);
discoveryToolStripMenuItem.Text = "Discovery"; discoveryToolStripMenuItem.Text = "Discovery";
@@ -87,7 +89,7 @@
// startToolStripMenuItem // startToolStripMenuItem
// //
startToolStripMenuItem.Name = "startToolStripMenuItem"; startToolStripMenuItem.Name = "startToolStripMenuItem";
startToolStripMenuItem.Size = new Size(180, 22); startToolStripMenuItem.Size = new Size(165, 22);
startToolStripMenuItem.Text = "Start"; startToolStripMenuItem.Text = "Start";
startToolStripMenuItem.Click += startToolStripMenuItem_Click; startToolStripMenuItem.Click += startToolStripMenuItem_Click;
// //
@@ -95,28 +97,41 @@
// //
stopToolStripMenuItem.Enabled = false; stopToolStripMenuItem.Enabled = false;
stopToolStripMenuItem.Name = "stopToolStripMenuItem"; stopToolStripMenuItem.Name = "stopToolStripMenuItem";
stopToolStripMenuItem.Size = new Size(180, 22); stopToolStripMenuItem.Size = new Size(165, 22);
stopToolStripMenuItem.Text = "Stop"; stopToolStripMenuItem.Text = "Stop";
stopToolStripMenuItem.Click += stopToolStripMenuItem_Click; stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
// //
// forceReloadToolStripMenuItem // forceRediscoverToolStripMenuItem
// //
forceReloadToolStripMenuItem.Name = "forceReloadToolStripMenuItem"; forceRediscoverToolStripMenuItem.Name = "forceRediscoverToolStripMenuItem";
forceReloadToolStripMenuItem.Size = new Size(180, 22); forceRediscoverToolStripMenuItem.Size = new Size(165, 22);
forceReloadToolStripMenuItem.Text = "Force reload"; forceRediscoverToolStripMenuItem.Text = "Force re-discover";
forceReloadToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click; forceRediscoverToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
// //
// saveToolStripMenuItem // saveToolStripMenuItem
// //
saveToolStripMenuItem.Name = "saveToolStripMenuItem"; saveToolStripMenuItem.Name = "saveToolStripMenuItem";
saveToolStripMenuItem.Size = new Size(180, 22); saveToolStripMenuItem.Size = new Size(165, 22);
saveToolStripMenuItem.Text = "Save"; saveToolStripMenuItem.Text = "Save";
saveToolStripMenuItem.Click += saveToolStripMenuItem_Click;
// //
// loadToolStripMenuItem // loadToolStripMenuItem
// //
loadToolStripMenuItem.Name = "loadToolStripMenuItem"; loadToolStripMenuItem.Name = "loadToolStripMenuItem";
loadToolStripMenuItem.Size = new Size(180, 22); loadToolStripMenuItem.Size = new Size(165, 22);
loadToolStripMenuItem.Text = "Load"; loadToolStripMenuItem.Text = "Load";
loadToolStripMenuItem.Click += loadToolStripMenuItem_Click;
//
// toolStripSeparator1
//
toolStripSeparator1.Name = "toolStripSeparator1";
toolStripSeparator1.Size = new Size(162, 6);
//
// toolStripStatusDisco
//
toolStripStatusDisco.Name = "toolStripStatusDisco";
toolStripStatusDisco.Size = new Size(111, 17);
toolStripStatusDisco.Text = "Discovery : Stopped";
// //
// MainForm // MainForm
// //
@@ -148,8 +163,10 @@
private ToolStripMenuItem discoveryToolStripMenuItem; private ToolStripMenuItem discoveryToolStripMenuItem;
private ToolStripMenuItem startToolStripMenuItem; private ToolStripMenuItem startToolStripMenuItem;
private ToolStripMenuItem stopToolStripMenuItem; private ToolStripMenuItem stopToolStripMenuItem;
private ToolStripMenuItem forceReloadToolStripMenuItem; private ToolStripMenuItem forceRediscoverToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem; private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem loadToolStripMenuItem; private ToolStripMenuItem loadToolStripMenuItem;
private ToolStripSeparator toolStripSeparator1;
private ToolStripStatusLabel toolStripStatusDisco;
} }
} }

View File

@@ -2,7 +2,11 @@ using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Windows.Forms;
using Tmds.MDns; using Tmds.MDns;
using static robospot_camera_finder.MainForm;
namespace robospot_camera_finder namespace robospot_camera_finder
{ {
@@ -17,51 +21,27 @@ namespace robospot_camera_finder
private static string browse_scope = "_rtsp._tcp"; private static string browse_scope = "_rtsp._tcp";
bool is_browsing = false;
public class Camera public class Camera
{ {
private IPAddress ip; public Camera(string name, string ip, string location, string serial)
private string name;
private string location;
private string serial;
public Camera(string name, IPAddress ip, string location, string serial)
{ {
this.name = name; camera_name = name;
this.ip = ip; camera_ip = ip;
this.location = location; camera_location = location;
this.serial = serial; camera_serial = serial;
} }
public string camera_name public Camera() { }
{
get
{
return name;
}
}
public IPAddress camera_ip public string camera_name { get; set; }
{
get
{
return ip;
}
}
public string camera_location public string camera_ip { get; set; }
{
get public string camera_location { get; set; }
{
return location; public string camera_serial { get; set; }
}
}
public string camera_serial
{
get
{
return serial;
}
}
} }
public MainForm() public MainForm()
@@ -127,6 +107,8 @@ namespace robospot_camera_finder
if (!browser.IsBrowsing) if (!browser.IsBrowsing)
{ {
browser.StartBrowse(browse_scope); browser.StartBrowse(browse_scope);
is_browsing = true;
toolStripStatusDisco.Text = "Discovery : Started";
} }
} }
else else
@@ -134,6 +116,8 @@ namespace robospot_camera_finder
if (browser.IsBrowsing) if (browser.IsBrowsing)
{ {
browser.StopBrowse(); browser.StopBrowse();
is_browsing = false;
toolStripStatusDisco.Text = "Discovery : Stopped";
} }
} }
@@ -166,17 +150,26 @@ namespace robospot_camera_finder
serial = serial_line.Substring("SerialNumber=".Length).Trim(); serial = serial_line.Substring("SerialNumber=".Length).Trim();
} }
Camera new_camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial); Camera new_camera = new Camera("Camera " + cam_addr + " - " + location + " - " + serial, cam_addr.ToString(), location, serial);
add_camera(new_camera);
}
}
}
private void add_camera(Camera new_camera)
{
if (all_cameras.Count == 0) if (all_cameras.Count == 0)
{ {
all_cameras.Add(new_camera); all_cameras.Add(new_camera);
} else }
else
{ {
for (int i = 0; i < all_cameras.Count; i++) Camera find_cam = all_cameras.FirstOrDefault(cam => cam.camera_serial == new_camera.camera_serial);
{
if (all_cameras[i].camera_serial == new_camera.camera_serial) if (find_cam != null)
{ {
int i = all_cameras.IndexOf(find_cam);
all_cameras[i] = new_camera; all_cameras[i] = new_camera;
} }
else else
@@ -185,9 +178,6 @@ namespace robospot_camera_finder
} }
} }
} }
}
}
}
private void ServiceRemoved(object sender, ServiceAnnouncementEventArgs args) private void ServiceRemoved(object sender, ServiceAnnouncementEventArgs args)
{ {
@@ -197,7 +187,7 @@ namespace robospot_camera_finder
{ {
foreach (var camera in all_cameras) foreach (var camera in all_cameras)
{ {
if (cam_ip == camera.camera_ip) if (cam_ip.ToString() == camera.camera_ip)
{ {
all_cameras.Remove(camera); all_cameras.Remove(camera);
return; return;
@@ -244,5 +234,41 @@ namespace robospot_camera_finder
browse(true); browse(true);
} }
} }
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
string json = "";
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "json file (*.json)|*.json";
openFile.RestoreDirectory = true;
if (openFile.ShowDialog() == DialogResult.OK)
{
json = File.ReadAllText(openFile.FileName);
List<Camera> cameras_in_file = JsonSerializer.Deserialize<List<Camera>>(json);
foreach (Camera new_camera in cameras_in_file)
{
add_camera(new_camera);
}
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
string json = JsonSerializer.Serialize<BindingList<Camera>>(all_cameras, new JsonSerializerOptions
{
WriteIndented = true
});
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "json file (*.json)|*.json";
saveFile.RestoreDirectory = true;
if (saveFile.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFile.FileName, json);
}
}
} }
} }