Just to let everyone know that v1.64 of AA+ has been released. Updates for this version include:
- AA+ now includes complete support for the ELP2000-82B theory (http://cdsweb.u-strasbg.fr/cgi-bin/qcat?VI/79/) in addition to the truncated ELP2000 theory as presented in Meeus’s book. This theory is used to calculate the position of the Moon. The full ELP2000-82b theory is implemented by the new AAELP2000.cpp/h files included in the AA+ download. This new class in AA+ to support ELP2000-82b has been machine generated by parsing the ELP2000-82b files with a custom C++ app to generate the new header and source modules. The results have been comprehensively spot checked against the ELP2000-82b test values provided in the ELP2000-82b files. The AA+ implementation is based in part on a C translation of the original Fortran source code included with ELP2000-82b as well as the Libnova open source library. As the ELP2000-82b theory returns the results in the equator and equinox of J2000 / FK5 they cannot be directly integrated into the existing CAAMoon class which returns the values in the equator and equinox of the date. Client code is free to use the CAAPrecession class to precess the coordinates to the required frame reference. Please note that if you want to compile AA+ to not pull in a dependency on the new and quite large ELP2000-82b module, then you can define the preprocessor value "AAPLUS_ELP2000_NO_HIGH_PRECISION" in your project. With this addition AA+ is now 23.6 Megabytes and 330 thousand lines of C++ source code.
- Updated the observed DeltaT values from http://maia.usno.navy.mil/ser7/deltat.data to 1st October 2015
- Verified the predicted DeltaT values from http://maia.usno.navy.mil/ser7/deltat.preds are up to date
Just to let everyone know that v1.0 of HIDWrappers & CTemperDevice has been released.
HIDWrappers provides a C++ class to provide a complete C++ encapsulation of the HID API on Windows while CTemperDevice which is a specialization of the HID class provides a C++ encapsulation of the Temper USB thermometer using the Windows HID APIs.
Included in the download is the HIDWrappers and CTemperDevice source code and a simple VC 2013 console application which exercises all of the various functionality. If the sample app detects that you have an Temper HID device attached to your computer (with a VID of 0xC45 and PID of 0x7401) then it will initialize the device and spin in a loop reading the temperature from the device every second. For more information about using this device from Windows, please see http://www.codeproject.com/Tips/1007522/Temper-USB-Thermometer-in-Csharp on which the CTemperDevice code is partly based. Please note that some of the information in this CodeProject article is incorrect as it mislabels what it calls the "Control" interface. This interface is in fact the "Interface 0" keyboard emulation interface exposed by the Temper devices. Windows versions since Windows 2000 denies user mode code low level access to any Keyboard or Mouse USB interface and the C# code from this article will fail to open this interface with an Access Denied Error message. The temperature related functionality of the device is on "Interface 1" anyway. For examples of interfacing to the Temper device please see the source code of the demo application in the HIDWrappersDemo.cpp module in the download. Please note that there are many variants of the Temper device being sold. As it stands the CTemperDevice code has been tested with a device which returns a VID of 0xC45, a PID of 0x7401 and with the initialization strings as defined at the top of the HIDWrappersDemo.cpp module. Also the version of the device I tested the code with returns the raw temperature value in the sixth and seventh byte of the returned HID report of nine bytes in total. The sample app will report the raw data sent and received from the device so it should not be too difficult to change the code to suit other devices. If you are interested in this you might want to check out USBPcap and WireShark to capture USB traces to see how I reverse engineered the data my device generates. If you have other variants of the Temper device please try the sample app with it and drop me an email and we should be able to get the code working with your variant of the device.
Just to let everyone know that v1.02 of CRelativePaths has been re-released. Updates for this version include:
- Verified the code compiles cleanly on VC 2015.
Just to let everyone know that v1.11 of CNamedPipe has been re-released. Updates for this version include:
- Verified there were no further additions to the Named Pipe API from the Windows 10 SDK.
- Verified the code compiles cleanly on VC 2015.
Just to let everyone know that v1.15 of CPdh has been released. Updates for this version include:
- Verified there has been no further additions to PDH from the Windows 10 SDK
- Updated the code to clean compile on VC 2015
Just to let everyone know that v1.28 of CEnumerateSerial has been released. Updates for this version include:
- Updated copyright details.
- Updated the code to compile cleanly on VC 2015.
- Reworked CEnumerateSerial::UsingComDB method to statically link to msports.dll.
- Reworked CEnumerateSerial::UsingSetupAPI1 method to statically link to setupapi.dll.
- Reworked CEnumerateSerial::UsingSetupAPI2 method to statically linke to setupapi.dll.
- Removed now unnecessary CEnumerateSerial::LoadLibraryFromSystem32 method.
- Added SAL annotations to all the code.
- Removed call to VerifyVersionInfo from CEnumerateSerial::UsingQueryDosDevice.
- CEnumerateSerial::UsingCreateFile now use ATL::CHandle instead of CAutoHandle.
- CEnumerateSerial::UsingQueryDosDevice now uses ATL::CHeapPtr instead of CAutoHeapAlloc.
- CEnumerateSerial::UsingSetupAPI2 now uses ATL::CHeapPtr instead of CAutoHeapAlloc.
- CEnumerateSerial::UsingEnumPorts now uses ATL::CHeapPtr instead of CAutoHeapAlloc.
- CEnumerateSerial::UsingWMI now uses ATL::CW2A instead of CAutoHeapAlloc.
- CEnumerateSerial::UsingComDB now uses ATL::CHeapPtr instead of CAutoHeapAlloc.
- CEnumerateSerial::UsingWMI now uses ATL::CComPtr & ATL::CComVariant.
- Removed AutoHandle.h, AutoHeapAlloc.h & AutoHModule.h from distribution as these modules are no longer required by enumser.
- CEnumerateSerial::UsingSetupAPI1 now uses ATL::CRegKey.
- CEnumerateSerial::UsingSetupAPI2 now uses ATL::CRegKey.
- CEnumerateSerial::UsingRegistry now uses ATL::CRegKey.
- CEnumerateSerial::RegQueryValueString now uses ATL::CRegKey.
- The return value from CEnumerateSerial::UsingWMI is now a HRESULT instead of a BOOL.
- CEnumerateSerial::UsingEnumPorts now returns the friendly name of the port.
- Fixed an issue calling EnumPorts the first time in CEnumerateSerial::UsingEnumPorts.
- Simplified the declaration of parameters to the various methods of the class.
- CEnumerateSerial::UsingSetupAPI1 and CEnumerateSerial::UsingSetupAPI2 have been refactored to use a new internal method called "QueryUsingSetupAPI".
- CEnumerateSerial::UsingSetupAPI2 now uses GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR define.
- Renamed all the NO_ENUMSERIAL_* defines to NO_CENUMERATESERIAL_*.
Just to let everyone know that v1.02 of PyDebug++ has been released. Updates for this version include:
- Refactored the setup of the various docking windows into separate virtual methods to allow for easier customization in client applications.
- File->New and File->Open menu functionality is now implemented with PyDebug++ specific menu ids. This allows for easier integration in client applications.
- Refactored the functionality of the "DebugThread" method into smaller new virtual methods of "SetupArgvEx", "SetupRedirectIO" & "SetupCodeObject".
- Introduced a new "m_bSupportPySys_SetArgvEx" boolean member variable which decides if PySys_SetArgvEx is called just prior to running/debugging the Python code.
- Sample app now ships with Python v3.5.1 binaries