Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| df3887c385 | |||
| 53150f9400 | |||
| ac887ccdff | |||
| 0e98f0e370 | |||
| 9cf63c4912 | |||
| d6f72c8222 | |||
| c1cae2b0c4 | |||
| 2ce8c4e123 | |||
| dfef48ff0c | |||
| 4b65c946d2 | |||
| 3579189465 | |||
| 8b31c8d7a9 | |||
| 04845cea7a | |||
| aeaaf9df95 | |||
| 1d5dcb529e | |||
| fdeee5b822 | |||
| a53f99810d | |||
| 325e9908a7 | |||
| 83865a3911 | |||
| b3b1d95cda | |||
| bfb8f257a1 | |||
| 3109d1dcef | |||
| 0ac7b8b7bd | |||
| ee60613a95 | |||
| a6308f1a64 |
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using ASCOM.Meade.net;
|
||||
using ASCOM.Meade.net.AstroMaths;
|
||||
using NUnit.Framework;
|
||||
|
||||
@@ -53,16 +52,16 @@ namespace AstroMath.UnitTests
|
||||
public void UTtoGST_book()
|
||||
{
|
||||
DateTime dateTime = new DateTime(1980, 04, 22, 14, 36, 51, 670, DateTimeKind.Utc);
|
||||
double gst = _astroMath.UTtoGST(dateTime);
|
||||
double gst = _astroMath.UTtoGst(dateTime);
|
||||
|
||||
Assert.That(gst, Is.EqualTo(4.667932706211154));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UTtoGST()
|
||||
public void UTtoGst()
|
||||
{
|
||||
DateTime dateTime = new DateTime(2019, 05, 18, 22, 26, 15, DateTimeKind.Utc);
|
||||
double gst = _astroMath.UTtoGST(dateTime);
|
||||
double gst = _astroMath.UTtoGst(dateTime);
|
||||
|
||||
Assert.That(gst, Is.EqualTo(14.191879687876451));
|
||||
}
|
||||
@@ -72,16 +71,16 @@ namespace AstroMath.UnitTests
|
||||
{
|
||||
double gst = 4.668119;
|
||||
var longitude = -64;
|
||||
var lst = _astroMath.GSTtoLST(gst, longitude);
|
||||
var lst = _astroMath.GsTtoLst(gst, longitude);
|
||||
Assert.That(lst, Is.EqualTo(0.4014523333333333));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GSTtoLST()
|
||||
public void GsTtoLst()
|
||||
{
|
||||
double gst = 14.257589512545053;
|
||||
var longitude = -1.7833333333333332;
|
||||
var lst = _astroMath.GSTtoLST(gst, longitude);
|
||||
var lst = _astroMath.GsTtoLst(gst, longitude);
|
||||
Assert.That(lst, Is.EqualTo(14.138700623656163));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -32,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
@@ -9,13 +9,10 @@
|
||||
#define UseChooser
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using ASCOM.DriverAccess;
|
||||
|
||||
namespace ASCOM
|
||||
namespace ASCOM.MeadeGeneric
|
||||
{
|
||||
class Program
|
||||
{
|
||||
@@ -24,11 +21,11 @@ namespace ASCOM
|
||||
// Uncomment the code that's required
|
||||
#if UseChooser
|
||||
// choose the device
|
||||
string id = ASCOM.DriverAccess.Focuser.Choose("ASCOM.MeadeGeneric.Focuser");
|
||||
string id = Focuser.Choose("ASCOM.MeadeGeneric.Focuser");
|
||||
if (string.IsNullOrEmpty(id))
|
||||
return;
|
||||
// create this device
|
||||
ASCOM.DriverAccess.Focuser device = new ASCOM.DriverAccess.Focuser(id);
|
||||
Focuser device = new Focuser(id);
|
||||
#else
|
||||
// this can be replaced by this code, it avoids the chooser and creates the driver class directly.
|
||||
ASCOM.DriverAccess.Telescope device = new ASCOM.DriverAccess.Telescope("ASCOM.MeadeGeneric.Telescope");
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -32,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -32,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,6 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
public DateTime UtcDateTime { get; set; }
|
||||
public double SiteLatitude { get; set; }
|
||||
public double SiteLongitude { get; set; }
|
||||
public EquatorialCoordinates equatorialCoordinates { get; set; }
|
||||
public EquatorialCoordinates EquatorialCoordinates { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
public double RightAscensionToHourAngle(DateTime utcDateTime, double longitude, double rightAscension)
|
||||
{
|
||||
var ut = DateTimeToDecimalHours( utcDateTime);
|
||||
var gst = UTtoGST( utcDateTime);
|
||||
var lst = GSTtoLST( gst, longitude);
|
||||
var gst = UTtoGst( utcDateTime);
|
||||
var lst = GsTtoLst( gst, longitude);
|
||||
var raHours = rightAscension;
|
||||
var h1 = lst - raHours;
|
||||
var h = h1;
|
||||
@@ -24,8 +24,8 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
|
||||
public double HourAngleToRightAscension(DateTime utcDateTime, double longitude, double hourAngle )
|
||||
{
|
||||
var gst = UTtoGST(utcDateTime);
|
||||
var lst = GSTtoLST( gst, longitude);
|
||||
var gst = UTtoGst(utcDateTime);
|
||||
var lst = GsTtoLst( gst, longitude);
|
||||
var raHours = hourAngle;
|
||||
var h1 = lst - raHours;
|
||||
var h = h1;
|
||||
@@ -129,7 +129,7 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
}
|
||||
|
||||
//todo convert to extension method
|
||||
public double UTtoGST(DateTime utcDateTime)
|
||||
public double UTtoGst(DateTime utcDateTime)
|
||||
{
|
||||
Util util = new Util();
|
||||
|
||||
@@ -171,7 +171,7 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
return t1;
|
||||
}
|
||||
|
||||
public double GSTtoLST(double gst, double longitude)
|
||||
public double GsTtoLst(double gst, double longitude)
|
||||
{
|
||||
var l = longitude/ 15;
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace ASCOM.Meade.net.AstroMaths
|
||||
double DegreesToRadians(double degrees);
|
||||
double RadiansToDegrees(double radians);
|
||||
double DateTimeToDecimalHours( DateTime utcDateTime);
|
||||
double UTtoGST(DateTime utcDateTime);
|
||||
double GSTtoLST(double gst, double longitude);
|
||||
double UTtoGst(DateTime utcDateTime);
|
||||
double GsTtoLst(double gst, double longitude);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -35,5 +34,5 @@ using System.Runtime.InteropServices;
|
||||
// by using the '*' as shown below:
|
||||
//
|
||||
// TODO - Set your driver's version here
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using ASCOM.DeviceInterface;
|
||||
using System.Collections;
|
||||
using System.Threading;
|
||||
@@ -21,10 +17,10 @@ namespace ASCOM.Meade.net
|
||||
[Guid("288838d1-bbf9-4ce0-9ee1-86ecf38b45c9")]
|
||||
[ClassInterface(ClassInterfaceType.None)]
|
||||
[ComVisible(true)]
|
||||
public class Rate : ASCOM.DeviceInterface.IRate
|
||||
public class Rate : IRate
|
||||
{
|
||||
private double maximum = 0;
|
||||
private double minimum = 0;
|
||||
private double _maximum = 0;
|
||||
private double _minimum = 0;
|
||||
|
||||
//
|
||||
// Default constructor - Internal prevents public creation
|
||||
@@ -32,8 +28,8 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
internal Rate(double minimum, double maximum)
|
||||
{
|
||||
this.maximum = maximum;
|
||||
this.minimum = minimum;
|
||||
_maximum = maximum;
|
||||
_minimum = minimum;
|
||||
}
|
||||
|
||||
#region Implementation of IRate
|
||||
@@ -45,14 +41,14 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public double Maximum
|
||||
{
|
||||
get { return this.maximum; }
|
||||
set { this.maximum = value; }
|
||||
get => _maximum;
|
||||
set => _maximum = value;
|
||||
}
|
||||
|
||||
public double Minimum
|
||||
{
|
||||
get { return this.minimum; }
|
||||
set { this.minimum = value; }
|
||||
get => _minimum;
|
||||
set => _minimum = value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -74,8 +70,8 @@ namespace ASCOM.Meade.net
|
||||
[ComVisible(true)]
|
||||
public class AxisRates : IAxisRates, IEnumerable
|
||||
{
|
||||
private TelescopeAxes axis;
|
||||
private readonly Rate[] rates;
|
||||
private TelescopeAxes _axis;
|
||||
private readonly Rate[] _rates;
|
||||
|
||||
//
|
||||
// Constructor - Internal prevents public creation
|
||||
@@ -83,7 +79,7 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
internal AxisRates(TelescopeAxes axis)
|
||||
{
|
||||
this.axis = axis;
|
||||
_axis = axis;
|
||||
//
|
||||
// This collection must hold zero or more Rate objects describing the
|
||||
// rates of motion ranges for the Telescope.MoveAxis() method
|
||||
@@ -100,26 +96,23 @@ namespace ASCOM.Meade.net
|
||||
// TODO Initialize this array with any Primary axis rates that your driver may provide
|
||||
// Example: m_Rates = new Rate[] { new Rate(10.5, 30.2), new Rate(54.0, 43.6) }
|
||||
//this.rates = new Rate[0];
|
||||
this.rates = new Rate[] { new Rate(1, 1), new Rate(2, 2), new Rate(3, 3), new Rate(4, 4) };
|
||||
_rates = new Rate[] { new Rate(1, 1), new Rate(2, 2), new Rate(3, 3), new Rate(4, 4) };
|
||||
break;
|
||||
case TelescopeAxes.axisSecondary:
|
||||
// TODO Initialize this array with any Secondary axis rates that your driver may provide
|
||||
//this.rates = new Rate[0];
|
||||
this.rates = new Rate[] { new Rate(1, 1), new Rate(2, 2), new Rate(3, 3), new Rate(4, 4) };
|
||||
_rates = new Rate[] { new Rate(1, 1), new Rate(2, 2), new Rate(3, 3), new Rate(4, 4) };
|
||||
break;
|
||||
case TelescopeAxes.axisTertiary:
|
||||
// TODO Initialize this array with any Tertiary axis rates that your driver may provide
|
||||
this.rates = new Rate[0];
|
||||
_rates = new Rate[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#region IAxisRates Members
|
||||
|
||||
public int Count
|
||||
{
|
||||
get { return this.rates.Length; }
|
||||
}
|
||||
public int Count => _rates.Length;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
@@ -128,13 +121,10 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
return rates.GetEnumerator();
|
||||
return _rates.GetEnumerator();
|
||||
}
|
||||
|
||||
public IRate this[int index]
|
||||
{
|
||||
get { return this.rates[index - 1]; } // 1-based
|
||||
}
|
||||
public IRate this[int index] => _rates[index - 1];
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -159,11 +149,11 @@ namespace ASCOM.Meade.net
|
||||
[ComVisible(true)]
|
||||
public class TrackingRates : ITrackingRates, IEnumerable, IEnumerator
|
||||
{
|
||||
private readonly DriveRates[] trackingRates;
|
||||
private readonly DriveRates[] _trackingRates;
|
||||
|
||||
// this is used to make the index thread safe
|
||||
private readonly ThreadLocal<int> pos = new ThreadLocal<int>(() => { return -1; });
|
||||
private static readonly object lockObj = new object();
|
||||
private readonly ThreadLocal<int> _pos = new ThreadLocal<int>(() => { return -1; });
|
||||
private static readonly object LockObj = new object();
|
||||
|
||||
//
|
||||
// Default constructor - Internal prevents public creation
|
||||
@@ -176,20 +166,17 @@ namespace ASCOM.Meade.net
|
||||
// the tracking rates supported by your telescope. The one value
|
||||
// (tracking rate) that MUST be supported is driveSidereal!
|
||||
//
|
||||
this.trackingRates = new[] { DriveRates.driveSidereal, DriveRates.driveLunar };
|
||||
_trackingRates = new[] { DriveRates.driveSidereal, DriveRates.driveLunar };
|
||||
// TODO Initialize this array with any additional tracking rates that your driver may provide
|
||||
}
|
||||
|
||||
#region ITrackingRates Members
|
||||
|
||||
public int Count
|
||||
{
|
||||
get { return this.trackingRates.Length; }
|
||||
}
|
||||
public int Count => _trackingRates.Length;
|
||||
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
pos.Value = -1;
|
||||
_pos.Value = -1;
|
||||
return this as IEnumerator;
|
||||
}
|
||||
|
||||
@@ -198,10 +185,7 @@ namespace ASCOM.Meade.net
|
||||
// TODO Add any required object cleanup here
|
||||
}
|
||||
|
||||
public DriveRates this[int index]
|
||||
{
|
||||
get { return this.trackingRates[index - 1]; } // 1-based
|
||||
}
|
||||
public DriveRates this[int index] => _trackingRates[index - 1];
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -211,22 +195,22 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (lockObj)
|
||||
lock (LockObj)
|
||||
{
|
||||
if (pos.Value < 0 || pos.Value >= trackingRates.Length)
|
||||
if (_pos.Value < 0 || _pos.Value >= _trackingRates.Length)
|
||||
{
|
||||
throw new System.InvalidOperationException();
|
||||
}
|
||||
return trackingRates[pos.Value];
|
||||
return _trackingRates[_pos.Value];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
lock (lockObj)
|
||||
lock (LockObj)
|
||||
{
|
||||
if (++pos.Value >= trackingRates.Length)
|
||||
if (++_pos.Value >= _trackingRates.Length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -236,7 +220,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
pos.Value = -1;
|
||||
_pos.Value = -1;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
+169
-155
@@ -5,8 +5,8 @@ using System.Runtime.InteropServices;
|
||||
using ASCOM.Astrometry.AstroUtils;
|
||||
using ASCOM.Utilities;
|
||||
using ASCOM.DeviceInterface;
|
||||
using System.Globalization;
|
||||
using System.Collections;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using ASCOM.Meade.net.AstroMaths;
|
||||
using ASCOM.Meade.net.Wrapper;
|
||||
@@ -39,15 +39,15 @@ namespace ASCOM.Meade.net
|
||||
/// The DeviceID is used by ASCOM applications to load the driver at runtime.
|
||||
/// </summary>
|
||||
//internal static string driverID = "ASCOM.Meade.net.Telescope";
|
||||
internal static string driverID = Marshal.GenerateProgIdForType(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly string DriverId = Marshal.GenerateProgIdForType(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
// TODO Change the descriptive string for your driver then remove this line
|
||||
/// <summary>
|
||||
/// Driver description that displays in the ASCOM Chooser.
|
||||
/// </summary>
|
||||
private static string driverDescription = "Meade Generic";
|
||||
private static readonly string DriverDescription = "Meade Generic";
|
||||
|
||||
internal static string comPort; // Variables to hold the currrent device configuration
|
||||
private static string _comPort; // Variables to hold the currrent device configuration
|
||||
|
||||
/// <summary>
|
||||
/// Private variable to hold an ASCOM Utilities object
|
||||
@@ -65,7 +65,7 @@ namespace ASCOM.Meade.net
|
||||
/// <summary>
|
||||
/// Variable to hold the trace logger object (creates a diagnostic log file with information that you specify)
|
||||
/// </summary>
|
||||
private TraceLogger tl;
|
||||
private TraceLogger _tl;
|
||||
|
||||
private readonly ISharedResourcesWrapper _sharedResourcesWrapper;
|
||||
|
||||
@@ -100,7 +100,7 @@ namespace ASCOM.Meade.net
|
||||
private void Initialise()
|
||||
{
|
||||
//todo move the TraceLogger out to a factory class.
|
||||
tl = new TraceLogger("", "Meade.net.Telescope");
|
||||
_tl = new TraceLogger("", "Meade.net.Telescope");
|
||||
LogMessage("Telescope", "Starting initialisation");
|
||||
|
||||
ReadProfile(); // Read device configuration from the ASCOM Profile store
|
||||
@@ -231,12 +231,12 @@ namespace ASCOM.Meade.net
|
||||
break;
|
||||
default:
|
||||
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
|
||||
throw new ASCOM.ActionNotImplementedException($"{actionName}({actionParameters})");
|
||||
throw new ActionNotImplementedException($"{actionName}({actionParameters})");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
|
||||
throw new ASCOM.ActionNotImplementedException($"{actionName}");
|
||||
throw new ActionNotImplementedException($"{actionName}");
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
@@ -259,7 +259,7 @@ namespace ASCOM.Meade.net
|
||||
//string ret = CommandString(command, raw);
|
||||
// TODO decode the return string and return true or false
|
||||
// or
|
||||
throw new ASCOM.MethodNotImplementedException("CommandBool");
|
||||
throw new MethodNotImplementedException("CommandBool");
|
||||
// DO NOT have both these sections! One or the other
|
||||
}
|
||||
|
||||
@@ -279,9 +279,9 @@ namespace ASCOM.Meade.net
|
||||
Connected = false;
|
||||
|
||||
// Clean up the tracelogger and util objects
|
||||
tl.Enabled = false;
|
||||
tl.Dispose();
|
||||
tl = null;
|
||||
_tl.Enabled = false;
|
||||
_tl.Dispose();
|
||||
_tl = null;
|
||||
}
|
||||
|
||||
public bool Connected
|
||||
@@ -299,18 +299,21 @@ namespace ASCOM.Meade.net
|
||||
|
||||
if (value)
|
||||
{
|
||||
LogMessage("Connected Set", "Connecting to port {0}", comPort);
|
||||
LogMessage("Connected Set", "Connecting to port {0}", _comPort);
|
||||
try
|
||||
{
|
||||
_sharedResourcesWrapper.Connect("Serial");
|
||||
try
|
||||
{
|
||||
LogMessage("Connected Set", $"Connected to port {comPort}. Product: {_sharedResourcesWrapper.ProductName} Version:{_sharedResourcesWrapper.FirmwareVersion}");
|
||||
LogMessage("Connected Set", $"Connected to port {_comPort}. Product: {_sharedResourcesWrapper.ProductName} Version:{_sharedResourcesWrapper.FirmwareVersion}");
|
||||
|
||||
SetLongFormat(true);
|
||||
_userNewerPulseGuiding = IsNewPulseGuidingSupported();
|
||||
LogMessage("Connected Set", $"New Pulse Guiding Supported: {_userNewerPulseGuiding}");
|
||||
_targetDeclination = InvalidParameter;
|
||||
_targetRightAscension = InvalidParameter;
|
||||
_tracking = true;
|
||||
|
||||
LogMessage("Connected Set", $"New Pulse Guiding Supported: {_userNewerPulseGuiding}");
|
||||
IsConnected = true;
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -321,12 +324,12 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogMessage("Connected Set", "Error connecting to port {0} - {1}", comPort, ex.Message);
|
||||
LogMessage("Connected Set", "Error connecting to port {0} - {1}", _comPort, ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LogMessage("Connected Set", "Disconnecting from port {0}", comPort);
|
||||
LogMessage("Connected Set", "Disconnecting from port {0}", _comPort);
|
||||
_sharedResourcesWrapper.Disconnect("Serial");
|
||||
IsConnected = false;
|
||||
}
|
||||
@@ -335,9 +338,9 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public bool IsNewPulseGuidingSupported()
|
||||
{
|
||||
if (_sharedResourcesWrapper.ProductName == _sharedResourcesWrapper.AUTOSTAR497)
|
||||
if (_sharedResourcesWrapper.ProductName == _sharedResourcesWrapper.Autostar497)
|
||||
{
|
||||
return FirmwareIsGreaterThan(_sharedResourcesWrapper.AUTOSTAR497_31EE);
|
||||
return FirmwareIsGreaterThan(_sharedResourcesWrapper.Autostar49731Ee);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -346,7 +349,7 @@ namespace ASCOM.Meade.net
|
||||
private bool FirmwareIsGreaterThan(string minVersion)
|
||||
{
|
||||
var currentVersion = _sharedResourcesWrapper.FirmwareVersion;
|
||||
var comparison = currentVersion.CompareTo(minVersion);
|
||||
var comparison = String.Compare(currentVersion, minVersion, StringComparison.Ordinal);
|
||||
return (comparison >= 0);
|
||||
}
|
||||
|
||||
@@ -392,8 +395,8 @@ namespace ASCOM.Meade.net
|
||||
// TODO customise this device description
|
||||
get
|
||||
{
|
||||
LogMessage("Description Get", driverDescription);
|
||||
return driverDescription;
|
||||
LogMessage("Description Get", DriverDescription);
|
||||
return DriverDescription;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -412,7 +415,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
string driverVersion = $"{version.Major}.{version.Minor}.{version.Revision}.{version.Build}";
|
||||
LogMessage("DriverVersion Get", driverVersion);
|
||||
return driverVersion;
|
||||
@@ -444,7 +447,7 @@ namespace ASCOM.Meade.net
|
||||
////Returns: dd.d#
|
||||
|
||||
//string name = $"{telescopeProduceName} - {firmwareVersion}";
|
||||
string name = driverDescription;
|
||||
string name = DriverDescription;
|
||||
LogMessage("Name Get", name);
|
||||
return name;
|
||||
}
|
||||
@@ -462,6 +465,9 @@ namespace ASCOM.Meade.net
|
||||
_sharedResourcesWrapper.SendBlind(":Q#");
|
||||
//:Q# Halt all current slewing
|
||||
//Returns:Nothing
|
||||
|
||||
_movingPrimary = false;
|
||||
_movingSecondary = false;
|
||||
}
|
||||
|
||||
public AlignmentModes AlignmentMode
|
||||
@@ -519,7 +525,7 @@ namespace ASCOM.Meade.net
|
||||
CheckConnected("AlignmentMode Set");
|
||||
|
||||
//todo tidy this up into a better solution that means can :GW#, :AL#, :AA#, & :AP# and checked for Autostar properly
|
||||
if (!FirmwareIsGreaterThan(_sharedResourcesWrapper.AUTOSTAR497_43EG))
|
||||
if (!FirmwareIsGreaterThan(_sharedResourcesWrapper.Autostar49743Eg))
|
||||
throw new PropertyNotImplementedException("AlignmentMode",true );
|
||||
|
||||
//todo make this only try with Autostar 43Eg and above.
|
||||
@@ -550,7 +556,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
CheckConnected("Altitude get");
|
||||
CheckConnected("Altitude Get");
|
||||
|
||||
var altAz = CalcAltAzFromTelescopeEqData();
|
||||
LogMessage("Altitude", $"{altAz.Altitude}");
|
||||
@@ -575,19 +581,19 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
var altitudeData = _sharedResourcesWrapper.Lock(() => new AltitudeData
|
||||
{
|
||||
UtcDateTime = this.UTCDate,
|
||||
SiteLongitude = this.SiteLongitude,
|
||||
SiteLatitude = this.SiteLatitude,
|
||||
equatorialCoordinates = new EquatorialCoordinates()
|
||||
UtcDateTime = UTCDate,
|
||||
SiteLongitude = SiteLongitude,
|
||||
SiteLatitude = SiteLatitude,
|
||||
EquatorialCoordinates = new EquatorialCoordinates()
|
||||
{
|
||||
RightAscension = this.RightAscension,
|
||||
Declination = this.Declination
|
||||
RightAscension = RightAscension,
|
||||
Declination = Declination
|
||||
}
|
||||
});
|
||||
|
||||
double hourAngle = _astroMaths.RightAscensionToHourAngle(altitudeData.UtcDateTime, altitudeData.SiteLongitude,
|
||||
altitudeData.equatorialCoordinates.RightAscension);
|
||||
var altAz = _astroMaths.ConvertEqToHoz(hourAngle, altitudeData.SiteLatitude, altitudeData.equatorialCoordinates);
|
||||
altitudeData.EquatorialCoordinates.RightAscension);
|
||||
var altAz = _astroMaths.ConvertEqToHoz(hourAngle, altitudeData.SiteLatitude, altitudeData.EquatorialCoordinates);
|
||||
return altAz;
|
||||
}
|
||||
|
||||
@@ -596,7 +602,7 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("ApertureArea Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("ApertureArea", false);
|
||||
throw new PropertyNotImplementedException("ApertureArea", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -605,7 +611,7 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("ApertureDiameter Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("ApertureDiameter", false);
|
||||
throw new PropertyNotImplementedException("ApertureDiameter", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -627,20 +633,20 @@ namespace ASCOM.Meade.net
|
||||
LogMessage("AtPark", "Get - " + _atPark);
|
||||
return _atPark;
|
||||
}
|
||||
private set { _atPark = value; }
|
||||
private set => _atPark = value;
|
||||
}
|
||||
|
||||
public IAxisRates AxisRates(TelescopeAxes Axis)
|
||||
public IAxisRates AxisRates(TelescopeAxes axis)
|
||||
{
|
||||
LogMessage("AxisRates", "Get - " + Axis.ToString());
|
||||
return new AxisRates(Axis);
|
||||
LogMessage("AxisRates", "Get - " + axis.ToString());
|
||||
return new AxisRates(axis);
|
||||
}
|
||||
|
||||
public double Azimuth
|
||||
{
|
||||
get
|
||||
{
|
||||
CheckConnected("Azimuth get");
|
||||
CheckConnected("Azimuth Get");
|
||||
|
||||
//var result = _sharedResourcesWrapper.SendString(":GZ#");
|
||||
//:GZ# Get telescope azimuth
|
||||
@@ -667,15 +673,15 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanMoveAxis(TelescopeAxes Axis)
|
||||
public bool CanMoveAxis(TelescopeAxes axis)
|
||||
{
|
||||
LogMessage("CanMoveAxis", "Get - " + Axis.ToString());
|
||||
switch (Axis)
|
||||
LogMessage("CanMoveAxis", "Get - " + axis.ToString());
|
||||
switch (axis)
|
||||
{
|
||||
case TelescopeAxes.axisPrimary: return true; //RA or AZ
|
||||
case TelescopeAxes.axisSecondary: return true; //Dev or Alt
|
||||
case TelescopeAxes.axisTertiary: return false; //rotator / derotator
|
||||
default: throw new InvalidValueException("CanMoveAxis", Axis.ToString(), "0 to 2");
|
||||
default: throw new InvalidValueException("CanMoveAxis", axis.ToString(), "0 to 2");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -837,20 +843,20 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
double declination = 0.0;
|
||||
LogMessage("DeclinationRate", "Get - " + declination.ToString());
|
||||
LogMessage("DeclinationRate", "Get - " + declination.ToString(CultureInfo.InvariantCulture));
|
||||
return declination;
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("DeclinationRate Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("DeclinationRate", true);
|
||||
throw new PropertyNotImplementedException("DeclinationRate", true);
|
||||
}
|
||||
}
|
||||
|
||||
public PierSide DestinationSideOfPier(double rightAscension, double declination)
|
||||
{
|
||||
LogMessage("DestinationSideOfPier Get", "Not implemented");
|
||||
throw new ASCOM.MethodNotImplementedException("DestinationSideOfPier");
|
||||
throw new MethodNotImplementedException("DestinationSideOfPier");
|
||||
}
|
||||
|
||||
public bool DoesRefraction
|
||||
@@ -858,12 +864,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("DoesRefraction Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("DoesRefraction", false);
|
||||
throw new PropertyNotImplementedException("DoesRefraction", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("DoesRefraction Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("DoesRefraction", true);
|
||||
throw new PropertyNotImplementedException("DoesRefraction", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -880,7 +886,7 @@ namespace ASCOM.Meade.net
|
||||
public void FindHome()
|
||||
{
|
||||
LogMessage("FindHome", "Not implemented");
|
||||
throw new ASCOM.MethodNotImplementedException("FindHome");
|
||||
throw new MethodNotImplementedException("FindHome");
|
||||
}
|
||||
|
||||
public double FocalLength
|
||||
@@ -888,7 +894,7 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("FocalLength Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("FocalLength", false);
|
||||
throw new PropertyNotImplementedException("FocalLength", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -897,12 +903,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("GuideRateDeclination Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("GuideRateDeclination", false);
|
||||
throw new PropertyNotImplementedException("GuideRateDeclination", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("GuideRateDeclination Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("GuideRateDeclination", true);
|
||||
throw new PropertyNotImplementedException("GuideRateDeclination", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -911,12 +917,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("GuideRateRightAscension Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("GuideRateRightAscension", false);
|
||||
throw new PropertyNotImplementedException("GuideRateRightAscension", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("GuideRateRightAscension Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("GuideRateRightAscension", true);
|
||||
throw new PropertyNotImplementedException("GuideRateRightAscension", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -967,7 +973,7 @@ namespace ASCOM.Meade.net
|
||||
//Returns: Nothing
|
||||
break;
|
||||
default:
|
||||
throw new ASCOM.InvalidValueException($"Rate {rate} not supported");
|
||||
throw new InvalidValueException($"Rate {rate} not supported");
|
||||
}
|
||||
|
||||
switch (axis)
|
||||
@@ -1027,7 +1033,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
break;
|
||||
default:
|
||||
throw new ASCOM.InvalidValueException("Can not move this axis.");
|
||||
throw new InvalidValueException("Can not move this axis.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1136,20 +1142,20 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
double rightAscensionRate = 0.0;
|
||||
LogMessage("RightAscensionRate", "Get - " + rightAscensionRate.ToString());
|
||||
LogMessage("RightAscensionRate", "Get - " + rightAscensionRate.ToString(CultureInfo.InvariantCulture));
|
||||
return rightAscensionRate;
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("RightAscensionRate Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("RightAscensionRate", true);
|
||||
throw new PropertyNotImplementedException("RightAscensionRate", true);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetPark()
|
||||
{
|
||||
LogMessage("SetPark", "Not implemented");
|
||||
throw new ASCOM.MethodNotImplementedException("SetPark");
|
||||
throw new MethodNotImplementedException("SetPark");
|
||||
}
|
||||
|
||||
public PierSide SideOfPier
|
||||
@@ -1157,12 +1163,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("SideOfPier Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SideOfPier", false);
|
||||
throw new PropertyNotImplementedException("SideOfPier", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("SideOfPier Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SideOfPier", true);
|
||||
throw new PropertyNotImplementedException("SideOfPier", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1172,13 +1178,13 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
// Now using NOVAS 3.1
|
||||
double siderealTime = 0.0;
|
||||
using (var novas = new ASCOM.Astrometry.NOVAS.NOVAS31())
|
||||
using (var novas = new Astrometry.NOVAS.NOVAS31())
|
||||
{
|
||||
var jd = _utilities.DateUTCToJulian(DateTime.UtcNow);
|
||||
novas.SiderealTime(jd, 0, novas.DeltaT(jd),
|
||||
ASCOM.Astrometry.GstType.GreenwichApparentSiderealTime,
|
||||
ASCOM.Astrometry.Method.EquinoxBased,
|
||||
ASCOM.Astrometry.Accuracy.Reduced, ref siderealTime);
|
||||
Astrometry.GstType.GreenwichApparentSiderealTime,
|
||||
Astrometry.Method.EquinoxBased,
|
||||
Astrometry.Accuracy.Reduced, ref siderealTime);
|
||||
}
|
||||
|
||||
// Allow for the longitude
|
||||
@@ -1187,7 +1193,7 @@ namespace ASCOM.Meade.net
|
||||
// Reduce to the range 0 to 24 hours
|
||||
siderealTime = _astroUtilities.ConditionRA(siderealTime);
|
||||
|
||||
LogMessage("SiderealTime", "Get - " + siderealTime.ToString());
|
||||
LogMessage("SiderealTime", "Get - " + siderealTime.ToString(CultureInfo.InvariantCulture));
|
||||
return siderealTime;
|
||||
}
|
||||
}
|
||||
@@ -1197,12 +1203,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("SiteElevation Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SiteElevation", false);
|
||||
throw new PropertyNotImplementedException("SiteElevation", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("SiteElevation Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SiteElevation", true);
|
||||
throw new PropertyNotImplementedException("SiteElevation", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1259,7 +1265,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
var longitude = _sharedResourcesWrapper.SendString(":Gg#");
|
||||
//:Gg# Get Current Site Longitude
|
||||
//Returns: sDDD* MM#
|
||||
//Returns: sDDD*MM#
|
||||
//The current site Longitude. East Longitudes are expressed as negative
|
||||
double siteLongitude = _utilities.DMSToDegrees(longitude);
|
||||
|
||||
@@ -1293,7 +1299,9 @@ namespace ASCOM.Meade.net
|
||||
int d = Convert.ToInt32(Math.Floor(newLongitude));
|
||||
int m = Convert.ToInt32(60 * (newLongitude - d));
|
||||
|
||||
var result = _sharedResourcesWrapper.SendChar($":Sg{d:000}*{m:00}#");
|
||||
var commandstring = $":Sg{d:000}*{m:00}#";
|
||||
|
||||
var result = _sharedResourcesWrapper.SendChar(commandstring);
|
||||
//:SgDDD*MM#
|
||||
//Set current site’s longitude to DDD*MM an ASCII position string
|
||||
//Returns:
|
||||
@@ -1309,12 +1317,12 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
LogMessage("SlewSettleTime Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SlewSettleTime", false);
|
||||
throw new PropertyNotImplementedException("SlewSettleTime", false);
|
||||
}
|
||||
set
|
||||
{
|
||||
LogMessage("SlewSettleTime Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("SlewSettleTime", true);
|
||||
throw new PropertyNotImplementedException("SlewSettleTime", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1336,10 +1344,10 @@ namespace ASCOM.Meade.net
|
||||
set
|
||||
{
|
||||
if (value > 90)
|
||||
throw new ASCOM.InvalidValueException("Altitude cannot be greater than 90.");
|
||||
throw new InvalidValueException("Altitude cannot be greater than 90.");
|
||||
|
||||
if (value < 0)
|
||||
throw new ASCOM.InvalidValueException("Altitide cannot be less than 0.");
|
||||
throw new InvalidValueException("Altitide cannot be less than 0.");
|
||||
|
||||
CheckConnected("TargetAltitude Set");
|
||||
|
||||
@@ -1356,7 +1364,7 @@ namespace ASCOM.Meade.net
|
||||
//0 Object out of slew range
|
||||
|
||||
if (result == "0")
|
||||
throw new ASCOM.InvalidOperationException("Target altitude out of slew range");
|
||||
throw new InvalidOperationException("Target altitude out of slew range");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1365,10 +1373,10 @@ namespace ASCOM.Meade.net
|
||||
set
|
||||
{
|
||||
if (value >= 360)
|
||||
throw new ASCOM.InvalidValueException("Azimuth cannot be 360 or higher.");
|
||||
throw new InvalidValueException("Azimuth cannot be 360 or higher.");
|
||||
|
||||
if (value < 0)
|
||||
throw new ASCOM.InvalidValueException("Azimuth cannot be less than 0.");
|
||||
throw new InvalidValueException("Azimuth cannot be less than 0.");
|
||||
|
||||
CheckConnected("TargetAzimuth Set");
|
||||
|
||||
@@ -1384,28 +1392,29 @@ namespace ASCOM.Meade.net
|
||||
//1 - Valid
|
||||
|
||||
if (result == "0")
|
||||
throw new ASCOM.InvalidOperationException("Target Azimuth out of slew range");
|
||||
throw new InvalidOperationException("Target Azimuth out of slew range");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void SlewToAltAzAsync(double azimuth, double altitude)
|
||||
{
|
||||
if (altitude > 90)
|
||||
throw new ASCOM.InvalidValueException("Altitude cannot be greater than 90.");
|
||||
|
||||
if (altitude < 0)
|
||||
throw new ASCOM.InvalidValueException("Altitide cannot be less than 0.");
|
||||
|
||||
if (azimuth >= 360)
|
||||
throw new ASCOM.InvalidValueException("Azimuth cannot be 360 or higher.");
|
||||
|
||||
if (azimuth < 0)
|
||||
throw new ASCOM.InvalidValueException("Azimuth cannot be less than 0.");
|
||||
|
||||
LogMessage("SlewToAltAzAsync", $"Az={azimuth} Alt={altitude}");
|
||||
CheckConnected("SlewToAltAzAsync");
|
||||
|
||||
if (altitude > 90)
|
||||
throw new InvalidValueException("Altitude cannot be greater than 90.");
|
||||
|
||||
if (altitude < 0)
|
||||
throw new InvalidValueException("Altitide cannot be less than 0.");
|
||||
|
||||
if (azimuth >= 360)
|
||||
throw new InvalidValueException("Azimuth cannot be 360 or higher.");
|
||||
|
||||
if (azimuth < 0)
|
||||
throw new InvalidValueException("Azimuth cannot be less than 0.");
|
||||
|
||||
LogMessage("SlewToAltAzAsync", $"Az={azimuth} Alt={altitude}");
|
||||
|
||||
HorizonCoordinates altAz = new HorizonCoordinates();
|
||||
altAz.Azimuth = azimuth;
|
||||
altAz.Altitude = altitude;
|
||||
@@ -1456,15 +1465,15 @@ namespace ASCOM.Meade.net
|
||||
//Below Horizon
|
||||
string belowHorizonMessage = _sharedResourcesWrapper.ReadTerminated();
|
||||
LogMessage("DoSlewAsync", $"Slew failed \"{belowHorizonMessage}\"");
|
||||
throw new ASCOM.InvalidOperationException(belowHorizonMessage);
|
||||
throw new InvalidOperationException(belowHorizonMessage);
|
||||
case "2":
|
||||
//Below Horizon
|
||||
string belowMinimumElevationMessage = _sharedResourcesWrapper.ReadTerminated();
|
||||
LogMessage("DoSlewAsync", $"Slew failed \"{belowMinimumElevationMessage}\"");
|
||||
throw new ASCOM.InvalidOperationException(belowMinimumElevationMessage);
|
||||
throw new InvalidOperationException(belowMinimumElevationMessage);
|
||||
default:
|
||||
LogMessage("DoSlewAsync", $"Slew failed - unknown response \"{response}\"");
|
||||
throw new ASCOM.DriverException("This error should not happen");
|
||||
throw new DriverException("This error should not happen");
|
||||
|
||||
}
|
||||
|
||||
@@ -1479,7 +1488,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
if (maResponse == "1")
|
||||
{
|
||||
throw new ASCOM.InvalidOperationException("fault");
|
||||
throw new InvalidOperationException("fault");
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -1529,19 +1538,19 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
}
|
||||
|
||||
private const double INVALID_PARAMETER = -1000;
|
||||
private const double InvalidParameter = -1000;
|
||||
|
||||
public void SlewToTargetAsync()
|
||||
{
|
||||
CheckConnected("SlewToTargetAsync");
|
||||
|
||||
if (TargetDeclination == INVALID_PARAMETER || TargetRightAscension == INVALID_PARAMETER)
|
||||
throw new ASCOM.InvalidOperationException("No target selected to slew to.");
|
||||
if (TargetDeclination == InvalidParameter || TargetRightAscension == InvalidParameter)
|
||||
throw new InvalidOperationException("No target selected to slew to.");
|
||||
|
||||
DoSlewAsync(true);
|
||||
}
|
||||
|
||||
private bool movingAxis()
|
||||
private bool MovingAxis()
|
||||
{
|
||||
return _movingPrimary || _movingSecondary;
|
||||
}
|
||||
@@ -1553,7 +1562,7 @@ namespace ASCOM.Meade.net
|
||||
if (!Connected) return false;
|
||||
|
||||
|
||||
if (movingAxis())
|
||||
if (MovingAxis())
|
||||
return true;
|
||||
|
||||
CheckConnected("Slewing Get");
|
||||
@@ -1563,6 +1572,12 @@ namespace ASCOM.Meade.net
|
||||
//Returns:
|
||||
//LX200's – a string of bar characters indicating the distance.
|
||||
//Autostars and Autostar II – a string containing one bar until a slew is complete, then a null string is returned.
|
||||
|
||||
if (result == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isSlewing = result != string.Empty;
|
||||
|
||||
LogMessage("Slewing Get", $"Result = {isSlewing}");
|
||||
@@ -1573,7 +1588,7 @@ namespace ASCOM.Meade.net
|
||||
public void SyncToAltAz(double azimuth, double altitude)
|
||||
{
|
||||
LogMessage("SyncToAltAz", "Not implemented");
|
||||
throw new ASCOM.MethodNotImplementedException("SyncToAltAz");
|
||||
throw new MethodNotImplementedException("SyncToAltAz");
|
||||
}
|
||||
|
||||
public void SyncToCoordinates(double rightAscension, double declination)
|
||||
@@ -1599,19 +1614,19 @@ namespace ASCOM.Meade.net
|
||||
//:CM# Synchronizes the telescope's position with the currently selected database object's coordinates.
|
||||
//Returns:
|
||||
//LX200's - a "#" terminated string with the name of the object that was synced.
|
||||
// Autostars & Autostar II - At static string: " M31 EX GAL MAG 3.5 SZ178.0'#"
|
||||
// Autostars & Autostar II - A static string: " M31 EX GAL MAG 3.5 SZ178.0'#"
|
||||
|
||||
if (result == string.Empty)
|
||||
throw new ASCOM.InvalidOperationException("Unable to perform sync");
|
||||
throw new InvalidOperationException("Unable to perform sync");
|
||||
}
|
||||
|
||||
private double _targetDeclination = INVALID_PARAMETER;
|
||||
private double _targetDeclination = InvalidParameter;
|
||||
public double TargetDeclination
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_targetDeclination == INVALID_PARAMETER)
|
||||
throw new ASCOM.InvalidOperationException("Target not set");
|
||||
if (_targetDeclination == InvalidParameter)
|
||||
throw new InvalidOperationException("Target not set");
|
||||
|
||||
//var result = SerialPort.CommandTerminated(":Gd#", "#");
|
||||
////:Gd# Get Currently Selected Object/Target Declination
|
||||
@@ -1628,16 +1643,16 @@ namespace ASCOM.Meade.net
|
||||
set
|
||||
{
|
||||
LogMessage("TargetDeclination Set", $"{value}");
|
||||
|
||||
//todo implement low precision version of this.
|
||||
if (value > 90)
|
||||
throw new ASCOM.InvalidValueException("Declination cannot be greater than 90.");
|
||||
|
||||
if (value < -90)
|
||||
throw new ASCOM.InvalidValueException("Declination cannot be less than -90.");
|
||||
|
||||
CheckConnected("TargetDeclination Set");
|
||||
|
||||
//todo implement low precision version of this.
|
||||
if (value > 90)
|
||||
throw new InvalidValueException("Declination cannot be greater than 90.");
|
||||
|
||||
if (value < -90)
|
||||
throw new InvalidValueException("Declination cannot be less than -90.");
|
||||
|
||||
var dms = _utilities.DegreesToDMS(value, "*", ":", ":", 2);
|
||||
var s = value < 0 ? string.Empty : "+";
|
||||
|
||||
@@ -1653,20 +1668,20 @@ namespace ASCOM.Meade.net
|
||||
|
||||
if (result == "0")
|
||||
{
|
||||
throw new ASCOM.InvalidOperationException("Target declination invalid");
|
||||
throw new InvalidOperationException("Target declination invalid");
|
||||
}
|
||||
|
||||
_targetDeclination = value;
|
||||
}
|
||||
}
|
||||
|
||||
private double _targetRightAscension = INVALID_PARAMETER;
|
||||
private double _targetRightAscension = InvalidParameter;
|
||||
public double TargetRightAscension
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_targetRightAscension == INVALID_PARAMETER)
|
||||
throw new ASCOM.InvalidOperationException("Target not set");
|
||||
if (_targetRightAscension == InvalidParameter)
|
||||
throw new InvalidOperationException("Target not set");
|
||||
|
||||
//var result = SerialPort.CommandTerminated(":Gr#", "#");
|
||||
////:Gr# Get current/target object RA
|
||||
@@ -1682,14 +1697,13 @@ namespace ASCOM.Meade.net
|
||||
set
|
||||
{
|
||||
LogMessage("TargetRightAscension Set", $"{value}");
|
||||
CheckConnected("TargetRightAscension Set");
|
||||
|
||||
if (value < 0)
|
||||
throw new InvalidValueException("Right ascension value cannot be below 0");
|
||||
|
||||
if (value >= 24)
|
||||
throw new InvalidValueException("Right ascension value cannot be greater than 23:59:59");
|
||||
|
||||
CheckConnected("TargetRightAscension Set");
|
||||
//todo implement the low precision version
|
||||
|
||||
var hms = _utilities.HoursToHMS(value, ":", ":", ":", 2);
|
||||
@@ -1794,8 +1808,6 @@ namespace ASCOM.Meade.net
|
||||
|
||||
private TimeSpan GetUtcCorrection()
|
||||
{
|
||||
CheckConnected("GetUtcCorrection");
|
||||
|
||||
string utcOffSet = _sharedResourcesWrapper.SendString(":GG#");
|
||||
//:GG# Get UTC offset time
|
||||
//Returns: sHH# or sHH.H#
|
||||
@@ -1806,11 +1818,11 @@ namespace ASCOM.Meade.net
|
||||
return utcCorrection;
|
||||
}
|
||||
|
||||
private class TelescopeDateDetails
|
||||
public class TelescopeDateDetails
|
||||
{
|
||||
public string telescopeDate { get; set; }
|
||||
public string telescopeTime { get; set; }
|
||||
public TimeSpan utcCorrection { get; set; }
|
||||
public string TelescopeDate { get; set; }
|
||||
public string TelescopeTime { get; set; }
|
||||
public TimeSpan UtcCorrection { get; set; }
|
||||
}
|
||||
|
||||
public DateTime UTCDate
|
||||
@@ -1824,34 +1836,34 @@ namespace ASCOM.Meade.net
|
||||
TelescopeDateDetails telescopeDateDetails = _sharedResourcesWrapper.Lock(() =>
|
||||
{
|
||||
TelescopeDateDetails tdd = new TelescopeDateDetails();
|
||||
tdd.telescopeDate = _sharedResourcesWrapper.SendString(":GC#");
|
||||
tdd.TelescopeDate = _sharedResourcesWrapper.SendString(":GC#");
|
||||
//:GC# Get current date.
|
||||
//Returns: MM / DD / YY#
|
||||
//Returns: MM/DD/YY#
|
||||
//The current local calendar date for the telescope.
|
||||
tdd.telescopeTime = _sharedResourcesWrapper.SendString(":GL#");
|
||||
tdd.TelescopeTime = _sharedResourcesWrapper.SendString(":GL#");
|
||||
//:GL# Get Local Time in 24 hour format
|
||||
//Returns: HH: MM: SS#
|
||||
//Returns: HH:MM:SS#
|
||||
//The Local Time in 24 - hour Format
|
||||
tdd.utcCorrection = GetUtcCorrection();
|
||||
tdd.UtcCorrection = GetUtcCorrection();
|
||||
|
||||
return tdd;
|
||||
});
|
||||
|
||||
int month = telescopeDateDetails.telescopeDate.Substring(0, 2).ToInteger();
|
||||
int day = telescopeDateDetails.telescopeDate.Substring(3, 2).ToInteger();
|
||||
int year = telescopeDateDetails.telescopeDate.Substring(6, 2).ToInteger();
|
||||
int month = telescopeDateDetails.TelescopeDate.Substring(0, 2).ToInteger();
|
||||
int day = telescopeDateDetails.TelescopeDate.Substring(3, 2).ToInteger();
|
||||
int year = telescopeDateDetails.TelescopeDate.Substring(6, 2).ToInteger();
|
||||
|
||||
if (year < 2000) //todo fix this hack that will create a Y2K100 bug
|
||||
{
|
||||
year = year + 2000;
|
||||
}
|
||||
|
||||
int hour = telescopeDateDetails.telescopeTime.Substring(0, 2).ToInteger();
|
||||
int minute = telescopeDateDetails.telescopeTime.Substring(3, 2).ToInteger();
|
||||
int second = telescopeDateDetails.telescopeTime.Substring(6, 2).ToInteger();
|
||||
int hour = telescopeDateDetails.TelescopeTime.Substring(0, 2).ToInteger();
|
||||
int minute = telescopeDateDetails.TelescopeTime.Substring(3, 2).ToInteger();
|
||||
int second = telescopeDateDetails.TelescopeTime.Substring(6, 2).ToInteger();
|
||||
|
||||
var utcDate = new DateTime(year, month, day, hour, minute, second, DateTimeKind.Utc) +
|
||||
telescopeDateDetails.utcCorrection;
|
||||
telescopeDateDetails.UtcCorrection;
|
||||
|
||||
LogMessage("UTCDate", "Get - " + utcDate.ToString("MM/dd/yy HH:mm:ss"));
|
||||
|
||||
@@ -1868,7 +1880,8 @@ namespace ASCOM.Meade.net
|
||||
var utcCorrection = GetUtcCorrection();
|
||||
var localDateTime = value - utcCorrection;
|
||||
|
||||
var timeResult = _sharedResourcesWrapper.SendChar($":SL{localDateTime:HH:mm:ss}#");
|
||||
string localStingCommand = $":SL{localDateTime:HH:mm:ss}#";
|
||||
var timeResult = _sharedResourcesWrapper.SendChar(localStingCommand);
|
||||
//:SLHH:MM:SS#
|
||||
//Set the local Time
|
||||
//Returns:
|
||||
@@ -1879,7 +1892,8 @@ namespace ASCOM.Meade.net
|
||||
throw new InvalidOperationException("Failed to set local time");
|
||||
}
|
||||
|
||||
var dateResult = _sharedResourcesWrapper.SendChar($":SC{localDateTime:MM/dd/yy}#");
|
||||
string localDateCommand = $":SC{localDateTime:MM/dd/yy}#";
|
||||
var dateResult = _sharedResourcesWrapper.SendChar(localDateCommand);
|
||||
//:SCMM/DD/YY#
|
||||
//Change Handbox Date to MM/DD/YY
|
||||
//Returns: <D><string>
|
||||
@@ -1901,7 +1915,7 @@ namespace ASCOM.Meade.net
|
||||
public void Unpark()
|
||||
{
|
||||
LogMessage("Unpark", "Not implemented");
|
||||
throw new ASCOM.MethodNotImplementedException("Unpark");
|
||||
throw new MethodNotImplementedException("Unpark");
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1920,18 +1934,18 @@ namespace ASCOM.Meade.net
|
||||
/// This is harmless if the driver is already registered/unregistered.
|
||||
/// </summary>
|
||||
/// <param name="bRegister">If <c>true</c>, registers the driver, otherwise unregisters it.</param>
|
||||
private static void RegUnregASCOM(bool bRegister)
|
||||
private static void RegUnregAscom(bool bRegister)
|
||||
{
|
||||
using (var P = new ASCOM.Utilities.Profile())
|
||||
using (var p = new Profile())
|
||||
{
|
||||
P.DeviceType = "Telescope";
|
||||
p.DeviceType = "Telescope";
|
||||
if (bRegister)
|
||||
{
|
||||
P.Register(driverID, driverDescription);
|
||||
p.Register(DriverId, DriverDescription);
|
||||
}
|
||||
else
|
||||
{
|
||||
P.Unregister(driverID);
|
||||
p.Unregister(DriverId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1954,9 +1968,9 @@ namespace ASCOM.Meade.net
|
||||
/// This technique should mean that it is never necessary to manually register a driver with ASCOM.
|
||||
/// </remarks>
|
||||
[ComRegisterFunction]
|
||||
public static void RegisterASCOM(Type t)
|
||||
public static void RegisterAscom(Type t)
|
||||
{
|
||||
RegUnregASCOM(true);
|
||||
RegUnregAscom(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1977,9 +1991,9 @@ namespace ASCOM.Meade.net
|
||||
/// This technique should mean that it is never necessary to manually unregister a driver from ASCOM.
|
||||
/// </remarks>
|
||||
[ComUnregisterFunction]
|
||||
public static void UnregisterASCOM(Type t)
|
||||
public static void UnregisterAscom(Type t)
|
||||
{
|
||||
RegUnregASCOM(false);
|
||||
RegUnregAscom(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1997,7 +2011,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
if (!IsConnected)
|
||||
{
|
||||
throw new ASCOM.NotConnectedException($"Not connected to telescope when trying to execute: {message}");
|
||||
throw new NotConnectedException($"Not connected to telescope when trying to execute: {message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2007,8 +2021,8 @@ namespace ASCOM.Meade.net
|
||||
internal void ReadProfile()
|
||||
{
|
||||
var profileProperties = _sharedResourcesWrapper.ReadProfile();
|
||||
tl.Enabled = profileProperties.TraceLogger;
|
||||
comPort = profileProperties.ComPort;
|
||||
_tl.Enabled = profileProperties.TraceLogger;
|
||||
_comPort = profileProperties.ComPort;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2020,7 +2034,7 @@ namespace ASCOM.Meade.net
|
||||
internal void LogMessage(string identifier, string message, params object[] args)
|
||||
{
|
||||
var msg = string.Format(message, args);
|
||||
tl.LogMessage(identifier, msg);
|
||||
_tl.LogMessage(identifier, msg);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -38,14 +38,14 @@ namespace ASCOM.Meade.net
|
||||
/// The DeviceID is used by ASCOM applications to load the driver at runtime.
|
||||
/// </summary>
|
||||
//internal static string driverID = "ASCOM.Meade.net.Focuser";
|
||||
internal static string driverID = Marshal.GenerateProgIdForType(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly string DriverId = Marshal.GenerateProgIdForType(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
// TODO Change the descriptive string for your driver then remove this line
|
||||
/// <summary>
|
||||
/// Driver description that displays in the ASCOM Chooser.
|
||||
/// </summary>
|
||||
private static string driverDescription = "Meade Generic";
|
||||
private static readonly string DriverDescription = "Meade Generic";
|
||||
|
||||
internal static string comPort; // Variables to hold the currrent device configuration
|
||||
private static string _comPort; // Variables to hold the currrent device configuration
|
||||
|
||||
/// <summary>
|
||||
/// Private variable to hold an ASCOM Utilities object
|
||||
@@ -55,7 +55,7 @@ namespace ASCOM.Meade.net
|
||||
/// <summary>
|
||||
/// Variable to hold the trace logger object (creates a diagnostic log file with information that you specify)
|
||||
/// </summary>
|
||||
internal static TraceLogger tl;
|
||||
internal static TraceLogger Tl;
|
||||
|
||||
private readonly ISharedResourcesWrapper _sharedResourcesWrapper;
|
||||
|
||||
@@ -74,14 +74,14 @@ namespace ASCOM.Meade.net
|
||||
|
||||
private void Initialise()
|
||||
{
|
||||
tl = new TraceLogger("", "Meade.net.focusser");
|
||||
Tl = new TraceLogger("", "Meade.net.focusser");
|
||||
|
||||
tl.LogMessage("Focuser", "Starting initialisation");
|
||||
Tl.LogMessage("Focuser", "Starting initialisation");
|
||||
ReadProfile(); // Read device configuration from the ASCOM Profile store
|
||||
|
||||
IsConnected = false; // Initialise connected to false
|
||||
|
||||
tl.LogMessage("Focuser", "Completed initialisation");
|
||||
Tl.LogMessage("Focuser", "Completed initialisation");
|
||||
}
|
||||
|
||||
|
||||
@@ -99,17 +99,17 @@ namespace ASCOM.Meade.net
|
||||
/// </summary>
|
||||
public void SetupDialog()
|
||||
{
|
||||
tl.LogMessage("SetupDialog", "Opening setup dialog");
|
||||
Tl.LogMessage("SetupDialog", "Opening setup dialog");
|
||||
_sharedResourcesWrapper.SetupDialog();
|
||||
ReadProfile();
|
||||
tl.LogMessage("SetupDialog", "complete");
|
||||
Tl.LogMessage("SetupDialog", "complete");
|
||||
}
|
||||
|
||||
public ArrayList SupportedActions
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("SupportedActions Get", "Returning empty arraylist");
|
||||
Tl.LogMessage("SupportedActions Get", "Returning empty arraylist");
|
||||
return new ArrayList();
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,7 @@ namespace ASCOM.Meade.net
|
||||
public string Action(string actionName, string actionParameters)
|
||||
{
|
||||
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
|
||||
throw new ASCOM.ActionNotImplementedException("Action " + actionName + " is not implemented by this driver");
|
||||
throw new ActionNotImplementedException("Action " + actionName + " is not implemented by this driver");
|
||||
}
|
||||
|
||||
public void CommandBlind(string command, bool raw)
|
||||
@@ -137,7 +137,7 @@ namespace ASCOM.Meade.net
|
||||
//string ret = CommandString(command, raw);
|
||||
// TODO decode the return string and return true or false
|
||||
// or
|
||||
throw new ASCOM.MethodNotImplementedException("CommandBool");
|
||||
throw new MethodNotImplementedException("CommandBool");
|
||||
// DO NOT have both these sections! One or the other
|
||||
}
|
||||
|
||||
@@ -149,15 +149,15 @@ namespace ASCOM.Meade.net
|
||||
// you need something to ensure that only one command is in progress at a time
|
||||
return _sharedResourcesWrapper.SendString(command);
|
||||
|
||||
throw new ASCOM.MethodNotImplementedException("CommandString");
|
||||
throw new MethodNotImplementedException("CommandString");
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Clean up the tracelogger and util objects
|
||||
tl.Enabled = false;
|
||||
tl.Dispose();
|
||||
tl = null;
|
||||
Tl.Enabled = false;
|
||||
Tl.Dispose();
|
||||
Tl = null;
|
||||
}
|
||||
|
||||
public bool Connected
|
||||
@@ -169,7 +169,7 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
set
|
||||
{
|
||||
tl.LogMessage("Connected", "Set {0}", value);
|
||||
Tl.LogMessage("Connected", "Set {0}", value);
|
||||
if (value == IsConnected)
|
||||
return;
|
||||
|
||||
@@ -193,12 +193,12 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogMessage("Connected Set", "Error connecting to port {0} - {1}", comPort, ex.Message);
|
||||
LogMessage("Connected Set", "Error connecting to port {0} - {1}", _comPort, ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LogMessage("Connected Set", "Disconnecting from port {0}", comPort);
|
||||
LogMessage("Connected Set", "Disconnecting from port {0}", _comPort);
|
||||
_sharedResourcesWrapper.Disconnect("Serial");
|
||||
IsConnected = false;
|
||||
}
|
||||
@@ -241,8 +241,8 @@ namespace ASCOM.Meade.net
|
||||
// TODO customise this device description
|
||||
get
|
||||
{
|
||||
tl.LogMessage("Description Get", driverDescription);
|
||||
return driverDescription;
|
||||
Tl.LogMessage("Description Get", DriverDescription);
|
||||
return DriverDescription;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,10 +250,10 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
// TODO customise this driver description
|
||||
string driverInfo = "Information about the driver itself. Version: " + String.Format(CultureInfo.InvariantCulture, "{0}.{1}", version.Major, version.Minor);
|
||||
tl.LogMessage("DriverInfo Get", driverInfo);
|
||||
Tl.LogMessage("DriverInfo Get", driverInfo);
|
||||
return driverInfo;
|
||||
}
|
||||
}
|
||||
@@ -262,9 +262,9 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
string driverVersion = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", version.Major, version.Minor);
|
||||
tl.LogMessage("DriverVersion Get", driverVersion);
|
||||
Tl.LogMessage("DriverVersion Get", driverVersion);
|
||||
return driverVersion;
|
||||
}
|
||||
}
|
||||
@@ -284,8 +284,8 @@ namespace ASCOM.Meade.net
|
||||
get
|
||||
{
|
||||
//string name = "Short driver name - please customise";
|
||||
string name = driverDescription;
|
||||
tl.LogMessage("Name Get", name);
|
||||
string name = DriverDescription;
|
||||
Tl.LogMessage("Name Get", name);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -298,14 +298,14 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("Absolute Get", false.ToString());
|
||||
Tl.LogMessage("Absolute Get", false.ToString());
|
||||
return false; // This is a relative focuser
|
||||
}
|
||||
}
|
||||
|
||||
public void Halt()
|
||||
{
|
||||
tl.LogMessage("Halt", "Halting");
|
||||
Tl.LogMessage("Halt", "Halting");
|
||||
|
||||
CheckConnected("Halt");
|
||||
|
||||
@@ -325,7 +325,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("IsMoving Get", false.ToString());
|
||||
Tl.LogMessage("IsMoving Get", false.ToString());
|
||||
return false; // This focuser always moves instantaneously so no need for IsMoving ever to be True
|
||||
}
|
||||
}
|
||||
@@ -334,13 +334,13 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("Link Get", this.Connected.ToString());
|
||||
return this.Connected; // Direct function to the connected method, the Link method is just here for backwards compatibility
|
||||
Tl.LogMessage("Link Get", Connected.ToString());
|
||||
return Connected; // Direct function to the connected method, the Link method is just here for backwards compatibility
|
||||
}
|
||||
set
|
||||
{
|
||||
tl.LogMessage("Link Set", value.ToString());
|
||||
this.Connected = value; // Direct function to the connected method, the Link method is just here for backwards compatibility
|
||||
Tl.LogMessage("Link Set", value.ToString());
|
||||
Connected = value; // Direct function to the connected method, the Link method is just here for backwards compatibility
|
||||
}
|
||||
}
|
||||
|
||||
@@ -349,7 +349,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("MaxIncrement Get", _maxIncrement.ToString());
|
||||
Tl.LogMessage("MaxIncrement Get", _maxIncrement.ToString());
|
||||
return _maxIncrement; // Maximum change in one move
|
||||
}
|
||||
}
|
||||
@@ -359,37 +359,37 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("MaxStep Get", _maxStep.ToString());
|
||||
Tl.LogMessage("MaxStep Get", _maxStep.ToString());
|
||||
return _maxStep;
|
||||
}
|
||||
}
|
||||
|
||||
public void Move(int Position)
|
||||
public void Move(int position)
|
||||
{
|
||||
tl.LogMessage("Move", Position.ToString());
|
||||
Tl.LogMessage("Move", position.ToString());
|
||||
CheckConnected("Move");
|
||||
|
||||
//todo implement backlash compensation
|
||||
//todo implement direction reverse
|
||||
//todo implement dynamic braking
|
||||
|
||||
if (Position < -MaxIncrement || Position > MaxIncrement)
|
||||
if (position < -MaxIncrement || position > MaxIncrement)
|
||||
{
|
||||
throw new ASCOM.InvalidValueException($"position out of range {-MaxIncrement} < {Position} < {MaxIncrement}");
|
||||
throw new InvalidValueException($"position out of range {-MaxIncrement} < {position} < {MaxIncrement}");
|
||||
}
|
||||
|
||||
if (Position == 0)
|
||||
if (position == 0)
|
||||
return;
|
||||
|
||||
if (Position > 0)
|
||||
if (position > 0)
|
||||
{
|
||||
//desired move direction is out
|
||||
MoveFocuser(true, Math.Abs(Position));
|
||||
MoveFocuser(true, Math.Abs(position));
|
||||
}
|
||||
else
|
||||
{
|
||||
//desired move direction is in
|
||||
MoveFocuser(false, Math.Abs(Position));
|
||||
MoveFocuser(false, Math.Abs(position));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,21 +430,14 @@ namespace ASCOM.Meade.net
|
||||
});
|
||||
}
|
||||
|
||||
public int Position
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new ASCOM.PropertyNotImplementedException("Position", false);
|
||||
//return focuserPosition; // Return the focuser position
|
||||
}
|
||||
}
|
||||
public int Position => throw new PropertyNotImplementedException("Position", false);
|
||||
|
||||
public double StepSize
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("StepSize Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("StepSize", false);
|
||||
Tl.LogMessage("StepSize Get", "Not implemented");
|
||||
throw new PropertyNotImplementedException("StepSize", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,13 +445,13 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("TempComp Get", false.ToString());
|
||||
Tl.LogMessage("TempComp Get", false.ToString());
|
||||
return false;
|
||||
}
|
||||
set
|
||||
{
|
||||
tl.LogMessage("TempComp Set", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("TempComp", false);
|
||||
Tl.LogMessage("TempComp Set", "Not implemented");
|
||||
throw new PropertyNotImplementedException("TempComp", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -466,7 +459,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("TempCompAvailable Get", false.ToString());
|
||||
Tl.LogMessage("TempCompAvailable Get", false.ToString());
|
||||
return false; // Temperature compensation is not available in this driver
|
||||
}
|
||||
}
|
||||
@@ -475,8 +468,8 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
tl.LogMessage("Temperature Get", "Not implemented");
|
||||
throw new ASCOM.PropertyNotImplementedException("Temperature", false);
|
||||
Tl.LogMessage("Temperature Get", "Not implemented");
|
||||
throw new PropertyNotImplementedException("Temperature", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -496,18 +489,18 @@ namespace ASCOM.Meade.net
|
||||
/// This is harmless if the driver is already registered/unregistered.
|
||||
/// </summary>
|
||||
/// <param name="bRegister">If <c>true</c>, registers the driver, otherwise unregisters it.</param>
|
||||
private static void RegUnregASCOM(bool bRegister)
|
||||
private static void RegUnregAscom(bool bRegister)
|
||||
{
|
||||
using (var P = new ASCOM.Utilities.Profile())
|
||||
using (var p = new Profile())
|
||||
{
|
||||
P.DeviceType = "Focuser";
|
||||
p.DeviceType = "Focuser";
|
||||
if (bRegister)
|
||||
{
|
||||
P.Register(driverID, driverDescription);
|
||||
p.Register(DriverId, DriverDescription);
|
||||
}
|
||||
else
|
||||
{
|
||||
P.Unregister(driverID);
|
||||
p.Unregister(DriverId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -530,9 +523,9 @@ namespace ASCOM.Meade.net
|
||||
/// This technique should mean that it is never necessary to manually register a driver with ASCOM.
|
||||
/// </remarks>
|
||||
[ComRegisterFunction]
|
||||
public static void RegisterASCOM(Type t)
|
||||
public static void RegisterAscom(Type t)
|
||||
{
|
||||
RegUnregASCOM(true);
|
||||
RegUnregAscom(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -553,9 +546,9 @@ namespace ASCOM.Meade.net
|
||||
/// This technique should mean that it is never necessary to manually unregister a driver from ASCOM.
|
||||
/// </remarks>
|
||||
[ComUnregisterFunction]
|
||||
public static void UnregisterASCOM(Type t)
|
||||
public static void UnregisterAscom(Type t)
|
||||
{
|
||||
RegUnregASCOM(false);
|
||||
RegUnregAscom(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -573,7 +566,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
if (!IsConnected)
|
||||
{
|
||||
throw new ASCOM.NotConnectedException(message);
|
||||
throw new NotConnectedException(message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,8 +576,8 @@ namespace ASCOM.Meade.net
|
||||
internal void ReadProfile()
|
||||
{
|
||||
var profileProperties = _sharedResourcesWrapper.ReadProfile();
|
||||
tl.Enabled = profileProperties.TraceLogger;
|
||||
comPort = profileProperties.ComPort;
|
||||
Tl.Enabled = profileProperties.TraceLogger;
|
||||
_comPort = profileProperties.ComPort;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -596,7 +589,7 @@ namespace ASCOM.Meade.net
|
||||
internal static void LogMessage(string identifier, string message, params object[] args)
|
||||
{
|
||||
var msg = string.Format(message, args);
|
||||
tl.LogMessage(identifier, msg);
|
||||
Tl.LogMessage(identifier, msg);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -35,5 +34,5 @@ using System.Runtime.InteropServices;
|
||||
// by using the '*' as shown below:
|
||||
//
|
||||
// TODO - Set your driver's version here
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
+59
-69
@@ -33,43 +33,43 @@ namespace ASCOM.Meade.net
|
||||
#region Access to ole32.dll functions for class factories
|
||||
|
||||
// Define two common GUID objects for public usage.
|
||||
public static Guid IID_IUnknown = new Guid("{00000000-0000-0000-C000-000000000046}");
|
||||
public static Guid IID_IDispatch = new Guid("{00020400-0000-0000-C000-000000000046}");
|
||||
private static readonly Guid _iidIUnknown = new Guid("{00000000-0000-0000-C000-000000000046}");
|
||||
private static readonly Guid _iidIDispatch = new Guid("{00020400-0000-0000-C000-000000000046}");
|
||||
|
||||
[Flags]
|
||||
enum CLSCTX : uint
|
||||
enum Clsctx : uint
|
||||
{
|
||||
CLSCTX_INPROC_SERVER = 0x1,
|
||||
CLSCTX_INPROC_HANDLER = 0x2,
|
||||
CLSCTX_LOCAL_SERVER = 0x4,
|
||||
CLSCTX_INPROC_SERVER16 = 0x8,
|
||||
CLSCTX_REMOTE_SERVER = 0x10,
|
||||
CLSCTX_INPROC_HANDLER16 = 0x20,
|
||||
CLSCTX_RESERVED1 = 0x40,
|
||||
CLSCTX_RESERVED2 = 0x80,
|
||||
CLSCTX_RESERVED3 = 0x100,
|
||||
CLSCTX_RESERVED4 = 0x200,
|
||||
CLSCTX_NO_CODE_DOWNLOAD = 0x400,
|
||||
CLSCTX_RESERVED5 = 0x800,
|
||||
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
|
||||
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
|
||||
CLSCTX_NO_FAILURE_LOG = 0x4000,
|
||||
CLSCTX_DISABLE_AAA = 0x8000,
|
||||
CLSCTX_ENABLE_AAA = 0x10000,
|
||||
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
|
||||
CLSCTX_INPROC = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
|
||||
CLSCTX_SERVER = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER,
|
||||
CLSCTX_ALL = CLSCTX_SERVER | CLSCTX_INPROC_HANDLER
|
||||
ClsctxInprocServer = 0x1,
|
||||
ClsctxInprocHandler = 0x2,
|
||||
ClsctxLocalServer = 0x4,
|
||||
ClsctxInprocServer16 = 0x8,
|
||||
ClsctxRemoteServer = 0x10,
|
||||
ClsctxInprocHandler16 = 0x20,
|
||||
ClsctxReserved1 = 0x40,
|
||||
ClsctxReserved2 = 0x80,
|
||||
ClsctxReserved3 = 0x100,
|
||||
ClsctxReserved4 = 0x200,
|
||||
ClsctxNoCodeDownload = 0x400,
|
||||
ClsctxReserved5 = 0x800,
|
||||
ClsctxNoCustomMarshal = 0x1000,
|
||||
ClsctxEnableCodeDownload = 0x2000,
|
||||
ClsctxNoFailureLog = 0x4000,
|
||||
ClsctxDisableAaa = 0x8000,
|
||||
ClsctxEnableAaa = 0x10000,
|
||||
ClsctxFromDefaultContext = 0x20000,
|
||||
ClsctxInproc = ClsctxInprocServer | ClsctxInprocHandler,
|
||||
ClsctxServer = ClsctxInprocServer | ClsctxLocalServer | ClsctxRemoteServer,
|
||||
ClsctxAll = ClsctxServer | ClsctxInprocHandler
|
||||
}
|
||||
|
||||
[Flags]
|
||||
enum REGCLS : uint
|
||||
enum Regcls : uint
|
||||
{
|
||||
REGCLS_SINGLEUSE = 0,
|
||||
REGCLS_MULTIPLEUSE = 1,
|
||||
REGCLS_MULTI_SEPARATE = 2,
|
||||
REGCLS_SUSPENDED = 4,
|
||||
REGCLS_SURROGATE = 8
|
||||
RegclsSingleuse = 0,
|
||||
RegclsMultipleuse = 1,
|
||||
RegclsMultiSeparate = 2,
|
||||
RegclsSuspended = 4,
|
||||
RegclsSurrogate = 8
|
||||
}
|
||||
//
|
||||
// CoRegisterClassObject() is used to register a Class Factory
|
||||
@@ -109,70 +109,60 @@ namespace ASCOM.Meade.net
|
||||
|
||||
#region Constructor and Private ClassFactory Data
|
||||
|
||||
protected Type m_ClassType;
|
||||
protected Guid m_ClassId;
|
||||
protected ArrayList m_InterfaceTypes;
|
||||
protected uint m_ClassContext;
|
||||
protected uint m_Flags;
|
||||
protected UInt32 m_locked = 0;
|
||||
protected uint m_Cookie;
|
||||
protected string m_progid;
|
||||
private readonly Type _mClassType;
|
||||
private Guid _mClassId;
|
||||
private readonly ArrayList _mInterfaceTypes;
|
||||
private UInt32 _mLocked = 0;
|
||||
private uint _mCookie;
|
||||
private readonly string _mProgid;
|
||||
|
||||
public ClassFactory(Type type)
|
||||
{
|
||||
if (type == null)
|
||||
throw new ArgumentNullException("type");
|
||||
m_ClassType = type;
|
||||
_mClassType = type;
|
||||
|
||||
//PWGS Get the ProgID from the MetaData
|
||||
m_progid = Marshal.GenerateProgIdForType(type);
|
||||
m_ClassId = Marshal.GenerateGuidForType(type); // Should be nailed down by [Guid(...)]
|
||||
m_ClassContext = (uint)CLSCTX.CLSCTX_LOCAL_SERVER; // Default
|
||||
m_Flags = (uint)REGCLS.REGCLS_MULTIPLEUSE | // Default
|
||||
(uint)REGCLS.REGCLS_SUSPENDED;
|
||||
m_InterfaceTypes = new ArrayList();
|
||||
_mProgid = Marshal.GenerateProgIdForType(type);
|
||||
_mClassId = Marshal.GenerateGuidForType(type); // Should be nailed down by [Guid(...)]
|
||||
ClassContext = (uint)Clsctx.ClsctxLocalServer; // Default
|
||||
Flags = (uint)Regcls.RegclsMultipleuse | // Default
|
||||
(uint)Regcls.RegclsSuspended;
|
||||
_mInterfaceTypes = new ArrayList();
|
||||
foreach (Type T in type.GetInterfaces()) // Save all of the implemented interfaces
|
||||
m_InterfaceTypes.Add(T);
|
||||
_mInterfaceTypes.Add(T);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Common ClassFactory Methods
|
||||
public uint ClassContext
|
||||
{
|
||||
get { return m_ClassContext; }
|
||||
set { m_ClassContext = value; }
|
||||
}
|
||||
public uint ClassContext { get; }
|
||||
|
||||
public Guid ClassId
|
||||
{
|
||||
get { return m_ClassId; }
|
||||
set { m_ClassId = value; }
|
||||
get => _mClassId;
|
||||
set => _mClassId = value;
|
||||
}
|
||||
|
||||
public uint Flags
|
||||
{
|
||||
get { return m_Flags; }
|
||||
set { m_Flags = value; }
|
||||
}
|
||||
public uint Flags { get; }
|
||||
|
||||
public bool RegisterClassObject()
|
||||
{
|
||||
// Register the class factory
|
||||
int i = CoRegisterClassObject
|
||||
(
|
||||
ref m_ClassId,
|
||||
ref _mClassId,
|
||||
this,
|
||||
m_ClassContext,
|
||||
m_Flags,
|
||||
out m_Cookie
|
||||
ClassContext,
|
||||
Flags,
|
||||
out _mCookie
|
||||
);
|
||||
return (i == 0);
|
||||
}
|
||||
|
||||
public bool RevokeClassObject()
|
||||
{
|
||||
int i = CoRevokeClassObject(m_Cookie);
|
||||
int i = CoRevokeClassObject(_mCookie);
|
||||
return (i == 0);
|
||||
}
|
||||
|
||||
@@ -201,25 +191,25 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
// Handle specific requests for implemented interfaces
|
||||
//
|
||||
foreach (Type iType in m_InterfaceTypes)
|
||||
foreach (Type iType in _mInterfaceTypes)
|
||||
{
|
||||
if (riid == Marshal.GenerateGuidForType(iType))
|
||||
{
|
||||
ppvObject = Marshal.GetComInterfaceForObject(Activator.CreateInstance(m_ClassType), iType);
|
||||
ppvObject = Marshal.GetComInterfaceForObject(Activator.CreateInstance(_mClassType), iType);
|
||||
return;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Handle requests for IDispatch or IUnknown on the class
|
||||
//
|
||||
if (riid == IID_IDispatch)
|
||||
if (riid == _iidIDispatch)
|
||||
{
|
||||
ppvObject = Marshal.GetIDispatchForObject(Activator.CreateInstance(m_ClassType));
|
||||
ppvObject = Marshal.GetIDispatchForObject(Activator.CreateInstance(_mClassType));
|
||||
return;
|
||||
}
|
||||
else if (riid == IID_IUnknown)
|
||||
else if (riid == _iidIUnknown)
|
||||
{
|
||||
ppvObject = Marshal.GetIUnknownForObject(Activator.CreateInstance(m_ClassType));
|
||||
ppvObject = Marshal.GetIUnknownForObject(Activator.CreateInstance(_mClassType));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -8,35 +8,35 @@ namespace ASCOM.Meade.net
|
||||
/// </summary>
|
||||
class GarbageCollection
|
||||
{
|
||||
protected bool m_bContinueThread;
|
||||
protected bool m_GCWatchStopped;
|
||||
protected int m_iInterval;
|
||||
protected ManualResetEvent m_EventThreadEnded;
|
||||
private bool _mbContinueThread;
|
||||
private bool _mGcWatchStopped;
|
||||
private readonly int _miInterval;
|
||||
private readonly ManualResetEvent _mEventThreadEnded;
|
||||
|
||||
public GarbageCollection(int iInterval)
|
||||
{
|
||||
m_bContinueThread = true;
|
||||
m_GCWatchStopped = false;
|
||||
m_iInterval = iInterval;
|
||||
m_EventThreadEnded = new ManualResetEvent(false);
|
||||
_mbContinueThread = true;
|
||||
_mGcWatchStopped = false;
|
||||
_miInterval = iInterval;
|
||||
_mEventThreadEnded = new ManualResetEvent(false);
|
||||
}
|
||||
|
||||
public void GCWatch()
|
||||
public void GcWatch()
|
||||
{
|
||||
// Pause for a moment to provide a delay to make threads more apparent.
|
||||
while (ContinueThread())
|
||||
{
|
||||
GC.Collect();
|
||||
Thread.Sleep(m_iInterval);
|
||||
Thread.Sleep(_miInterval);
|
||||
}
|
||||
m_EventThreadEnded.Set();
|
||||
_mEventThreadEnded.Set();
|
||||
}
|
||||
|
||||
protected bool ContinueThread()
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
return m_bContinueThread;
|
||||
return _mbContinueThread;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,14 +44,14 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
m_bContinueThread = false;
|
||||
_mbContinueThread = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void WaitForThreadToStop()
|
||||
{
|
||||
m_EventThreadEnded.WaitOne();
|
||||
m_EventThreadEnded.Reset();
|
||||
_mEventThreadEnded.WaitOne();
|
||||
_mEventThreadEnded.Reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+87
-90
@@ -15,17 +15,14 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Reflection;
|
||||
using ASCOM.Utilities;
|
||||
using Microsoft.Win32;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Security.Principal;
|
||||
using System.Diagnostics;
|
||||
using ASCOM;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
{
|
||||
@@ -34,52 +31,52 @@ namespace ASCOM.Meade.net
|
||||
|
||||
#region Access to kernel32.dll, user32.dll, and ole32.dll functions
|
||||
[Flags]
|
||||
enum CLSCTX : uint
|
||||
enum Clsctx : uint
|
||||
{
|
||||
CLSCTX_INPROC_SERVER = 0x1,
|
||||
CLSCTX_INPROC_HANDLER = 0x2,
|
||||
CLSCTX_LOCAL_SERVER = 0x4,
|
||||
CLSCTX_INPROC_SERVER16 = 0x8,
|
||||
CLSCTX_REMOTE_SERVER = 0x10,
|
||||
CLSCTX_INPROC_HANDLER16 = 0x20,
|
||||
CLSCTX_RESERVED1 = 0x40,
|
||||
CLSCTX_RESERVED2 = 0x80,
|
||||
CLSCTX_RESERVED3 = 0x100,
|
||||
CLSCTX_RESERVED4 = 0x200,
|
||||
CLSCTX_NO_CODE_DOWNLOAD = 0x400,
|
||||
CLSCTX_RESERVED5 = 0x800,
|
||||
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
|
||||
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
|
||||
CLSCTX_NO_FAILURE_LOG = 0x4000,
|
||||
CLSCTX_DISABLE_AAA = 0x8000,
|
||||
CLSCTX_ENABLE_AAA = 0x10000,
|
||||
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
|
||||
CLSCTX_INPROC = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
|
||||
CLSCTX_SERVER = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER,
|
||||
CLSCTX_ALL = CLSCTX_SERVER | CLSCTX_INPROC_HANDLER
|
||||
ClsctxInprocServer = 0x1,
|
||||
ClsctxInprocHandler = 0x2,
|
||||
ClsctxLocalServer = 0x4,
|
||||
ClsctxInprocServer16 = 0x8,
|
||||
ClsctxRemoteServer = 0x10,
|
||||
ClsctxInprocHandler16 = 0x20,
|
||||
ClsctxReserved1 = 0x40,
|
||||
ClsctxReserved2 = 0x80,
|
||||
ClsctxReserved3 = 0x100,
|
||||
ClsctxReserved4 = 0x200,
|
||||
ClsctxNoCodeDownload = 0x400,
|
||||
ClsctxReserved5 = 0x800,
|
||||
ClsctxNoCustomMarshal = 0x1000,
|
||||
ClsctxEnableCodeDownload = 0x2000,
|
||||
ClsctxNoFailureLog = 0x4000,
|
||||
ClsctxDisableAaa = 0x8000,
|
||||
ClsctxEnableAaa = 0x10000,
|
||||
ClsctxFromDefaultContext = 0x20000,
|
||||
ClsctxInproc = ClsctxInprocServer | ClsctxInprocHandler,
|
||||
ClsctxServer = ClsctxInprocServer | ClsctxLocalServer | ClsctxRemoteServer,
|
||||
ClsctxAll = ClsctxServer | ClsctxInprocHandler
|
||||
}
|
||||
|
||||
[Flags]
|
||||
enum COINIT : uint
|
||||
enum Coinit : uint
|
||||
{
|
||||
/// Initializes the thread for multi-threaded object concurrency.
|
||||
COINIT_MULTITHREADED = 0x0,
|
||||
CoinitMultithreaded = 0x0,
|
||||
/// Initializes the thread for apartment-threaded object concurrency.
|
||||
COINIT_APARTMENTTHREADED = 0x2,
|
||||
CoinitApartmentthreaded = 0x2,
|
||||
/// Disables DDE for Ole1 support.
|
||||
COINIT_DISABLE_OLE1DDE = 0x4,
|
||||
CoinitDisableOle1Dde = 0x4,
|
||||
/// Trades memory for speed.
|
||||
COINIT_SPEED_OVER_MEMORY = 0x8
|
||||
CoinitSpeedOverMemory = 0x8
|
||||
}
|
||||
|
||||
[Flags]
|
||||
enum REGCLS : uint
|
||||
enum Regcls : uint
|
||||
{
|
||||
REGCLS_SINGLEUSE = 0,
|
||||
REGCLS_MULTIPLEUSE = 1,
|
||||
REGCLS_MULTI_SEPARATE = 2,
|
||||
REGCLS_SUSPENDED = 4,
|
||||
REGCLS_SURROGATE = 8
|
||||
RegclsSingleuse = 0,
|
||||
RegclsMultipleuse = 1,
|
||||
RegclsMultiSeparate = 2,
|
||||
RegclsSuspended = 4,
|
||||
RegclsSurrogate = 8
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +94,7 @@ namespace ASCOM.Meade.net
|
||||
// We will need this API to post a WM_QUIT message to the main
|
||||
// thread in order to terminate this application.
|
||||
[DllImport("user32.dll")]
|
||||
static extern bool PostThreadMessage(uint idThread, uint Msg, UIntPtr wParam,
|
||||
static extern bool PostThreadMessage(uint idThread, uint msg, UIntPtr wParam,
|
||||
IntPtr lParam);
|
||||
|
||||
// GetCurrentThreadId() allows us to obtain the thread id of the
|
||||
@@ -108,21 +105,21 @@ namespace ASCOM.Meade.net
|
||||
#endregion
|
||||
|
||||
#region Private Data
|
||||
private static int objsInUse; // Keeps a count on the total number of objects alive.
|
||||
private static int serverLocks; // Keeps a lock count on this application.
|
||||
private static frmMain s_MainForm = null; // Reference to our main form
|
||||
private static ArrayList s_ComObjectAssys; // Dynamically loaded assemblies containing served COM objects
|
||||
private static ArrayList s_ComObjectTypes; // Served COM object types
|
||||
private static ArrayList s_ClassFactories; // Served COM object class factories
|
||||
private static string s_appId = "{4e68ec46-5ffc-49e7-b298-38a548df0bfd}"; // Our AppId
|
||||
private static readonly Object lockObject = new object();
|
||||
private static int _objsInUse; // Keeps a count on the total number of objects alive.
|
||||
private static int _serverLocks; // Keeps a lock count on this application.
|
||||
private static FrmMain _sMainForm = null; // Reference to our main form
|
||||
private static ArrayList _sComObjectAssys; // Dynamically loaded assemblies containing served COM objects
|
||||
private static ArrayList _sComObjectTypes; // Served COM object types
|
||||
private static ArrayList _sClassFactories; // Served COM object class factories
|
||||
private static string _sAppId = "{4e68ec46-5ffc-49e7-b298-38a548df0bfd}"; // Our AppId
|
||||
private static readonly Object LockObject = new object();
|
||||
#endregion
|
||||
|
||||
// This property returns the main thread's id.
|
||||
public static uint MainThreadId { get; private set; } // Stores the main thread's thread id.
|
||||
|
||||
// Used to tell if started by COM or manually
|
||||
public static bool StartedByCOM { get; private set; } // True if server started by COM (-embedding)
|
||||
public static bool StartedByCom { get; private set; } // True if server started by COM (-embedding)
|
||||
|
||||
|
||||
#region Server Lock, Object Counting, and AutoQuit on COM startup
|
||||
@@ -131,9 +128,9 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
return objsInUse;
|
||||
return _objsInUse;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -142,14 +139,14 @@ namespace ASCOM.Meade.net
|
||||
public static int CountObject()
|
||||
{
|
||||
// Increment the global count of objects.
|
||||
return Interlocked.Increment(ref objsInUse);
|
||||
return Interlocked.Increment(ref _objsInUse);
|
||||
}
|
||||
|
||||
// This method performs a thread-safe decrementation the objects count.
|
||||
public static int UncountObject()
|
||||
{
|
||||
// Decrement the global count of objects.
|
||||
return Interlocked.Decrement(ref objsInUse);
|
||||
return Interlocked.Decrement(ref _objsInUse);
|
||||
}
|
||||
|
||||
// Returns the current server lock count.
|
||||
@@ -157,9 +154,9 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
return serverLocks;
|
||||
return _serverLocks;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -169,7 +166,7 @@ namespace ASCOM.Meade.net
|
||||
public static int CountLock()
|
||||
{
|
||||
// Increment the global lock count of this server.
|
||||
return Interlocked.Increment(ref serverLocks);
|
||||
return Interlocked.Increment(ref _serverLocks);
|
||||
}
|
||||
|
||||
// This method performs a thread-safe decrementation the
|
||||
@@ -177,7 +174,7 @@ namespace ASCOM.Meade.net
|
||||
public static int UncountLock()
|
||||
{
|
||||
// Decrement the global lock count of this server.
|
||||
return Interlocked.Decrement(ref serverLocks);
|
||||
return Interlocked.Decrement(ref _serverLocks);
|
||||
}
|
||||
|
||||
// AttemptToTerminateServer() will check to see if the objects count and the server
|
||||
@@ -189,11 +186,11 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
public static void ExitIf()
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
if ((ObjectsCount <= 0) && (ServerLockCount <= 0))
|
||||
{
|
||||
if (StartedByCOM)
|
||||
if (StartedByCom)
|
||||
{
|
||||
UIntPtr wParam = new UIntPtr(0);
|
||||
IntPtr lParam = new IntPtr(0);
|
||||
@@ -216,8 +213,8 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
private static bool LoadComObjectAssemblies()
|
||||
{
|
||||
s_ComObjectAssys = new ArrayList();
|
||||
s_ComObjectTypes = new ArrayList();
|
||||
_sComObjectAssys = new ArrayList();
|
||||
_sComObjectTypes = new ArrayList();
|
||||
|
||||
// put everything into one folder, the same as the server.
|
||||
string assyPath = Assembly.GetEntryAssembly().Location;
|
||||
@@ -246,8 +243,8 @@ namespace ASCOM.Meade.net
|
||||
if (attrbutes.Length > 0)
|
||||
{
|
||||
//MessageBox.Show("Adding Type: " + type.Name + " " + type.FullName);
|
||||
s_ComObjectTypes.Add(type); //PWGS - much simpler
|
||||
s_ComObjectAssys.Add(so);
|
||||
_sComObjectTypes.Add(type); //PWGS - much simpler
|
||||
_sComObjectAssys.Add(so);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -342,10 +339,10 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
// HKCR\APPID\appid
|
||||
//
|
||||
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey("APPID\\" + s_appId))
|
||||
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey("APPID\\" + _sAppId))
|
||||
{
|
||||
key.SetValue(null, assyDescription);
|
||||
key.SetValue("AppID", s_appId);
|
||||
key.SetValue("AppID", _sAppId);
|
||||
key.SetValue("AuthenticationLevel", 1, RegistryValueKind.DWord);
|
||||
}
|
||||
//
|
||||
@@ -354,7 +351,7 @@ namespace ASCOM.Meade.net
|
||||
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format("APPID\\{0}",
|
||||
Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\') + 1))))
|
||||
{
|
||||
key.SetValue("AppID", s_appId);
|
||||
key.SetValue("AppID", _sAppId);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -370,7 +367,7 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
// For each of the driver assemblies
|
||||
//
|
||||
foreach (Type type in s_ComObjectTypes)
|
||||
foreach (Type type in _sComObjectTypes)
|
||||
{
|
||||
bool bFail = false;
|
||||
try
|
||||
@@ -386,7 +383,7 @@ namespace ASCOM.Meade.net
|
||||
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format("CLSID\\{0}", clsid)))
|
||||
{
|
||||
key.SetValue(null, progid); // Could be assyTitle/Desc??, but .NET components show ProgId here
|
||||
key.SetValue("AppId", s_appId);
|
||||
key.SetValue("AppId", _sAppId);
|
||||
using (RegistryKey key2 = key.CreateSubKey("Implemented Categories"))
|
||||
{
|
||||
key2.CreateSubKey("{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}");
|
||||
@@ -420,10 +417,10 @@ namespace ASCOM.Meade.net
|
||||
// Pull the display name from the ServedClassName attribute.
|
||||
attr = Attribute.GetCustomAttribute(type, typeof(ServedClassNameAttribute)); //PWGS Changed to search type for attribute rather than assembly
|
||||
string chooserName = ((ServedClassNameAttribute)attr).DisplayName ?? "MultiServer";
|
||||
using (var P = new ASCOM.Utilities.Profile())
|
||||
using (var p = new Profile())
|
||||
{
|
||||
P.DeviceType = deviceType;
|
||||
P.Register(progid, chooserName);
|
||||
p.DeviceType = deviceType;
|
||||
p.Register(progid, chooserName);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -456,14 +453,14 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
// Local server's DCOM/AppID information
|
||||
//
|
||||
Registry.ClassesRoot.DeleteSubKey(string.Format("APPID\\{0}", s_appId), false);
|
||||
Registry.ClassesRoot.DeleteSubKey(string.Format("APPID\\{0}", _sAppId), false);
|
||||
Registry.ClassesRoot.DeleteSubKey(string.Format("APPID\\{0}",
|
||||
Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\') + 1)), false);
|
||||
|
||||
//
|
||||
// For each of the driver assemblies
|
||||
//
|
||||
foreach (Type type in s_ComObjectTypes)
|
||||
foreach (Type type in _sComObjectTypes)
|
||||
{
|
||||
string clsid = Marshal.GenerateGuidForType(type).ToString("B");
|
||||
string progid = Marshal.GenerateProgIdForType(type);
|
||||
@@ -490,10 +487,10 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
// ASCOM
|
||||
//
|
||||
using (var P = new ASCOM.Utilities.Profile())
|
||||
using (var p = new Profile())
|
||||
{
|
||||
P.DeviceType = deviceType;
|
||||
P.Unregister(progid);
|
||||
p.DeviceType = deviceType;
|
||||
p.Unregister(progid);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
@@ -509,11 +506,11 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
private static bool RegisterClassFactories()
|
||||
{
|
||||
s_ClassFactories = new ArrayList();
|
||||
foreach (Type type in s_ComObjectTypes)
|
||||
_sClassFactories = new ArrayList();
|
||||
foreach (Type type in _sComObjectTypes)
|
||||
{
|
||||
ClassFactory factory = new ClassFactory(type); // Use default context & flags
|
||||
s_ClassFactories.Add(factory);
|
||||
_sClassFactories.Add(factory);
|
||||
if (!factory.RegisterClassObject())
|
||||
{
|
||||
MessageBox.Show("Failed to register class factory for " + type.Name,
|
||||
@@ -528,7 +525,7 @@ namespace ASCOM.Meade.net
|
||||
private static void RevokeClassFactories()
|
||||
{
|
||||
ClassFactory.SuspendClassObjects(); // Prevent race conditions
|
||||
foreach (ClassFactory factory in s_ClassFactories)
|
||||
foreach (ClassFactory factory in _sClassFactories)
|
||||
factory.RevokeClassObject();
|
||||
}
|
||||
#endregion
|
||||
@@ -552,7 +549,7 @@ namespace ASCOM.Meade.net
|
||||
switch (args[0].ToLower())
|
||||
{
|
||||
case "-embedding":
|
||||
StartedByCOM = true; // Indicate COM started us
|
||||
StartedByCom = true; // Indicate COM started us
|
||||
break;
|
||||
|
||||
case "-register":
|
||||
@@ -578,7 +575,7 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
}
|
||||
else
|
||||
StartedByCOM = false;
|
||||
StartedByCom = false;
|
||||
|
||||
return bRet;
|
||||
}
|
||||
@@ -598,24 +595,24 @@ namespace ASCOM.Meade.net
|
||||
if (!ProcessArguments(args)) return; // Register/Unregister
|
||||
|
||||
// Initialize critical member variables.
|
||||
objsInUse = 0;
|
||||
serverLocks = 0;
|
||||
_objsInUse = 0;
|
||||
_serverLocks = 0;
|
||||
MainThreadId = GetCurrentThreadId();
|
||||
Thread.CurrentThread.Name = "Main Thread";
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
s_MainForm = new frmMain();
|
||||
if (StartedByCOM) s_MainForm.WindowState = FormWindowState.Minimized;
|
||||
_sMainForm = new FrmMain();
|
||||
if (StartedByCom) _sMainForm.WindowState = FormWindowState.Minimized;
|
||||
|
||||
// Register the class factories of the served objects
|
||||
RegisterClassFactories();
|
||||
|
||||
// Start up the garbage collection thread.
|
||||
GarbageCollection GarbageCollector = new GarbageCollection(1000);
|
||||
Thread GCThread = new Thread(new ThreadStart(GarbageCollector.GCWatch));
|
||||
GCThread.Name = "Garbage Collection Thread";
|
||||
GCThread.Start();
|
||||
GarbageCollection garbageCollector = new GarbageCollection(1000);
|
||||
Thread gcThread = new Thread(new ThreadStart(garbageCollector.GcWatch));
|
||||
gcThread.Name = "Garbage Collection Thread";
|
||||
gcThread.Start();
|
||||
|
||||
//
|
||||
// Start the message loop. This serializes incoming calls to our
|
||||
@@ -623,7 +620,7 @@ namespace ASCOM.Meade.net
|
||||
//
|
||||
try
|
||||
{
|
||||
Application.Run(s_MainForm);
|
||||
Application.Run(_sMainForm);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -633,8 +630,8 @@ namespace ASCOM.Meade.net
|
||||
RevokeClassFactories();
|
||||
|
||||
// Now stop the Garbage Collector thread.
|
||||
GarbageCollector.StopThread();
|
||||
GarbageCollector.WaitForThreadToStop();
|
||||
garbageCollector.StopThread();
|
||||
garbageCollector.WaitForThreadToStop();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace ASCOM.Meade.net.Localization
|
||||
internal class LocalisationHelper
|
||||
{
|
||||
private const string LocalizationNamespace = "LocalisationTest.Localization.Resources.Localization";
|
||||
ResourceManager _resourceManager;
|
||||
private readonly ResourceManager _resourceManager;
|
||||
|
||||
public LocalisationHelper()
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -21,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
[assembly: ComVisibleAttribute(false)]
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ASCOM.Utilities;
|
||||
using ASCOM.Meade.net;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
{
|
||||
@@ -29,12 +24,12 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
System.Diagnostics.Process.Start("http://ascom-standards.org/");
|
||||
}
|
||||
catch (System.ComponentModel.Win32Exception noBrowser)
|
||||
catch (Win32Exception noBrowser)
|
||||
{
|
||||
if (noBrowser.ErrorCode == -2147467259)
|
||||
MessageBox.Show(noBrowser.Message);
|
||||
}
|
||||
catch (System.Exception other)
|
||||
catch (Exception other)
|
||||
{
|
||||
MessageBox.Show(other.Message);
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ASCOM;
|
||||
using ASCOM.Utilities;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
@@ -32,10 +30,10 @@ namespace ASCOM.Meade.net
|
||||
public static class SharedResources
|
||||
{
|
||||
// object used for locking to prevent multiple drivers accessing common code at the same time
|
||||
private static readonly object lockObject = new object();
|
||||
private static readonly object LockObject = new object();
|
||||
|
||||
// Shared serial port. This will allow multiple drivers to use one single serial port.
|
||||
private static ASCOM.Utilities.Serial s_sharedSerial; // Shared serial port
|
||||
private static Serial _sSharedSerial; // Shared serial port
|
||||
|
||||
//
|
||||
// Public access to shared resources
|
||||
@@ -60,7 +58,7 @@ namespace ASCOM.Meade.net
|
||||
/// <summary>
|
||||
/// Shared serial port
|
||||
/// </summary>
|
||||
public static ASCOM.Utilities.Serial SharedSerial => s_sharedSerial ?? (s_sharedSerial = new ASCOM.Utilities.Serial());
|
||||
public static Serial SharedSerial => _sSharedSerial ?? (_sSharedSerial = new Serial());
|
||||
|
||||
/// <summary>
|
||||
/// number of connections to the shared serial port
|
||||
@@ -69,7 +67,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static void SendBlind(string message)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
SharedSerial.ClearBuffers();
|
||||
SharedSerial.Transmit(message);
|
||||
@@ -92,7 +90,7 @@ namespace ASCOM.Meade.net
|
||||
/// <returns></returns>
|
||||
public static string SendString(string message)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
SharedSerial.ClearBuffers();
|
||||
SharedSerial.Transmit(message);
|
||||
@@ -102,7 +100,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static string SendChar(string message)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
SharedSerial.ClearBuffers();
|
||||
SharedSerial.Transmit(message);
|
||||
@@ -112,7 +110,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static string ReadTerminated()
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
return SharedSerial.ReceiveTerminated("#");
|
||||
}
|
||||
@@ -130,7 +128,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
set
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
@@ -148,47 +146,47 @@ namespace ASCOM.Meade.net
|
||||
}
|
||||
}
|
||||
}
|
||||
get { return SharedSerial.Connected; }
|
||||
get => SharedSerial.Connected;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Profile
|
||||
|
||||
internal static string driverID = "ASCOM.MeadeGeneric.Telescope";
|
||||
private const string DriverId = "ASCOM.MeadeGeneric.Telescope";
|
||||
|
||||
// Constants used for Profile persistence
|
||||
internal static string comPortProfileName = "COM Port";
|
||||
internal static string traceStateProfileName = "Trace Level";
|
||||
private const string ComPortProfileName = "COM Port";
|
||||
private const string TraceStateProfileName = "Trace Level";
|
||||
|
||||
public static void WriteProfile(ProfileProperties profileProperties)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
using (Profile driverProfile = new Profile())
|
||||
{
|
||||
driverProfile.DeviceType = "Telescope";
|
||||
driverProfile.WriteValue(driverID, traceStateProfileName, profileProperties.TraceLogger.ToString());
|
||||
driverProfile.WriteValue(driverID, comPortProfileName, profileProperties.ComPort);
|
||||
driverProfile.WriteValue(DriverId, TraceStateProfileName, profileProperties.TraceLogger.ToString());
|
||||
driverProfile.WriteValue(DriverId, ComPortProfileName, profileProperties.ComPort);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly string comPortDefault = "COM1";
|
||||
internal static string traceStateDefault = "false";
|
||||
private const string ComPortDefault = "COM1";
|
||||
private const string TraceStateDefault = "false";
|
||||
|
||||
public static ProfileProperties ReadProfile()
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
ProfileProperties profileProperties = new ProfileProperties();
|
||||
using (Profile driverProfile = new Profile())
|
||||
{
|
||||
driverProfile.DeviceType = "Telescope";
|
||||
profileProperties.ComPort =
|
||||
driverProfile.GetValue(driverID, comPortProfileName, string.Empty, comPortDefault);
|
||||
profileProperties.TraceLogger = Convert.ToBoolean(driverProfile.GetValue(driverID,
|
||||
traceStateProfileName, string.Empty, traceStateDefault));
|
||||
driverProfile.GetValue(DriverId, ComPortProfileName, string.Empty, ComPortDefault);
|
||||
profileProperties.TraceLogger = Convert.ToBoolean(driverProfile.GetValue(DriverId,
|
||||
TraceStateProfileName, string.Empty, TraceStateDefault));
|
||||
}
|
||||
|
||||
return profileProperties;
|
||||
@@ -211,14 +209,14 @@ namespace ASCOM.Meade.net
|
||||
|
||||
var profileProperties = ReadProfile();
|
||||
|
||||
using (SetupDialogForm F = new SetupDialogForm())
|
||||
using (SetupDialogForm f = new SetupDialogForm())
|
||||
{
|
||||
F.SetProfile(profileProperties);
|
||||
f.SetProfile(profileProperties);
|
||||
|
||||
var result = F.ShowDialog();
|
||||
var result = f.ShowDialog();
|
||||
if (result == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
profileProperties = F.GetProfile();
|
||||
profileProperties = f.GetProfile();
|
||||
|
||||
WriteProfile(profileProperties); // Persist device configuration values to the ASCOM Profile store
|
||||
}
|
||||
@@ -246,7 +244,7 @@ namespace ASCOM.Meade.net
|
||||
/// The Key is the connection number that identifies the device, it could be the COM port name,
|
||||
/// USB ID or IP Address, the Value is the DeviceHardware class
|
||||
/// </summary>
|
||||
private static Dictionary<string, DeviceHardware> connectedDevices = new Dictionary<string, DeviceHardware>();
|
||||
private static readonly Dictionary<string, DeviceHardware> _connectedDevices = new Dictionary<string, DeviceHardware>();
|
||||
|
||||
/// <summary>
|
||||
/// This is called in the driver Connect(true) property,
|
||||
@@ -255,26 +253,26 @@ namespace ASCOM.Meade.net
|
||||
/// <param name="deviceId"></param>
|
||||
public static void Connect(string deviceId)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
if (!connectedDevices.ContainsKey(deviceId))
|
||||
connectedDevices.Add(deviceId, new DeviceHardware());
|
||||
connectedDevices[deviceId].count++; // increment the value
|
||||
if (!_connectedDevices.ContainsKey(deviceId))
|
||||
_connectedDevices.Add(deviceId, new DeviceHardware());
|
||||
_connectedDevices[deviceId].Count++; // increment the value
|
||||
|
||||
if (deviceId == "Serial")
|
||||
{
|
||||
if (connectedDevices[deviceId].count == 1)
|
||||
if (_connectedDevices[deviceId].Count == 1)
|
||||
{
|
||||
var profileProperties = ReadProfile();
|
||||
SharedResources.SharedSerial.PortName = profileProperties.ComPort;
|
||||
SharedResources.SharedSerial.DTREnable = false;
|
||||
SharedResources.SharedSerial.RTSEnable = false;
|
||||
SharedResources.SharedSerial.DataBits = 8;
|
||||
SharedResources.SharedSerial.StopBits = SerialStopBits.One;
|
||||
SharedResources.SharedSerial.Parity = SerialParity.None;
|
||||
SharedResources.SharedSerial.Speed = SerialSpeed.ps9600;
|
||||
SharedResources.SharedSerial.Handshake = SerialHandshake.None;
|
||||
SharedResources.SharedSerial.Connected = true;
|
||||
SharedSerial.PortName = profileProperties.ComPort;
|
||||
SharedSerial.DTREnable = false;
|
||||
SharedSerial.RTSEnable = false;
|
||||
SharedSerial.DataBits = 8;
|
||||
SharedSerial.StopBits = SerialStopBits.One;
|
||||
SharedSerial.Parity = SerialParity.None;
|
||||
SharedSerial.Speed = SerialSpeed.ps9600;
|
||||
SharedSerial.Handshake = SerialHandshake.None;
|
||||
SharedSerial.Connected = true;
|
||||
|
||||
ProductName = SendString(":GVP#");
|
||||
FirmwareVersion = SendString(":GVN#");
|
||||
@@ -285,17 +283,17 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static void Disconnect(string deviceId)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
if (connectedDevices.ContainsKey(deviceId))
|
||||
if (_connectedDevices.ContainsKey(deviceId))
|
||||
{
|
||||
connectedDevices[deviceId].count--;
|
||||
if (connectedDevices[deviceId].count <= 0)
|
||||
_connectedDevices[deviceId].Count--;
|
||||
if (_connectedDevices[deviceId].Count <= 0)
|
||||
{
|
||||
connectedDevices.Remove(deviceId);
|
||||
_connectedDevices.Remove(deviceId);
|
||||
if (deviceId == "Serial")
|
||||
{
|
||||
SharedResources.SharedSerial.Connected = false;
|
||||
SharedSerial.Connected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -304,8 +302,8 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static bool IsConnected(string deviceId)
|
||||
{
|
||||
if (connectedDevices.ContainsKey(deviceId))
|
||||
return (connectedDevices[deviceId].count > 0);
|
||||
if (_connectedDevices.ContainsKey(deviceId))
|
||||
return (_connectedDevices[deviceId].Count > 0);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
@@ -314,7 +312,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static void Lock(Action action)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
action();
|
||||
}
|
||||
@@ -322,7 +320,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
public static T Lock<T>(Func<T> func)
|
||||
{
|
||||
lock (lockObject)
|
||||
lock (LockObject)
|
||||
{
|
||||
return func();
|
||||
}
|
||||
@@ -336,7 +334,7 @@ namespace ASCOM.Meade.net
|
||||
{
|
||||
private int _count;
|
||||
|
||||
internal int count
|
||||
internal int Count
|
||||
{
|
||||
set => _count = value;
|
||||
get => _count;
|
||||
@@ -344,7 +342,7 @@ namespace ASCOM.Meade.net
|
||||
|
||||
internal DeviceHardware()
|
||||
{
|
||||
count = 0;
|
||||
Count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace ASCOM.Meade.net.Wrapper
|
||||
{
|
||||
public interface ISharedResourcesWrapper
|
||||
{
|
||||
string AUTOSTAR497 { get; }
|
||||
string AUTOSTAR497_31EE { get; }
|
||||
string Autostar497 { get; }
|
||||
string Autostar49731Ee { get; }
|
||||
|
||||
string AUTOSTAR497_43EG { get;}
|
||||
string Autostar49743Eg { get;}
|
||||
|
||||
void Connect(string deviceId);
|
||||
void Disconnect(string deviceId);
|
||||
@@ -37,10 +34,10 @@ namespace ASCOM.Meade.net.Wrapper
|
||||
{
|
||||
#region AutostarProducts
|
||||
|
||||
public string AUTOSTAR497 => "Autostar";
|
||||
public string Autostar497 => "Autostar";
|
||||
|
||||
public string AUTOSTAR497_31EE => "31Ee";
|
||||
public string AUTOSTAR497_43EG => "43Eg";
|
||||
public string Autostar49731Ee => "31Ee";
|
||||
public string Autostar49743Eg => "43Eg";
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -2,7 +2,7 @@ using System;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
{
|
||||
partial class frmMain
|
||||
partial class FrmMain
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@@ -48,7 +48,7 @@ namespace ASCOM.Meade.net
|
||||
this.ClientSize = new System.Drawing.Size(233, 52);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Name = "frmMain";
|
||||
this.Name = "FrmMain";
|
||||
this.Text = "Meade.net Driver Server";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ASCOM.Meade.net
|
||||
{
|
||||
public partial class frmMain : Form
|
||||
public partial class FrmMain : Form
|
||||
{
|
||||
delegate void SetTextCallback(string text);
|
||||
|
||||
public frmMain()
|
||||
public FrmMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
@@ -9,11 +9,8 @@
|
||||
#define UseChooser
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace ASCOM
|
||||
namespace ASCOM.Meade.net
|
||||
{
|
||||
class Program
|
||||
{
|
||||
@@ -22,11 +19,11 @@ namespace ASCOM
|
||||
// Uncomment the code that's required
|
||||
#if UseChooser
|
||||
// choose the device
|
||||
string id = ASCOM.DriverAccess.Telescope.Choose("ASCOM.MeadeGeneric.Telescope");
|
||||
string id = DriverAccess.Telescope.Choose("ASCOM.MeadeGeneric.Telescope");
|
||||
if (string.IsNullOrEmpty(id))
|
||||
return;
|
||||
// create this device
|
||||
ASCOM.DriverAccess.Telescope device = new ASCOM.DriverAccess.Telescope(id);
|
||||
DriverAccess.Telescope device = new DriverAccess.Telescope(id);
|
||||
#else
|
||||
// this can be replaced by this code, it avoids the chooser and creates the driver class directly.
|
||||
ASCOM.DriverAccess.Telescope device = new ASCOM.DriverAccess.Telescope("ASCOM.Meade.net.Telescope");
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -32,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("0.7.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.0.0")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.0.0")]
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
|
||||
<foreach item="File" in="${build.output.directory}" property="fileName">
|
||||
<if test="${string::to-lower(path::get-extension(fileName)) == '.msi'}">
|
||||
<move file="${fileName}" tofile="${path::combine(path::get-directory-name(fileName), path::get-file-name-without-extension(fileName) + environment::get-variable('BUILD_NUMBER') + '.msi')}" />
|
||||
<move file="${fileName}" tofile="${path::combine(path::get-directory-name(fileName), path::get-file-name-without-extension(fileName) + '.' + environment::get-variable('BUILD_NUMBER') + '.msi')}" />
|
||||
</if>
|
||||
</foreach>
|
||||
</target>
|
||||
|
||||
Reference in New Issue
Block a user