diff options
Diffstat (limited to 'lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs')
| -rw-r--r-- | lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs | 179 | 
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) +        { + +        } +    } +} | 
