diff --git a/Thermo.Cam.Setup/DiscoveryForm.Designer.cs b/Thermo.Cam.Setup/DiscoveryForm.Designer.cs index 61e6d359..58e2e737 100644 --- a/Thermo.Cam.Setup/DiscoveryForm.Designer.cs +++ b/Thermo.Cam.Setup/DiscoveryForm.Designer.cs @@ -1,4 +1,4 @@ -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { partial class DiscoveryForm { diff --git a/Thermo.Cam.Setup/DiscoveryForm.cs b/Thermo.Cam.Setup/DiscoveryForm.cs index b33717f8..7e4d9f39 100644 --- a/Thermo.Cam.Setup/DiscoveryForm.cs +++ b/Thermo.Cam.Setup/DiscoveryForm.cs @@ -4,7 +4,7 @@ using System.Windows.Forms; using Flir.Atlas.Live.Device; using Flir.Atlas.Live.Discovery; -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { public partial class DiscoveryForm : Form { diff --git a/Thermo.Cam.Setup/MainForm.Designer.cs b/Thermo.Cam.Setup/MainForm.Designer.cs index 1a3ac970..c99caf01 100644 --- a/Thermo.Cam.Setup/MainForm.Designer.cs +++ b/Thermo.Cam.Setup/MainForm.Designer.cs @@ -1,4 +1,4 @@ -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { partial class MainForm { diff --git a/Thermo.Cam.Setup/MainForm.cs b/Thermo.Cam.Setup/MainForm.cs index 661148d9..4137ef76 100644 --- a/Thermo.Cam.Setup/MainForm.cs +++ b/Thermo.Cam.Setup/MainForm.cs @@ -12,7 +12,7 @@ using Flir.Atlas.Live.Discovery; using Newtonsoft.Json; using ThermoCamUtils; -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { public partial class MainForm : Form { diff --git a/Thermo.Cam.Setup/PlaybackForm.Designer.cs b/Thermo.Cam.Setup/PlaybackForm.Designer.cs index 37f9c867..4c5c7263 100644 --- a/Thermo.Cam.Setup/PlaybackForm.Designer.cs +++ b/Thermo.Cam.Setup/PlaybackForm.Designer.cs @@ -1,4 +1,4 @@ -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { partial class PlaybackForm { diff --git a/Thermo.Cam.Setup/PlaybackForm.cs b/Thermo.Cam.Setup/PlaybackForm.cs index 8a9a1836..44fc033a 100644 --- a/Thermo.Cam.Setup/PlaybackForm.cs +++ b/Thermo.Cam.Setup/PlaybackForm.cs @@ -8,36 +8,44 @@ using System.Text; using System.Windows.Forms; using Flir.Atlas.Image; -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { // Simple playback of a SEQ (radiometric data) file. // Also see IRImageReaderDemo on how to open Thermal image files. public partial class PlaybackForm : Form { + #region Private Fields + + private readonly Timer _timer = new Timer(); private ThermalImageFile _imageFile; - private string Path { get; set; } - private bool IsDirty { get; set; } - readonly Timer _timer = new Timer(); + + #endregion Private Fields + + #region Public Constructors + public PlaybackForm(string path) { Path = path; InitializeComponent(); } - private void PlaybackForm_Load(object sender, EventArgs e) + #endregion Public Constructors + + #region Private Properties + + private bool IsDirty { get; set; } + private string Path { get; set; } + + #endregion Private Properties + + #region Private Methods + + private void _imageFile_Changed(object sender, ImageChangedEventArgs e) { - _imageFile = new ThermalImageFile(Path); - _imageFile.Changed += _imageFile_Changed; - pictureBox1.Image = _imageFile.Image; - if (_imageFile.ThermalSequencePlayer.Count() > 1) - { - _timer.Interval = 20; - _timer.Tick += _timer_Tick; - _timer.Start(); - } + IsDirty = true; } - void _timer_Tick(object sender, EventArgs e) + private void _timer_Tick(object sender, EventArgs e) { if (!IsDirty) return; IsDirty = false; @@ -57,9 +65,9 @@ namespace ThermalImageStreamerDemo } } - void _imageFile_Changed(object sender, ImageChangedEventArgs e) + private void buttonPause_Click(object sender, EventArgs e) { - IsDirty = true; + _imageFile.ThermalSequencePlayer.Pause(); } private void buttonPlay_Click(object sender, EventArgs e) @@ -72,14 +80,24 @@ namespace ThermalImageStreamerDemo _imageFile.ThermalSequencePlayer.Stop(); } - private void buttonPause_Click(object sender, EventArgs e) - { - _imageFile.ThermalSequencePlayer.Pause(); - } - private void PlaybackForm_FormClosing(object sender, FormClosingEventArgs e) { _timer.Stop(); } + + private void PlaybackForm_Load(object sender, EventArgs e) + { + _imageFile = new ThermalImageFile(Path); + _imageFile.Changed += _imageFile_Changed; + pictureBox1.Image = _imageFile.Image; + if (_imageFile.ThermalSequencePlayer.Count() > 1) + { + _timer.Interval = 20; + _timer.Tick += _timer_Tick; + _timer.Start(); + } + } + + #endregion Private Methods } -} +} \ No newline at end of file diff --git a/Thermo.Cam.Setup/Program.cs b/Thermo.Cam.Setup/Program.cs index 068069cf..92f1f686 100644 --- a/Thermo.Cam.Setup/Program.cs +++ b/Thermo.Cam.Setup/Program.cs @@ -3,19 +3,23 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { - static class Program + internal static class Program { + #region Private Methods + /// /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } + + #endregion Private Methods } -} +} \ No newline at end of file diff --git a/Thermo.Cam.Setup/Properties/Resources.Designer.cs b/Thermo.Cam.Setup/Properties/Resources.Designer.cs index 8d3bf132..ff4aa994 100644 --- a/Thermo.Cam.Setup/Properties/Resources.Designer.cs +++ b/Thermo.Cam.Setup/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace ThermalImageStreamerDemo.Properties { +namespace Thermo.Cam.Setup.Properties { using System; @@ -39,7 +39,7 @@ namespace ThermalImageStreamerDemo.Properties { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ThermalImageStreamerDemo.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Thermo.Cam.Setup.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/Thermo.Cam.Setup/Properties/Settings.Designer.cs b/Thermo.Cam.Setup/Properties/Settings.Designer.cs index d6eeb57a..c358e31c 100644 --- a/Thermo.Cam.Setup/Properties/Settings.Designer.cs +++ b/Thermo.Cam.Setup/Properties/Settings.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace ThermalImageStreamerDemo.Properties { +namespace Thermo.Cam.Setup.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] diff --git a/Thermo.Cam.Setup/RecorderForm.Designer.cs b/Thermo.Cam.Setup/RecorderForm.Designer.cs index 10cf4cac..97615a10 100644 --- a/Thermo.Cam.Setup/RecorderForm.Designer.cs +++ b/Thermo.Cam.Setup/RecorderForm.Designer.cs @@ -1,4 +1,4 @@ -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { partial class RecorderForm { diff --git a/Thermo.Cam.Setup/RecorderForm.cs b/Thermo.Cam.Setup/RecorderForm.cs index 19a997bb..b2fbf671 100644 --- a/Thermo.Cam.Setup/RecorderForm.cs +++ b/Thermo.Cam.Setup/RecorderForm.cs @@ -13,108 +13,88 @@ using Flir.Atlas.Live; using Flir.Atlas.Live.Device; using Flir.Atlas.Live.Recorder; -namespace ThermalImageStreamerDemo +namespace Thermo.Cam.Setup { public partial class RecorderForm : Form { - private Camera _stream; + #region Private Fields + private readonly Stopwatch _elapedTimeRecording = new Stopwatch(); private readonly Timer _timer = new Timer(); + private int _nextIndex = 1; + private Camera _stream; + + #endregion Private Fields + + #region Public Constructors + public RecorderForm() { InitializeComponent(); } - /// - /// Un-initialize the recorder component. - /// - public void UnInitialize() - { - _timer.Stop(); - if (_stream != null) - _stream.ConnectionStatusChanged -= _stream_ConnectionStatusChanged; - _stream = null; - } + #endregion Public Constructors - bool IsInitalizing { get; set; } + #region Public Events /// - /// + /// Event fired when the selected file is double clicked. /// - /// - public void Initialize(Camera camera) - { - if (camera == null) - { - throw new InvalidOperationException("camera is null"); - } - _stream = camera; - _stream.ConnectionStatusChanged += _stream_ConnectionStatusChanged; - labelOutputPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"\FLIR\"; + public event EventHandler SelectedFileMouseDoubleClick; - _timer.Interval = 110; - _timer.Tick += _timer_Tick; - _timer.Start(); - UpdateStatus(); - } + #endregion Public Events - void _stream_ConnectionStatusChanged(object sender, ConnectionStatusChangedEventArgs e) + #region Private Properties + + private bool IsInitalizing { get; set; } + + #endregion Private Properties + + #region Private Methods + + private void _stream_ConnectionStatusChanged(object sender, ConnectionStatusChangedEventArgs e) { BeginInvoke((Action)UpdateStatus); } - void UpdateStatus() - { - IsInitalizing = true; - if (_stream != null && _stream.ConnectionStatus == ConnectionStatus.Connected) - { - if (_stream.Recorder.IsTimeSpanEnabled) - { - radioButtonRecSpeedInterval.Checked = true; - textBoxTimeSpan.Enabled = true; - } - else - { - radioButtonRecSpeed.Checked = true; - textBoxTimeSpan.Enabled = false; - } - if (_stream.Recorder is ThermalImageRecorder) - { - groupBoxPreRecording.Enabled = true; - checkBoxPreRecording.Checked = (_stream.Recorder as ThermalImageRecorder).IsPreRecordingEnabled; - textBoxNumFramesPreRec.Text = - (_stream.Recorder as ThermalImageRecorder).NumberOfFramesToPreRecord.ToString( - CultureInfo.InvariantCulture); - } - groupBoxRecSpeed.Enabled = true; - buttonPause.Enabled = true; - buttonRec.Enabled = true; - textBoxTimeSpan.Text = _stream.Recorder.TimeSpan.TotalSeconds.ToString(CultureInfo.InvariantCulture); - } - else - { - groupBoxPreRecording.Enabled = false; - groupBoxRecSpeed.Enabled = false; - buttonPause.Enabled = false; - buttonRec.Enabled = false; - } - IsInitalizing = false; - } - - void _timer_Tick(object sender, EventArgs e) + private void _timer_Tick(object sender, EventArgs e) { RefreshData(); } - void RefreshData() + private void btnTakeImage_Click(object sender, EventArgs e) { - if (_stream.Recorder == null) return; - - labelStatus.Text = _stream.Recorder.Status.ToString(); - labelFrameCounter.Text = _stream.Recorder.FrameCount.ToString(CultureInfo.InvariantCulture); - labelLostImages.Text = _stream.Recorder.LostImages.ToString(CultureInfo.InvariantCulture); - labelElapsedTime.Text = _elapedTimeRecording.Elapsed.ToString(); + ThermalImage myImg = (ThermalImage)_stream.GetImage(); + myImg.TemperatureUnit = TemperatureUnit.Celsius; + string currPath = $"{labelOutputPath.Text}\\{DateTime.Now:yyyyMMyy_HHmmss}.jpg"; + myImg.SaveSnapshot(currPath); } + + private void buttonBrowse_Click(object sender, EventArgs e) + { + var dialog = new FolderBrowserDialog(); + if (dialog.ShowDialog() == DialogResult.OK) + { + labelOutputPath.Text = dialog.SelectedPath; + } + } + + private void buttonPause_Click(object sender, EventArgs e) + { + switch (_stream.Recorder.Status) + { + case RecorderState.Paused: + _stream.Recorder.Continue(); + buttonPause.Text = "Pause"; + break; + + case RecorderState.Recording: + _stream.Recorder.Pause(); + buttonPause.Text = "Continue"; + break; + } + } + private void buttonRec_Click(object sender, EventArgs e) { if (_stream.Recorder.Status == RecorderState.Stopped || _stream.Recorder.Status == RecorderState.PreRecording) @@ -153,48 +133,6 @@ namespace ThermalImageStreamerDemo } } - private string GetNextFileName() - { - string fileName; - do - { - fileName = CreateFileName(); - } while (System.IO.File.Exists(fileName)); - return fileName; - } - - private int _nextIndex = 1; - private string CreateFileName() - { - var fileName = labelOutputPath.Text; - fileName += string.Format("{0:0000}", _nextIndex++); - return fileName + _stream.Recorder.Extension; - } - - private void buttonPause_Click(object sender, EventArgs e) - { - switch (_stream.Recorder.Status) - { - case RecorderState.Paused: - _stream.Recorder.Continue(); - buttonPause.Text = "Pause"; - break; - case RecorderState.Recording: - _stream.Recorder.Pause(); - buttonPause.Text = "Continue"; - break; - } - } - - private void buttonBrowse_Click(object sender, EventArgs e) - { - var dialog = new FolderBrowserDialog(); - if (dialog.ShowDialog() == DialogResult.OK) - { - labelOutputPath.Text = dialog.SelectedPath; - } - } - private void checkBoxPreRecording_CheckStateChanged(object sender, EventArgs e) { if (!(_stream.Recorder is ThermalImageRecorder)) return; @@ -216,10 +154,23 @@ namespace ThermalImageStreamerDemo } } - /// - /// Event fired when the selected file is double clicked. - /// - public event EventHandler SelectedFileMouseDoubleClick; + private string CreateFileName() + { + var fileName = labelOutputPath.Text; + fileName += string.Format("{0:0000}", _nextIndex++); + return fileName + _stream.Recorder.Extension; + } + + private string GetNextFileName() + { + string fileName; + do + { + fileName = CreateFileName(); + } while (System.IO.File.Exists(fileName)); + return fileName; + } + private void listViewRecordings_MouseDoubleClick(object sender, MouseEventArgs e) { var items = listViewRecordings.SelectedItems; @@ -231,7 +182,7 @@ namespace ThermalImageStreamerDemo } } - void OnMouseDoubleClick(SelectedFileEventArgs args) + private void OnMouseDoubleClick(SelectedFileEventArgs args) { if (SelectedFileMouseDoubleClick != null) { @@ -261,16 +212,92 @@ namespace ThermalImageStreamerDemo private void RecorderForm_Load(object sender, EventArgs e) { - } - private void btnTakeImage_Click(object sender, EventArgs e) + private void RefreshData() { - ThermalImage myImg = (ThermalImage)_stream.GetImage(); - myImg.TemperatureUnit = TemperatureUnit.Celsius; - string currPath = $"{labelOutputPath.Text}\\{DateTime.Now:yyyyMMyy_HHmmss}.jpg"; - myImg.SaveSnapshot(currPath); + if (_stream.Recorder == null) return; + + labelStatus.Text = _stream.Recorder.Status.ToString(); + labelFrameCounter.Text = _stream.Recorder.FrameCount.ToString(CultureInfo.InvariantCulture); + labelLostImages.Text = _stream.Recorder.LostImages.ToString(CultureInfo.InvariantCulture); + labelElapsedTime.Text = _elapedTimeRecording.Elapsed.ToString(); } + + private void UpdateStatus() + { + IsInitalizing = true; + if (_stream != null && _stream.ConnectionStatus == ConnectionStatus.Connected) + { + if (_stream.Recorder.IsTimeSpanEnabled) + { + radioButtonRecSpeedInterval.Checked = true; + textBoxTimeSpan.Enabled = true; + } + else + { + radioButtonRecSpeed.Checked = true; + textBoxTimeSpan.Enabled = false; + } + if (_stream.Recorder is ThermalImageRecorder) + { + groupBoxPreRecording.Enabled = true; + checkBoxPreRecording.Checked = (_stream.Recorder as ThermalImageRecorder).IsPreRecordingEnabled; + textBoxNumFramesPreRec.Text = + (_stream.Recorder as ThermalImageRecorder).NumberOfFramesToPreRecord.ToString( + CultureInfo.InvariantCulture); + } + groupBoxRecSpeed.Enabled = true; + buttonPause.Enabled = true; + buttonRec.Enabled = true; + textBoxTimeSpan.Text = _stream.Recorder.TimeSpan.TotalSeconds.ToString(CultureInfo.InvariantCulture); + } + else + { + groupBoxPreRecording.Enabled = false; + groupBoxRecSpeed.Enabled = false; + buttonPause.Enabled = false; + buttonRec.Enabled = false; + } + IsInitalizing = false; + } + + #endregion Private Methods + + #region Public Methods + + /// + /// + /// + /// + public void Initialize(Camera camera) + { + if (camera == null) + { + throw new InvalidOperationException("camera is null"); + } + _stream = camera; + _stream.ConnectionStatusChanged += _stream_ConnectionStatusChanged; + labelOutputPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"\FLIR\"; + + _timer.Interval = 110; + _timer.Tick += _timer_Tick; + _timer.Start(); + UpdateStatus(); + } + + /// + /// Un-initialize the recorder component. + /// + public void UnInitialize() + { + _timer.Stop(); + if (_stream != null) + _stream.ConnectionStatusChanged -= _stream_ConnectionStatusChanged; + _stream = null; + } + + #endregion Public Methods } /// @@ -278,13 +305,22 @@ namespace ThermalImageStreamerDemo /// public class SelectedFileEventArgs : EventArgs { + #region Internal Constructors + internal SelectedFileEventArgs(string path) { FilePath = path; } + + #endregion Internal Constructors + + #region Public Properties + /// /// The full path to the file. /// public string FilePath { get; private set; } + + #endregion Public Properties } -} +} \ No newline at end of file diff --git a/Thermo.Cam.Setup/Thermo.Cam.Setup.csproj b/Thermo.Cam.Setup/Thermo.Cam.Setup.csproj index 670919c9..ea2ef10d 100644 --- a/Thermo.Cam.Setup/Thermo.Cam.Setup.csproj +++ b/Thermo.Cam.Setup/Thermo.Cam.Setup.csproj @@ -7,8 +7,8 @@ {009978D9-A2D0-4354-A4C1-E181D7F34919} WinExe Properties - ThermalImageStreamerDemo - ThermalImageStreamerDemo + Thermo.Cam.Setup + Thermo.Cam.Setup v4.6.2 512 SAK