Atlas-Cronos 7.5.0
Loading...
Searching...
No Matches
DiscoveryForm Namespace Reference

Sample code on how to use the Discovery class in Atlas. More...

Detailed Description

Sample code on how to use the Discovery class in Atlas.

public partial class DiscoveryDialog : Form
{
private Discovery _discovery;
public DiscoveryDialog()
{
InitializeComponent();
}
private void DiscoveryDialog_Load_1(object sender, EventArgs e)
{
// start discovery
Start();
}
private void DiscoveryDialog_FormClosing(object sender, FormClosingEventArgs e)
{
Stop();
}
void _discovery_DeviceError(object sender, DeviceErrorEventArgs e)
{
BeginInvoke((Action)(() => ShowError(e.ErrorMessage)));
}
private void ShowError(string message)
{
MessageBox.Show(message);
}
void _discovery_DeviceLost(object sender, CameraDeviceInfoEventArgs e)
{
BeginInvoke((Action)(() => RemoveDevice(e.CameraDevice)));
}
void _discovery_DeviceFound(object sender, CameraDeviceInfoEventArgs e)
{
BeginInvoke((Action)(() => AddDevice(e.CameraDevice)));
}
private void RemoveDevice(CameraDeviceInfo cameraDeviceInfo)
{
foreach (ListViewItem item in listViewDevices.Items)
{
var device = item.Tag as CameraDeviceInfo;
if (device != null && device.DeviceIdentifier == cameraDeviceInfo.DeviceIdentifier)
{
listViewDevices.Items.Remove(item);
}
}
}
private void AddDevice(CameraDeviceInfo cameraDeviceInfo)
{
foreach (var streamingFormat in cameraDeviceInfo.StreamingFormats)
{
var info = new CameraDeviceInfo(cameraDeviceInfo);
var item = new ListViewItem(string.Format("{0}", cameraDeviceInfo.Name));
if (cameraDeviceInfo.IpSettings != null)
{
item.SubItems.Add(cameraDeviceInfo.IpSettings.IpAddress);
item.SubItems.Add(cameraDeviceInfo.IpSettings.IsWireless ? "Yes" : "No");
}
else
{
item.SubItems.Add("N/A");
item.SubItems.Add("N/A");
}
info.SelectedStreamingFormat = streamingFormat;
item.SubItems.Add(streamingFormat.ToString());
item.Tag = info;
listViewDevices.Items.Add(item);
}
}
@iverbatim
static void DisposeDiscovery(Object context)
{
// dispose Discovery.
var discovery = (Discovery)context;
discovery.Dispose();
}
private void Start()
{
Stop();
_discovery = new Discovery();
_discovery.DeviceFound += _discovery_DeviceFound;
_discovery.DeviceLost += _discovery_DeviceLost;
_discovery.DeviceError += _discovery_DeviceError;
_discovery.Start();
}
private void Stop()
{
if (_discovery == null) return;
_discovery.DeviceFound -= _discovery_DeviceFound;
_discovery.DeviceLost -= _discovery_DeviceLost;
_discovery.DeviceError -= _discovery_DeviceError;
ThreadPool.QueueUserWorkItem(DisposeDiscovery, _discovery);
_discovery = null;
}
private void listViewDevices_MouseDoubleClick(object sender, MouseEventArgs e)
{
var items = listViewDevices.SelectedItems;
if (items.Count == 0)
return;
var lv = items[0];
var device = lv.Tag as CameraDeviceInfo;
if (device == null) return;
// Show a streaming Window.
if (device.SelectedStreamingFormat == ImageFormat.Argb)
{
// var video = new VideoViewer();
// video.Show();
// video.Connect(device);
}
else
{
// var thDlg = new ThermalViewer();
// thDlg.Show();
// thDlg.Connect(device);
}
}
}
@endiverbatim
@ Start
Start trig detected.