--- /dev/null
+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