mirror of
https://github.com/openstenoproject/qmk
synced 2024-11-14 12:34:39 +00:00
179 lines
5.5 KiB
C#
179 lines
5.5 KiB
C#
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)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|