diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 5d59eb1..b2b1e0e 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -40,6 +40,7 @@ using ASCOM.DeviceInterface; using System.Globalization; using System.Collections; using System.Reflection; +using ASCOM.Meade.net.Wrapper; namespace ASCOM.Meade.net { @@ -105,6 +106,8 @@ namespace ASCOM.Meade.net /// internal static TraceLogger tl; + private readonly ISharedResourcesWrapper _sharedResourcesWrapper; + /// /// Initializes a new instance of the class. /// Must be public for COM registration. @@ -119,6 +122,7 @@ namespace ASCOM.Meade.net _connectedState = false; // Initialise connected to false utilities = new Util(); //Initialise util object astroUtilities = new AstroUtils(); // Initialise astro utilities object + _sharedResourcesWrapper = new SharedResourcesWrapper(); //TODO: Implement your additional construction here _astroMaths = new AstroMaths(); @@ -142,7 +146,7 @@ namespace ASCOM.Meade.net public void SetupDialog() { tl.LogMessage("SetupDialog", "Opening setup dialog"); - SharedResources.SetupDialog(); + _sharedResourcesWrapper.SetupDialog(); ReadProfile(); tl.LogMessage("SetupDialog", "complete"); //// consider only showing the setup dialog if not connected @@ -180,68 +184,68 @@ namespace ASCOM.Meade.net { //Read the screen case "readdisplay": - var output = SharedResources.SendString(":ED#"); + var output = _sharedResourcesWrapper.SendString(":ED#"); return output; //top row of buttons case "enter": - SharedResources.SendBlind(":EK13#"); + _sharedResourcesWrapper.SendBlind(":EK13#"); break; case "mode": - SharedResources.SendBlind(":EK9#"); + _sharedResourcesWrapper.SendBlind(":EK9#"); break; case "longMode": - SharedResources.SendBlind(":EK11#"); + _sharedResourcesWrapper.SendBlind(":EK11#"); break; case "goto": - SharedResources.SendBlind(":EK24#"); + _sharedResourcesWrapper.SendBlind(":EK24#"); break; case "0": //light and 0 - SharedResources.SendBlind(":EK48#"); + _sharedResourcesWrapper.SendBlind(":EK48#"); break; case "1": - SharedResources.SendBlind(":EK49#"); + _sharedResourcesWrapper.SendBlind(":EK49#"); break; case "2": - SharedResources.SendBlind(":EK50#"); + _sharedResourcesWrapper.SendBlind(":EK50#"); break; case "3": - SharedResources.SendBlind(":EK51#"); + _sharedResourcesWrapper.SendBlind(":EK51#"); break; case "4": - SharedResources.SendBlind(":EK52#"); + _sharedResourcesWrapper.SendBlind(":EK52#"); break; case "5": - SharedResources.SendBlind(":EK53#"); + _sharedResourcesWrapper.SendBlind(":EK53#"); break; case "6": - SharedResources.SendBlind(":EK54#"); + _sharedResourcesWrapper.SendBlind(":EK54#"); break; case "7": - SharedResources.SendBlind(":EK55#"); + _sharedResourcesWrapper.SendBlind(":EK55#"); break; case "8": - SharedResources.SendBlind(":EK56#"); + _sharedResourcesWrapper.SendBlind(":EK56#"); break; case "9": - SharedResources.SendBlind(":EK57#"); + _sharedResourcesWrapper.SendBlind(":EK57#"); break; case "up": - SharedResources.SendBlind(":EK94#"); + _sharedResourcesWrapper.SendBlind(":EK94#"); break; case "down": - SharedResources.SendBlind(":EK118#"); + _sharedResourcesWrapper.SendBlind(":EK118#"); break; case "back": - SharedResources.SendBlind(":EK87#"); + _sharedResourcesWrapper.SendBlind(":EK87#"); break; case "forward": - SharedResources.SendBlind(":EK69#"); + _sharedResourcesWrapper.SendBlind(":EK69#"); break; case "?": - SharedResources.SendBlind(":EK63#"); + _sharedResourcesWrapper.SendBlind(":EK63#"); break; default: LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters); @@ -261,7 +265,7 @@ namespace ASCOM.Meade.net CheckConnected("CommandBlind"); // Call CommandString and return as soon as it finishes //this.CommandString(command, raw); - SharedResources.SendBlind(command); + _sharedResourcesWrapper.SendBlind(command); // or //throw new ASCOM.MethodNotImplementedException("CommandBlind"); // DO NOT have both these sections! One or the other @@ -283,7 +287,7 @@ namespace ASCOM.Meade.net // it's a good idea to put all the low level communication with the device here, // then all communication calls this function // you need something to ensure that only one command is in progress at a time - return SharedResources.SendString(command); + return _sharedResourcesWrapper.SendString(command); //throw new ASCOM.MethodNotImplementedException("CommandString"); } @@ -317,10 +321,10 @@ namespace ASCOM.Meade.net LogMessage("Connected Set", "Connecting to port {0}", comPort); try { - SharedResources.Connect("Serial"); + _sharedResourcesWrapper.Connect("Serial"); try { - LogMessage("Connected Set", $"Commented to port {comPort}. Product: {SharedResources.ProductName} Version:{SharedResources.FirmwareVersion}"); + LogMessage("Connected Set", $"Commented to port {comPort}. Product: {_sharedResourcesWrapper.ProductName} Version:{_sharedResourcesWrapper.FirmwareVersion}"); SelectSite(1); @@ -333,7 +337,7 @@ namespace ASCOM.Meade.net } catch (Exception) { - SharedResources.Disconnect("Serial"); + _sharedResourcesWrapper.Disconnect("Serial"); throw; } } @@ -345,7 +349,7 @@ namespace ASCOM.Meade.net else { LogMessage("Connected Set", "Disconnecting from port {0}", comPort); - SharedResources.Disconnect("Serial"); + _sharedResourcesWrapper.Disconnect("Serial"); _connectedState = false; } } @@ -353,9 +357,9 @@ namespace ASCOM.Meade.net private bool IsNewPulseGuidingSupported() { - if (SharedResources.ProductName == SharedResources.AUTOSTAR497) + if (_sharedResourcesWrapper.ProductName == _sharedResourcesWrapper.AUTOSTAR497) { - return FirmwareIsGreaterThan(SharedResources.AUTOSTAR497_31EE); + return FirmwareIsGreaterThan(_sharedResourcesWrapper.AUTOSTAR497_31EE); } return false; @@ -363,16 +367,16 @@ namespace ASCOM.Meade.net private bool FirmwareIsGreaterThan(string minVersion) { - var currentVersion = SharedResources.FirmwareVersion; + var currentVersion = _sharedResourcesWrapper.FirmwareVersion; var comparison = currentVersion.CompareTo(minVersion); return (comparison >= 0); } private void SetLongFormat(bool setLongFormat) { - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { - var result = SharedResources.SendString(":GZ#"); + var result = _sharedResourcesWrapper.SendString(":GZ#"); //:GZ# Get telescope azimuth //Returns: DDD*MM#T or DDD*MM’SS# //The current telescope Azimuth depending on the selected precision. @@ -382,7 +386,7 @@ namespace ASCOM.Meade.net if (isLongFormat != setLongFormat) { utilities.WaitForMilliseconds(500); - SharedResources.SendBlind(":U#"); + _sharedResourcesWrapper.SendBlind(":U#"); //:U# Toggle between low/hi precision positions //Low - RA displays and messages HH:MM.T sDD*MM //High - Dec / Az / El displays and messages HH:MM: SS sDD*MM:SS @@ -393,7 +397,7 @@ namespace ASCOM.Meade.net private void SelectSite(int site) { - SharedResources.SendBlind($":W{site}#"); + _sharedResourcesWrapper.SendBlind($":W{site}#"); //:W# //Set current site to, an ASCII digit in the range 1..4 //Returns: Nothing @@ -450,11 +454,11 @@ namespace ASCOM.Meade.net { //string name = "Short driver name - please customise"; - //var telescopeProduceName = SharedResources.SendString(":GVP#"); + //var telescopeProduceName = _sharedResourcesWrapper.SendString(":GVP#"); ////:GVP# Get Telescope Product Name ////Returns: # - //var firmwareVersion = SharedResources.SendString(":GVN#"); + //var firmwareVersion = _sharedResourcesWrapper.SendString(":GVN#"); ////:GVN# Get Telescope Firmware Number ////Returns: dd.d# @@ -474,7 +478,7 @@ namespace ASCOM.Meade.net CheckConnected("AbortSlew"); tl.LogMessage("AbortSlew", "Aborting slew"); - SharedResources.SendBlind(":Q#"); + _sharedResourcesWrapper.SendBlind(":Q#"); //:Q# Halt all current slewing //Returns:Nothing } @@ -489,7 +493,7 @@ namespace ASCOM.Meade.net const char ack = (char) 6; - var alignmentString = SharedResources.SendChar(ack.ToString()); + var alignmentString = _sharedResourcesWrapper.SendChar(ack.ToString()); //ACK <0x06> Query of alignment mounting mode. //Returns: //A If scope in AltAz Mode @@ -533,13 +537,13 @@ namespace ASCOM.Meade.net switch (value) { case AlignmentModes.algAltAz: - SharedResources.SendBlind(":AA#"); + _sharedResourcesWrapper.SendBlind(":AA#"); //:AA# Sets telescope the AltAz alignment mode //Returns: nothing break; case AlignmentModes.algPolar: case AlignmentModes.algGermanPolar: - SharedResources.SendBlind(":AP#"); + _sharedResourcesWrapper.SendBlind(":AP#"); //:AP# Sets telescope to Polar alignment mode //Returns: nothing break; @@ -563,7 +567,7 @@ namespace ASCOM.Meade.net return altAz.Altitude; ////todo firmware bug in 44Eg, :GA# is returning the dec, not the altitude! - //var result = SharedResources.SendString(":GA#"); + //var result = _sharedResourcesWrapper.SendString(":GA#"); ////:GA# Get Telescope Altitude ////Returns: sDD* MM# or sDD*MM’SS# ////The current scope altitude. The returned format depending on the current precision setting. @@ -579,7 +583,7 @@ namespace ASCOM.Meade.net private HorizonCoordinates CalcAltAzFromTelescopeEqData() { - var altitudeData = SharedResources.Lock(() => new AltitudeData + var altitudeData = _sharedResourcesWrapper.Lock(() => new AltitudeData { UtcDateTime = this.UTCDate, SiteLongitude = this.SiteLongitude, @@ -648,7 +652,7 @@ namespace ASCOM.Meade.net { CheckConnected("Azimuth get"); - //var result = SharedResources.SendString(":GZ#"); + //var result = _sharedResourcesWrapper.SendString(":GZ#"); //:GZ# Get telescope azimuth //Returns: DDD*MM#T or DDD*MM’SS# //The current telescope Azimuth depending on the selected precision. @@ -826,7 +830,7 @@ namespace ASCOM.Meade.net { CheckConnected("Declination Get"); - var result = SharedResources.SendString(":GD#"); + var result = _sharedResourcesWrapper.SendString(":GD#"); //:GD# Get Telescope Declination. //Returns: sDD* MM# or sDD*MM’SS# //Depending upon the current precision setting for the telescope. @@ -952,22 +956,22 @@ namespace ASCOM.Meade.net //do nothing, it's ok this time as we're halting the slew. break; case 1: - SharedResources.SendBlind(":RG#"); + _sharedResourcesWrapper.SendBlind(":RG#"); //:RG# Set Slew rate to Guiding Rate (slowest) //Returns: Nothing break; case 2: - SharedResources.SendBlind(":RC#"); + _sharedResourcesWrapper.SendBlind(":RC#"); //:RC# Set Slew rate to Centering rate (2nd slowest) //Returns: Nothing break; case 3: - SharedResources.SendBlind(":RM#"); + _sharedResourcesWrapper.SendBlind(":RM#"); //:RM# Set Slew rate to Find Rate (2nd Fastest) //Returns: Nothing break; case 4: - SharedResources.SendBlind(":RS#"); + _sharedResourcesWrapper.SendBlind(":RS#"); //:RS# Set Slew rate to max (fastest) //Returns: Nothing break; @@ -981,23 +985,23 @@ namespace ASCOM.Meade.net if (rate == 0) { _movingPrimary = false; - SharedResources.SendBlind(":Qe#"); + _sharedResourcesWrapper.SendBlind(":Qe#"); //:Qe# Halt eastward Slews //Returns: Nothing - SharedResources.SendBlind(":Qw#"); + _sharedResourcesWrapper.SendBlind(":Qw#"); //:Qw# Halt westward Slews //Returns: Nothing } else if (rate > 0) { - SharedResources.SendBlind(":Me#"); + _sharedResourcesWrapper.SendBlind(":Me#"); //:Me# Move Telescope East at current slew rate //Returns: Nothing _movingPrimary = true; } else { - SharedResources.SendBlind(":Mw#"); + _sharedResourcesWrapper.SendBlind(":Mw#"); //:Mw# Move Telescope West at current slew rate //Returns: Nothing _movingPrimary = true; @@ -1008,23 +1012,23 @@ namespace ASCOM.Meade.net if (rate == 0) { _movingSecondary = false; - SharedResources.SendBlind(":Qn#"); + _sharedResourcesWrapper.SendBlind(":Qn#"); //:Qn# Halt northward Slews //Returns: Nothing - SharedResources.SendBlind(":Qs#"); + _sharedResourcesWrapper.SendBlind(":Qs#"); //:Qs# Halt southward Slews //Returns: Nothing } else if (rate > 0) { - SharedResources.SendBlind(":Mn#"); + _sharedResourcesWrapper.SendBlind(":Mn#"); //:Mn# Move Telescope North at current slew rate //Returns: Nothing _movingSecondary = true; } else { - SharedResources.SendBlind(":Ms#"); + _sharedResourcesWrapper.SendBlind(":Ms#"); //:Ms# Move Telescope South at current slew rate //Returns: Nothing _movingSecondary = true; @@ -1044,7 +1048,7 @@ namespace ASCOM.Meade.net if (AtPark) return; - SharedResources.SendBlind(":hP#"); + _sharedResourcesWrapper.SendBlind(":hP#"); //:hP# Autostar, Autostar II and LX 16”Slew to Park Position //Returns: Nothing AtPark = true; @@ -1076,7 +1080,7 @@ namespace ASCOM.Meade.net if (_userNewerPulseGuiding) { - SharedResources.SendBlind($":Mg{d}{duration:0000}#"); + _sharedResourcesWrapper.SendBlind($":Mg{d}{duration:0000}#"); //:MgnDDDD# //:MgsDDDD# //:MgeDDDD# @@ -1090,12 +1094,12 @@ namespace ASCOM.Meade.net } else { - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { - SharedResources.SendBlind(":RG#"); //Make sure we are at guide rate + _sharedResourcesWrapper.SendBlind(":RG#"); //Make sure we are at guide rate //:RG# Set Slew rate to Guiding Rate (slowest) //Returns: Nothing - SharedResources.SendBlind($":M{d}#"); + _sharedResourcesWrapper.SendBlind($":M{d}#"); //:Me# Move Telescope East at current slew rate //Returns: Nothing //:Mn# Move Telescope North at current slew rate @@ -1105,7 +1109,7 @@ namespace ASCOM.Meade.net //:Mw# Move Telescope West at current slew rate //Returns: Nothing utilities.WaitForMilliseconds(duration); - SharedResources.SendBlind($":Q{d}#"); + _sharedResourcesWrapper.SendBlind($":Q{d}#"); //:Qe# Halt eastward Slews //Returns: Nothing //:Qn# Halt northward Slews @@ -1123,7 +1127,7 @@ namespace ASCOM.Meade.net get { CheckConnected("RightAscension Get"); - var result = SharedResources.SendString(":GR#"); + var result = _sharedResourcesWrapper.SendString(":GR#"); //:GR# Get Telescope RA //Returns: HH: MM.T# or HH:MM:SS# //Depending which precision is set for the telescope @@ -1216,7 +1220,7 @@ namespace ASCOM.Meade.net { CheckConnected("SiteLatitude Get"); - var latitude = SharedResources.SendString(":Gt#"); + var latitude = _sharedResourcesWrapper.SendString(":Gt#"); //:Gt# Get Current Site Latitude //Returns: sDD* MM# //The latitude of the current site. Positive inplies North latitude. @@ -1241,7 +1245,7 @@ namespace ASCOM.Meade.net int d = Convert.ToInt32(Math.Floor(value)); int m = Convert.ToInt32(60 * (value - d)); - var result = SharedResources.SendChar($":St{sign}{d:00}*{m:00}#"); + var result = _sharedResourcesWrapper.SendChar($":St{sign}{d:00}*{m:00}#"); //:StsDD*MM# //Sets the current site latitude to sDD* MM# //Returns: @@ -1258,7 +1262,7 @@ namespace ASCOM.Meade.net { CheckConnected("SiteLongitude Get"); - var longitude = SharedResources.SendString(":Gg#"); + var longitude = _sharedResourcesWrapper.SendString(":Gg#"); //:Gg# Get Current Site Longitude //Returns: sDDD* MM# //The current site Longitude. East Longitudes are expressed as negative @@ -1294,7 +1298,7 @@ namespace ASCOM.Meade.net int d = Convert.ToInt32(Math.Floor(newLongitude)); int m = Convert.ToInt32(60 * (newLongitude - d)); - var result = SharedResources.SendChar($":Sg{d:000}*{m:00}#"); + var result = _sharedResourcesWrapper.SendChar($":Sg{d:000}*{m:00}#"); //:SgDDD*MM# //Set current site’s longitude to DDD*MM an ASCII position string //Returns: @@ -1349,7 +1353,7 @@ namespace ASCOM.Meade.net var dms = utilities.DegreesToDMS(value, "*", "'", "",0); var s = value < 0 ? string.Empty : "+"; - var result = SharedResources.SendChar($":Sa{s}{dms}#"); + var result = _sharedResourcesWrapper.SendChar($":Sa{s}{dms}#"); //:SasDD*MM# //Set target object altitude to sDD*MM# or sDD*MM’SS# [LX 16”, Autostar, Autostar II] //Returns: @@ -1377,7 +1381,7 @@ namespace ASCOM.Meade.net var dms = utilities.DegreesToDM(value, "*" ); - var result = SharedResources.SendChar($":Sz{dms}#"); + var result = _sharedResourcesWrapper.SendChar($":Sz{dms}#"); //:SzDDD*MM# //Sets the target Object Azimuth[LX 16” and Autostar II only] //Returns: @@ -1415,7 +1419,7 @@ namespace ASCOM.Meade.net var latitude = SiteLatitude; var longitude = SiteLongitude; - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { var raDec = _astroMaths.ConvertHozToEq(utcDateTime, latitude, longitude, altAz); @@ -1435,12 +1439,12 @@ namespace ASCOM.Meade.net { CheckConnected("DoSlewAsync"); - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { switch (polar) { case true: - var response = SharedResources.SendChar(":MS#"); + var response = _sharedResourcesWrapper.SendChar(":MS#"); //:MS# Slew to Target Object //Returns: //0 Slew is Possible @@ -1455,12 +1459,12 @@ namespace ASCOM.Meade.net break; case "1": //Below Horizon - string belowHorizonMessage = SharedResources.ReadTerminated(); + string belowHorizonMessage = _sharedResourcesWrapper.ReadTerminated(); tl.LogMessage("DoSlewAsync", $"Slew failed \"{belowHorizonMessage}\""); throw new ASCOM.InvalidOperationException(belowHorizonMessage); case "2": //Below Horizon - string belowMinimumElevationMessage = SharedResources.ReadTerminated(); + string belowMinimumElevationMessage = _sharedResourcesWrapper.ReadTerminated(); tl.LogMessage("DoSlewAsync", $"Slew failed \"{belowMinimumElevationMessage}\""); throw new ASCOM.InvalidOperationException(belowMinimumElevationMessage); default: @@ -1471,7 +1475,7 @@ namespace ASCOM.Meade.net break; case false: - var maResponse = SharedResources.SendChar(":MA#"); + var maResponse = _sharedResourcesWrapper.SendChar(":MA#"); //:MA# Autostar, LX 16”, Autostar II – Slew to target Alt and Az //Returns: //0 - No fault @@ -1508,7 +1512,7 @@ namespace ASCOM.Meade.net tl.LogMessage("SlewToCoordinatesAsync", $"Ra={rightAscension}, Dec={declination}"); CheckConnected("SlewToCoordinatesAsync"); - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { TargetRightAscension = rightAscension; TargetDeclination = declination; @@ -1559,7 +1563,7 @@ namespace ASCOM.Meade.net CheckConnected("Slewing Get"); - var result = SharedResources.SendString(":D#"); + var result = _sharedResourcesWrapper.SendString(":D#"); //:D# Requests a string of bars indicating the distance to the current target location. //Returns: //LX200's – a string of bar characters indicating the distance. @@ -1582,7 +1586,7 @@ namespace ASCOM.Meade.net tl.LogMessage("SyncToCoordinates", $"RA={rightAscension} Dec={declination}"); CheckConnected("SyncToCoordinates"); - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { TargetRightAscension = rightAscension; TargetDeclination = declination; @@ -1596,7 +1600,7 @@ namespace ASCOM.Meade.net tl.LogMessage("SyncToTarget", "Executing"); CheckConnected("SyncToTarget"); - var result = SharedResources.SendString(":CM#"); + var result = _sharedResourcesWrapper.SendString(":CM#"); //: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. @@ -1645,7 +1649,7 @@ namespace ASCOM.Meade.net var command = $":Sd{s}{dms}#"; tl.LogMessage("TargetDeclination Set", $"{command}"); - var result = SharedResources.SendChar(command); + var result = _sharedResourcesWrapper.SendChar(command); //:SdsDD*MM# //Set target object declination to sDD*MM or sDD*MM:SS depending on the current precision setting //Returns: @@ -1694,7 +1698,7 @@ namespace ASCOM.Meade.net //todo implement the low precision version var hms = utilities.HoursToHMS(value, ":", ":", ":", 2); - var response = SharedResources.SendChar($":Sr{hms}#"); + var response = _sharedResourcesWrapper.SendChar($":Sr{hms}#"); //:SrHH:MM.T# //:SrHH:MM:SS# //Set target object RA to HH:MM.T or HH: MM: SS depending on the current precision setting. @@ -1753,12 +1757,12 @@ namespace ASCOM.Meade.net switch (value) { case DriveRates.driveSidereal: - SharedResources.SendBlind(":TQ#"); + _sharedResourcesWrapper.SendBlind(":TQ#"); //:TQ# Selects sidereal tracking rate //Returns: Nothing break; case DriveRates.driveLunar: - SharedResources.SendBlind(":TL#"); + _sharedResourcesWrapper.SendBlind(":TL#"); //:TL# Set Lunar Tracking Rage //Returns: Nothing break; @@ -1797,7 +1801,7 @@ namespace ASCOM.Meade.net { CheckConnected("GetUtcCorrection"); - string utcOffSet = SharedResources.SendString(":GG#"); + string utcOffSet = _sharedResourcesWrapper.SendString(":GG#"); //:GG# Get UTC offset time //Returns: sHH# or sHH.H# //The number of decimal hours to add to local time to convert it to UTC. If the number is a whole number the @@ -1822,14 +1826,14 @@ namespace ASCOM.Meade.net tl.LogMessage("UTCDate", "Get started"); - TelescopeDateDetails telescopeDateDetails = SharedResources.Lock(() => + TelescopeDateDetails telescopeDateDetails = _sharedResourcesWrapper.Lock(() => { TelescopeDateDetails tdd = new TelescopeDateDetails(); - tdd.telescopeDate = SharedResources.SendString(":GC#"); + tdd.telescopeDate = _sharedResourcesWrapper.SendString(":GC#"); //:GC# Get current date. //Returns: MM / DD / YY# //The current local calendar date for the telescope. - tdd.telescopeTime = SharedResources.SendString(":GL#"); + tdd.telescopeTime = _sharedResourcesWrapper.SendString(":GL#"); //:GL# Get Local Time in 24 hour format //Returns: HH: MM: SS# //The Local Time in 24 - hour Format @@ -1864,12 +1868,12 @@ namespace ASCOM.Meade.net CheckConnected("UTCDate Set"); - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { var utcCorrection = GetUtcCorrection(); var localDateTime = value - utcCorrection; - var timeResult = SharedResources.SendChar($":SL{localDateTime:HH:mm:ss}#"); + var timeResult = _sharedResourcesWrapper.SendChar($":SL{localDateTime:HH:mm:ss}#"); //:SLHH:MM:SS# //Set the local Time //Returns: @@ -1880,7 +1884,7 @@ namespace ASCOM.Meade.net throw new InvalidOperationException("Failed to set local time"); } - var dateResult = SharedResources.SendChar($":SC{localDateTime:MM/dd/yy}#"); + var dateResult = _sharedResourcesWrapper.SendChar($":SC{localDateTime:MM/dd/yy}#"); //:SCMM/DD/YY# //Change Handbox Date to MM/DD/YY //Returns: @@ -1893,8 +1897,8 @@ namespace ASCOM.Meade.net } //throwing away these two strings which represent - SharedResources.ReadTerminated(); //Updating Planetary Data# - SharedResources.ReadTerminated(); // # + _sharedResourcesWrapper.ReadTerminated(); //Updating Planetary Data# + _sharedResourcesWrapper.ReadTerminated(); // # }); } } @@ -2014,7 +2018,7 @@ namespace ASCOM.Meade.net /// internal void ReadProfile() { - var profileProperties = SharedResources.ReadProfile(); + var profileProperties = _sharedResourcesWrapper.ReadProfile(); tl.Enabled = profileProperties.TraceLogger; comPort = profileProperties.ComPort; } diff --git a/Meade.net.focuser/Focuser.cs b/Meade.net.focuser/Focuser.cs index 75a6f18..f19eddc 100644 --- a/Meade.net.focuser/Focuser.cs +++ b/Meade.net.focuser/Focuser.cs @@ -40,6 +40,7 @@ using ASCOM.DeviceInterface; using System.Globalization; using System.Collections; using System.Reflection; +using ASCOM.Meade.net.Wrapper; using ASCOM.Utilities.Interfaces; namespace ASCOM.Meade.net @@ -103,6 +104,8 @@ namespace ASCOM.Meade.net /// internal static TraceLogger tl; + private readonly ISharedResourcesWrapper _sharedResourcesWrapper; + /// /// Initializes a new instance of the class. /// Must be public for COM registration. @@ -117,6 +120,7 @@ namespace ASCOM.Meade.net connectedState = false; // Initialise connected to false utilities = new Util(); //Initialise util object astroUtilities = new AstroUtils(); // Initialise astro utilities object + _sharedResourcesWrapper = new SharedResourcesWrapper(); tl.LogMessage("Focuser", "Completed initialisation"); } @@ -137,7 +141,7 @@ namespace ASCOM.Meade.net public void SetupDialog() { tl.LogMessage("SetupDialog", "Opening setup dialog"); - SharedResources.SetupDialog(); + _sharedResourcesWrapper.SetupDialog(); ReadProfile(); tl.LogMessage("SetupDialog", "complete"); } @@ -162,7 +166,7 @@ namespace ASCOM.Meade.net CheckConnected("CommandBlind"); // Call CommandString and return as soon as it finishes //this.CommandString(command, raw); - SharedResources.SendBlind(command); + _sharedResourcesWrapper.SendBlind(command); // or //throw new ASCOM.MethodNotImplementedException("CommandBlind"); // DO NOT have both these sections! One or the other @@ -184,7 +188,7 @@ namespace ASCOM.Meade.net // it's a good idea to put all the low level communication with the device here, // then all communication calls this function // you need something to ensure that only one command is in progress at a time - return SharedResources.SendString(command); + return _sharedResourcesWrapper.SendString(command); throw new ASCOM.MethodNotImplementedException("CommandString"); } @@ -218,7 +222,7 @@ namespace ASCOM.Meade.net { try { - SharedResources.Connect("Serial"); + _sharedResourcesWrapper.Connect("Serial"); try { SelectSite(1); @@ -228,7 +232,7 @@ namespace ASCOM.Meade.net } catch (Exception) { - SharedResources.Disconnect("Serial"); + _sharedResourcesWrapper.Disconnect("Serial"); throw; } } @@ -240,7 +244,7 @@ namespace ASCOM.Meade.net else { LogMessage("Connected Set", "Disconnecting from port {0}", comPort); - SharedResources.Disconnect("Serial"); + _sharedResourcesWrapper.Disconnect("Serial"); connectedState = false; } } @@ -248,9 +252,9 @@ namespace ASCOM.Meade.net private void SetLongFormat(bool setLongFormat) { - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { - var result = SharedResources.SendString(":GZ#"); + var result = _sharedResourcesWrapper.SendString(":GZ#"); //:GZ# Get telescope azimuth //Returns: DDD*MM#T or DDD*MM’SS# //The current telescope Azimuth depending on the selected precision. @@ -260,7 +264,7 @@ namespace ASCOM.Meade.net if (isLongFormat != setLongFormat) { utilities.WaitForMilliseconds(500); - SharedResources.SendBlind(":U#"); + _sharedResourcesWrapper.SendBlind(":U#"); //:U# Toggle between low/hi precision positions //Low - RA displays and messages HH:MM.T sDD*MM //High - Dec / Az / El displays and messages HH:MM: SS sDD*MM:SS @@ -271,7 +275,7 @@ namespace ASCOM.Meade.net private void SelectSite(int site) { - SharedResources.SendBlind($":W{site}#"); + _sharedResourcesWrapper.SendBlind($":W{site}#"); //:W# //Set current site to, an ASCII digit in the range 1..4 //Returns: Nothing @@ -354,7 +358,7 @@ namespace ASCOM.Meade.net Stopwatch stopwatch = Stopwatch.StartNew(); while (stopwatch.ElapsedMilliseconds < 1000) { - SharedResources.SendBlind(":FQ#"); + _sharedResourcesWrapper.SendBlind(":FQ#"); //:FQ# Halt Focuser Motion //Returns: Nothing @@ -436,9 +440,9 @@ namespace ASCOM.Meade.net private void MoveFocuser(bool directionOut, int steps) { - SharedResources.Lock(() => + _sharedResourcesWrapper.Lock(() => { - //SharedResources.SendBlind(":FF#"); + //_sharedResourcesWrapper.SendBlind(":FF#"); //:FF# Set Focus speed to fastest setting //Returns: Nothing @@ -454,7 +458,7 @@ namespace ASCOM.Meade.net Stopwatch stopwatch = Stopwatch.StartNew(); while (stopwatch.ElapsedMilliseconds < steps) { - SharedResources.SendBlind(directionOut ? ":F+#" : ":F-#"); + _sharedResourcesWrapper.SendBlind(directionOut ? ":F+#" : ":F-#"); //:F+# Start Focuser moving inward (toward objective) //Returns: None @@ -630,7 +634,7 @@ namespace ASCOM.Meade.net /// internal void ReadProfile() { - var profileProperties = SharedResources.ReadProfile(); + var profileProperties = _sharedResourcesWrapper.ReadProfile(); tl.Enabled = profileProperties.TraceLogger; comPort = profileProperties.ComPort; } diff --git a/Meade.net/Meade.net.csproj b/Meade.net/Meade.net.csproj index e1d415b..b11387a 100644 --- a/Meade.net/Meade.net.csproj +++ b/Meade.net/Meade.net.csproj @@ -103,6 +103,7 @@ + Designer frmMain.cs diff --git a/Meade.net/SharedResources.cs b/Meade.net/SharedResources.cs index 6afc65e..9e04d32 100644 --- a/Meade.net/SharedResources.cs +++ b/Meade.net/SharedResources.cs @@ -233,15 +233,7 @@ namespace ASCOM.Meade.net } #endregion - - #region AutostarProducts - - public const string AUTOSTAR497 = "Autostar"; - - public const string AUTOSTAR497_31EE = "31Ee"; - - #endregion - + #region Multi Driver handling public static string ProductName { get; private set; } = string.Empty; diff --git a/Meade.net/Wrapper/SharedResourcesWrapper.cs b/Meade.net/Wrapper/SharedResourcesWrapper.cs new file mode 100644 index 0000000..90caa72 --- /dev/null +++ b/Meade.net/Wrapper/SharedResourcesWrapper.cs @@ -0,0 +1,98 @@ +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; } + + void Connect(string deviceId); + void Disconnect(string deviceId); + + string ProductName { get; } + + string FirmwareVersion { get; } + + void Lock(Action action); + T Lock(Func func); + + string SendString(string message); + void SendBlind(string message); + string SendChar(string message); + + string ReadTerminated(); + + ProfileProperties ReadProfile(); + + void SetupDialog(); + } + + public class SharedResourcesWrapper : ISharedResourcesWrapper + { + #region AutostarProducts + + public string AUTOSTAR497 => "Autostar"; + + public string AUTOSTAR497_31EE => "31Ee"; + + #endregion + + public void Connect(string deviceId) + { + SharedResources.Connect( deviceId); + } + + public void Disconnect(string deviceId) + { + SharedResources.Disconnect(deviceId); + } + + public string ProductName => SharedResources.ProductName; + + public string FirmwareVersion => SharedResources.FirmwareVersion; + + public void Lock(Action action) + { + SharedResources.Lock(action); + } + + public T Lock(Func func) + { + return SharedResources.Lock(func); + } + + public string SendString(string message) + { + return SharedResources.SendString(message); + } + + public void SendBlind(string message) + { + SharedResources.SendBlind(message); + } + + public string SendChar(string message) + { + return SharedResources.SendChar(message); + } + + public string ReadTerminated() + { + return SharedResources.ReadTerminated(); + } + + public ProfileProperties ReadProfile() + { + return SharedResources.ReadProfile(); + } + + public void SetupDialog() + { + SharedResources.SetupDialog(); + } + } +}