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) { } } }