adding discovery menu

This commit is contained in:
Vincent BOUQUET
2024-03-03 14:51:02 +01:00
parent ac1a6cf8d3
commit 9abc348dd3
3 changed files with 141 additions and 5 deletions

69
MainForm.Designer.cs generated
View File

@@ -32,7 +32,15 @@
lbMain = new ListBox();
statusStripMain = new StatusStrip();
toolStripStatusLabel = new ToolStripStatusLabel();
menuStrip1 = new MenuStrip();
discoveryToolStripMenuItem = new ToolStripMenuItem();
startToolStripMenuItem = new ToolStripMenuItem();
stopToolStripMenuItem = new ToolStripMenuItem();
forceReloadToolStripMenuItem = new ToolStripMenuItem();
saveToolStripMenuItem = new ToolStripMenuItem();
loadToolStripMenuItem = new ToolStripMenuItem();
statusStripMain.SuspendLayout();
menuStrip1.SuspendLayout();
SuspendLayout();
//
// lbMain
@@ -60,19 +68,73 @@
toolStripStatusLabel.Name = "toolStripStatusLabel";
toolStripStatusLabel.Size = new Size(0, 17);
//
// menuStrip1
//
menuStrip1.Items.AddRange(new ToolStripItem[] { discoveryToolStripMenuItem });
menuStrip1.Location = new Point(0, 0);
menuStrip1.Name = "menuStrip1";
menuStrip1.Size = new Size(800, 24);
menuStrip1.TabIndex = 2;
menuStrip1.Text = "menuStrip1";
//
// discoveryToolStripMenuItem
//
discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceReloadToolStripMenuItem, saveToolStripMenuItem, loadToolStripMenuItem });
discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem";
discoveryToolStripMenuItem.Size = new Size(70, 20);
discoveryToolStripMenuItem.Text = "Discovery";
//
// startToolStripMenuItem
//
startToolStripMenuItem.Name = "startToolStripMenuItem";
startToolStripMenuItem.Size = new Size(180, 22);
startToolStripMenuItem.Text = "Start";
startToolStripMenuItem.Click += startToolStripMenuItem_Click;
//
// stopToolStripMenuItem
//
stopToolStripMenuItem.Enabled = false;
stopToolStripMenuItem.Name = "stopToolStripMenuItem";
stopToolStripMenuItem.Size = new Size(180, 22);
stopToolStripMenuItem.Text = "Stop";
stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
//
// forceReloadToolStripMenuItem
//
forceReloadToolStripMenuItem.Name = "forceReloadToolStripMenuItem";
forceReloadToolStripMenuItem.Size = new Size(180, 22);
forceReloadToolStripMenuItem.Text = "Force reload";
forceReloadToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
//
// saveToolStripMenuItem
//
saveToolStripMenuItem.Name = "saveToolStripMenuItem";
saveToolStripMenuItem.Size = new Size(180, 22);
saveToolStripMenuItem.Text = "Save";
//
// loadToolStripMenuItem
//
loadToolStripMenuItem.Name = "loadToolStripMenuItem";
loadToolStripMenuItem.Size = new Size(180, 22);
loadToolStripMenuItem.Text = "Load";
//
// MainForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(statusStripMain);
Controls.Add(menuStrip1);
Controls.Add(lbMain);
Icon = (Icon)resources.GetObject("$this.Icon");
MainMenuStrip = menuStrip1;
Name = "MainForm";
Text = "RoboSpot MotionCamera finder";
FormClosing += MainForm_FormClosing;
statusStripMain.ResumeLayout(false);
statusStripMain.PerformLayout();
menuStrip1.ResumeLayout(false);
menuStrip1.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -82,5 +144,12 @@
private ListBox lbMain;
private StatusStrip statusStripMain;
private ToolStripStatusLabel toolStripStatusLabel;
private MenuStrip menuStrip1;
private ToolStripMenuItem discoveryToolStripMenuItem;
private ToolStripMenuItem startToolStripMenuItem;
private ToolStripMenuItem stopToolStripMenuItem;
private ToolStripMenuItem forceReloadToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem loadToolStripMenuItem;
}
}

View File

@@ -15,6 +15,8 @@ namespace robospot_camera_finder
public static string cam_username = "admin";
public static string cam_password = "RoboSpot10";
private static string browse_scope = "_rtsp._tcp";
public class Camera
{
private IPAddress ip;
@@ -93,8 +95,6 @@ namespace robospot_camera_finder
}
}
browser.StartBrowse("_rtsp._tcp");
lbMain.DataSource = all_cameras;
lbMain.DisplayMember = "camera_name";
lbMain.ValueMember = "camera_ip";
@@ -111,8 +111,34 @@ namespace robospot_camera_finder
browser.ServiceRemoved += (sender, args) =>
{
ServiceRemoved(sender, args);
if (browser.IsBrowsing)
{
ServiceRemoved(sender, args);
}
};
browse(true);
}
private void browse(bool browse_needed)
{
if (browse_needed)
{
if (!browser.IsBrowsing)
{
browser.StartBrowse(browse_scope);
}
}
else
{
if (browser.IsBrowsing)
{
browser.StopBrowse();
}
}
startToolStripMenuItem.Enabled = !browser.IsBrowsing;
stopToolStripMenuItem.Enabled = browser.IsBrowsing;
}
private void ServiceAdded(object sender, ServiceAnnouncementEventArgs args)
@@ -140,8 +166,25 @@ namespace robospot_camera_finder
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);
Camera new_camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial);
if (all_cameras.Count == 0)
{
all_cameras.Add(new_camera);
} else
{
for (int i = 0; i < all_cameras.Count; i++)
{
if (all_cameras[i].camera_serial == new_camera.camera_serial)
{
all_cameras[i] = new_camera;
}
else
{
all_cameras.Add(new_camera);
}
}
}
}
}
}
@@ -180,5 +223,26 @@ namespace robospot_camera_finder
toolStripStatusLabel.Text = "";
}
}
private void startToolStripMenuItem_Click(object sender, EventArgs e)
{
browse(true);
}
private void stopToolStripMenuItem_Click(object sender, EventArgs e)
{
browse(false);
}
private void forceReloadToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Are you sure you want to clear discovered cameras and restart the discovery process ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result == DialogResult.Yes)
{
browse(false);
all_cameras.Clear();
browse(true);
}
}
}
}

View File

@@ -120,6 +120,9 @@
<metadata name="statusStripMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>