Click on the images to better see this Windows Presentation Foundation dashboard I'm evolving. A special thanks to Trossen Robotics who helped me with the Phidgets used for real time Lumen and Temperature sensors, XAMLTemplates.net for the WPF syles/themes/templates, Teroid Software for the LED display, Microsoft Research for their Dynamic Data Display, and good luck for winning the raffle for the Infragistics WPF Chart Controls.
The dashboard will have one area for calculations an operator may want to have available.
Historical data from light sensor that has been saved in SQL Server table.
Historical light sensor data. The animated plotting of this 3D line can't be seen here in this static image.
Fluctuations of Real Time Graph charting same value from light sensor.
WPF Stackpaneled LED/Real Time Graph charting same value from light sensor.
A c# generic dictionary key/value mapping is being used currently to map System.Time real time ticks to minutes:seconds on the Power Kilowatts LED display. That would need to be switched to a calculated value (voltage * current)with real sensors. I'll be using other Phidget sensors for proof of concept via USB I/O.
The Dispatcher object is being used for this current time implementation to keep the UI responsive.
Underlying the solar panel listview is an ObservableCollection but the application is not yet taking advantage of the SolarPanel class's INotifyPropertyChanged interface.
Here is the (clickable to better see) xaml databinding needed for that Solar Panel listview;
The business layer is in flux. The SolarPanel listview above is now joined by a TreeView ViewModel notion proposed by Josh Smith whose checkbox/toggle capabilities I want for the elements(devices) of various tree branches(device family, eneryg sources).
Since I won a year long Infragistic's subscription at my local .NET User Group, (thanks Pat/Arsen!) I'm using their WPF XamChart controls. The graphs above are showing historical device measurement data stored on a 60 second time interval.
The first real time graph of the sensors that just arrived is shown within the axis of the graph with the white background above. Light sensor results (wild fluctuation between natural sunlight, shade, electric light source)in light blue varying and temperature in purple at the bottom.. Courtesy of an open source dynamic data display library of controls from Microsoft Research . I converted their graph's window into a User Control(it's using the Dispatcher object so that's why they call it a WPF graph. It had regular Winform's textboxes to maintain info which I converted to a Sensor class with Content and 'Visible' properties) and plopped that into my Dashboard's tab control as an embedded control. This is what I already did with the two Infragistic's charts. I had to remember to that by losing the Form_Load part of the winform's process I had to create an Init function and call that explicitly from the constructor. Was I supposed to already know about the ThreadStart delegate?
The UI, the middle layer and the database all need to stay flexible for awhile.