Minor code cleanups, remove TemperatureDataLogger host application's Visual Studio...
[pub/lufa.git] / Projects / TemperatureDataLogger / TempLogHostApp / DataLoggerSettings.cs
diff --git a/Projects/TemperatureDataLogger/TempLogHostApp/DataLoggerSettings.cs b/Projects/TemperatureDataLogger/TempLogHostApp/DataLoggerSettings.cs
new file mode 100644 (file)
index 0000000..370dfbd
--- /dev/null
@@ -0,0 +1,172 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.ComponentModel;\r
+using System.Data;\r
+using System.Drawing;\r
+using System.Linq;\r
+using System.Text;\r
+using System.Windows.Forms;\r
+using Hid;\r
+\r
+namespace Project1HostApp\r
+{\r
+    public partial class frmDataloggerSettings : Form\r
+    {\r
+        private const int DEVICE_VID = 0x03EB;\r
+        private const int DEVICE_PID = 0xFAFA;\r
+\r
+        private struct Device_Report_t\r
+        {\r
+            public Byte Day;\r
+            public Byte Month;\r
+            public Byte Year;\r
+\r
+            public Byte Hour;\r
+            public Byte Minute;\r
+            public Byte Second;\r
+\r
+            public Byte LogInterval500MS;\r
+\r
+            public Byte[] ToReport()\r
+            {\r
+                Byte[] Report = new Byte[7];\r
+\r
+                Report[0] = this.Day;\r
+                Report[1] = this.Month;\r
+                Report[2] = this.Year;\r
+                Report[3] = this.Hour;\r
+                Report[4] = this.Minute;\r
+                Report[5] = this.Second;\r
+                Report[6] = this.LogInterval500MS;\r
+\r
+                return Report;\r
+            }\r
+\r
+            public void FromReport(Byte[] Report)\r
+            {\r
+                this.Day = Report[0];\r
+                this.Month = Report[1];\r
+                this.Year = Report[2];\r
+                this.Hour = Report[3];\r
+                this.Minute = Report[4];\r
+                this.Second = Report[5];\r
+                this.LogInterval500MS = Report[6];\r
+            }\r
+        };\r
+\r
+        private IDevice GetDeviceConnection()\r
+        {\r
+            IDevice[] ConnectedDevices = DeviceFactory.Enumerate(DEVICE_VID, DEVICE_PID);\r
+            IDevice ConnectionHandle = null;\r
+\r
+            if (ConnectedDevices.Count() > 0)\r
+                ConnectionHandle = ConnectedDevices[0];\r
+            else\r
+                return null;\r
+\r
+            // Fix report handle under Windows\r
+            if (ConnectionHandle is Hid.Win32.Win32DeviceSet)\r
+            {\r
+                ((Hid.Win32.Win32DeviceSet)ConnectionHandle).AddDevice(0x00,\r
+                    ((Hid.Win32.Win32DeviceSet)ConnectionHandle).UnallocatedDevices[0]);\r
+            }\r
+\r
+            return ConnectionHandle;\r
+        }\r
+\r
+        public frmDataloggerSettings()\r
+        {\r
+            InitializeComponent();\r
+        }\r
+\r
+        private void btnSetValues_Click(object sender, EventArgs e)\r
+        {\r
+            IDevice ConnectionHandle = GetDeviceConnection();\r
+\r
+            if (ConnectionHandle == null)\r
+            {\r
+                MessageBox.Show("Error: Cannot connect to DataLogger device.");\r
+                return;\r
+            }\r
+\r
+            Device_Report_t DeviceReport = new Device_Report_t();\r
+            DeviceReport.Day = (byte)dtpDate.Value.Day;\r
+            DeviceReport.Month = (byte)dtpDate.Value.Month;\r
+            DeviceReport.Year = (byte)((dtpDate.Value.Year < 2000) ? 0 : (dtpDate.Value.Year - 2000));\r
+            DeviceReport.Hour = (byte)dtpTime.Value.Hour;\r
+            DeviceReport.Minute = (byte)dtpTime.Value.Minute;\r
+            DeviceReport.Second = (byte)dtpTime.Value.Second;\r
+            DeviceReport.LogInterval500MS = (byte)(nudLogInterval.Value * 2);\r
+\r
+            try\r
+            {\r
+                ConnectionHandle.Write(0x00, DeviceReport.ToReport());\r
+                MessageBox.Show("Device parameters updated sucessfully.");\r
+            }\r
+            catch (Exception ex)\r
+            {\r
+                MessageBox.Show("Error: " + ex.Message);\r
+            }\r
+        }\r
+\r
+        private void btnGetValues_Click(object sender, EventArgs e)\r
+        {\r
+            IDevice ConnectionHandle = GetDeviceConnection();\r
+\r
+            if (ConnectionHandle == null)\r
+            {\r
+                MessageBox.Show("Error: Cannot connect to DataLogger device.");\r
+                return;\r
+            }\r
+\r
+            Device_Report_t DeviceReport = new Device_Report_t();\r
+\r
+            try\r
+            {\r
+                Byte[] Report = new Byte[7];\r
+\r
+                ConnectionHandle.Read(0x00, Report);\r
+                DeviceReport.FromReport(Report);\r
+\r
+                try\r
+                {\r
+                    dtpDate.Value = new DateTime(\r
+                        (2000 + DeviceReport.Year),\r
+                        DeviceReport.Month,\r
+                        DeviceReport.Day); \r
+                    \r
+                    dtpTime.Value = new DateTime(\r
+                        DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,\r
+                        DeviceReport.Hour,\r
+                        DeviceReport.Minute,\r
+                        DeviceReport.Second);\r
+                }\r
+                catch (Exception ex)\r
+                {\r
+                    dtpDate.Value = DateTime.Now;\r
+                    dtpTime.Value = DateTime.Now;\r
+                }\r
+\r
+                try\r
+                {\r
+                    nudLogInterval.Value = (DeviceReport.LogInterval500MS / 2);\r
+                }\r
+                catch (Exception ex)\r
+                {\r
+                    nudLogInterval.Value = nudLogInterval.Minimum;\r
+                }\r
+\r
+                MessageBox.Show("Device parameters retrieved sucessfully.");\r
+            }\r
+            catch (Exception ex)\r
+            {\r
+                MessageBox.Show("Error: " + ex.Message);\r
+            }\r
+        }\r
+\r
+        private void frmDataloggerSettings_Load(object sender, EventArgs e)\r
+        {\r
+\r
+        }\r
+    }\r
+}\r