summary refs log tree commit diff
path: root/lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
committerJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
commit8655d4f4948b2deef7844503c8d690f23ac1a062 (patch)
treeb2c6effc9d6cd5b5b43933a1e53b8bf17e9e82cf /lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs
parent1896c76a2928c96f9ab7947bec2ef8dd37623cff (diff)
parent60b30c036397cb5627fa374bb930794b225daa29 (diff)
Merge commit '60b30c036397cb5627fa374bb930794b225daa29' as 'lib/lufa'
Diffstat (limited to 'lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs')
-rw-r--r--lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs179
1 files changed, 179 insertions, 0 deletions
diff --git a/lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs b/lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs
new file mode 100644
index 0000000000..c3d1e15645
--- /dev/null
+++ b/lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs
@@ -0,0 +1,179 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using Hid;
+
+namespace Project1HostApp
+{
+    public partial class frmDataloggerSettings : Form
+    {
+        private const int DEVICE_VID = 0x03EB;
+        private const int DEVICE_PID = 0x2063;
+
+        private struct Device_Report_t
+        {
+            public Byte Day;
+            public Byte Month;
+            public Byte Year;
+
+            public Byte Hour;
+            public Byte Minute;
+            public Byte Second;
+
+            public Byte LogInterval500MS;
+
+            public Byte[] ToReport()
+            {
+                Byte[] Report = new Byte[7];
+
+                Report[0] = this.Hour;
+                Report[1] = this.Minute;
+                Report[2] = this.Second;
+                Report[3] = this.Day;
+                Report[4] = this.Month;
+                Report[5] = this.Year;
+                Report[6] = this.LogInterval500MS;
+
+                return Report;
+            }
+
+            public void FromReport(Byte[] Report)
+            {
+                this.Hour = Report[0];
+                this.Minute = Report[1];
+                this.Second = Report[2];
+                this.Day = Report[3];
+                this.Month = Report[4];
+                this.Year = Report[5];
+                this.LogInterval500MS = Report[6];
+            }
+        };
+
+        private IDevice GetDeviceConnection()
+        {
+            IDevice[] ConnectedDevices = DeviceFactory.Enumerate(DEVICE_VID, DEVICE_PID);
+            IDevice ConnectionHandle = null;
+
+            if (ConnectedDevices.Count() > 0)
+                ConnectionHandle = ConnectedDevices[0];
+            else
+                return null;
+
+            // Fix report handle under Windows
+            if (ConnectionHandle is Hid.Win32.Win32DeviceSet)
+            {
+                ((Hid.Win32.Win32DeviceSet)ConnectionHandle).AddDevice(0x00,
+                    ((Hid.Win32.Win32DeviceSet)ConnectionHandle).UnallocatedDevices[0]);
+            }
+
+            return ConnectionHandle;
+        }
+
+        public frmDataloggerSettings()
+        {
+            InitializeComponent();
+        }
+
+        private void btnSetValues_Click(object sender, EventArgs e)
+        {
+            IDevice ConnectionHandle = GetDeviceConnection();
+
+            if (ConnectionHandle == null)
+            {
+                MessageBox.Show("Error: Cannot connect to Datalogger device.");
+                return;
+            }
+
+            Device_Report_t DeviceReport = new Device_Report_t();
+            DeviceReport.Day = (byte)dtpDate.Value.Day;
+            DeviceReport.Month = (byte)dtpDate.Value.Month;
+            DeviceReport.Year = (byte)((dtpDate.Value.Year < 2000) ? 0 : (dtpDate.Value.Year - 2000));
+            DeviceReport.Hour = (byte)dtpTime.Value.Hour;
+            DeviceReport.Minute = (byte)dtpTime.Value.Minute;
+            DeviceReport.Second = (byte)dtpTime.Value.Second;
+            DeviceReport.LogInterval500MS = (byte)(nudLogInterval.Value * 2);
+
+            try
+            {
+                ConnectionHandle.Write(0x00, DeviceReport.ToReport());
+                MessageBox.Show("Device parameters updated successfully.");
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show("Error: " + ex.Message);
+            }
+        }
+
+        private void btnGetValues_Click(object sender, EventArgs e)
+        {
+            IDevice ConnectionHandle = GetDeviceConnection();
+
+            if (ConnectionHandle == null)
+            {
+                MessageBox.Show("Error: Cannot connect to Datalogger device.");
+                return;
+            }
+
+            Device_Report_t DeviceReport = new Device_Report_t();
+
+            try
+            {
+                Byte[] Report = new Byte[7];
+
+                ConnectionHandle.Read(0x00, Report);
+                DeviceReport.FromReport(Report);
+                String msgText = "Device parameters retrieved successfully.";
+
+                try
+                {
+                    dtpDate.Value = new DateTime(
+                        (2000 + DeviceReport.Year),
+                        DeviceReport.Month,
+                        DeviceReport.Day);
+
+                    dtpTime.Value = new DateTime(
+                        DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
+                        DeviceReport.Hour,
+                        DeviceReport.Minute,
+                        DeviceReport.Second);
+                }
+                catch (Exception ex)
+                {
+                    msgText = "Problem reading device:\n" +
+                        ex.Message +
+                        "\nY:" + DeviceReport.Year.ToString() +
+                        " M:" + DeviceReport.Month.ToString() +
+                        " D:" + DeviceReport.Day.ToString() +
+                        "\n\nUsing current date and time.";
+                    dtpDate.Value = DateTime.Now;
+                    dtpTime.Value = DateTime.Now;
+                }
+
+                try
+                {
+                    nudLogInterval.Value = (DeviceReport.LogInterval500MS / 2);
+                }
+                catch (Exception ex)
+                {
+                    nudLogInterval.Value = nudLogInterval.Minimum;
+                }
+
+                MessageBox.Show(msgText);
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show("Error: " + ex.Message);
+            }
+        }
+
+        private void frmDataloggerSettings_Load(object sender, EventArgs e)
+        {
+
+        }
+    }
+}