diff --git a/ConformanceResult.txt b/ConformanceResult.txt
new file mode 100644
index 0000000..aaab4ff
--- /dev/null
+++ b/ConformanceResult.txt
@@ -0,0 +1,166 @@
+ConformanceCheck ASCOM Device Conformance Checker Version 6.4.63.0, Build time: 18/12/2018 08:58:34
+ConformanceCheck Running on: ASCOM Platform 6.4 SP1 6.4.1.2695
+
+ConformanceCheck Driver ProgID: ASCOM.MeadeAutostar497.Telescope
+
+Error handling
+Error number for "Not Implemented" is: 80040400
+Error number for "Invalid Value 1" is: 80040401
+Error number for "Invalid Value 2" is: 80040405
+Error number for "Value Not Set 1" is: 80040402
+Error number for "Value Not Set 2" is: 80040403
+Error messages will not be interpreted to infer state.
+
+18:44:58.528 Driver Access Checks OK
+18:44:59.174 AccessChecks OK Successfully created driver using late binding
+18:44:59.400 AccessChecks OK Successfully connected using late binding
+18:44:59.405 AccessChecks INFO The driver is a .NET object
+18:44:59.409 AccessChecks INFO The AssemblyQualifiedName is: ASCOM.MeadeAutostar497.Telescope, ASCOM.MeadeAutostar497.Telescope, Version=
+18:44:59.413 AccessChecks INFO The driver implements interface: ASCOM.DeviceInterface.ITelescopeV3
+18:45:00.117 AccessChecks INFO Device does not expose interface ITelescopeV2
+18:45:00.926 AccessChecks INFO Device exposes interface ITelescopeV3
+18:45:02.245 AccessChecks OK Successfully created driver using driver access toolkit
+18:45:02.415 AccessChecks OK Successfully connected using driver access toolkit
+
+Conform is using ASCOM.DriverAccess.Telescope to get a Telescope object
+18:45:03.742 ConformanceCheck OK Driver instance created successfully
+18:45:03.954 ConformanceCheck OK Connected OK
+
+Common Driver Methods
+18:45:03.995 InterfaceVersion OK 3
+18:45:04.023 Connected OK True
+18:45:04.052 Description OK Meade Autostar 497 .net
+18:45:04.081 DriverInfo OK Information about the driver itself. Version: 0.0
+18:45:04.110 DriverVersion OK 0.0
+18:45:04.139 Name OK Meade Autostar 497 .net
+18:45:04.168 CommandString INFO Conform cannot test the CommandString method
+18:45:04.174 CommandBlind INFO Conform cannot test the CommandBlind method
+18:45:04.180 CommandBool INFO Conform cannot test the CommandBool method
+18:45:04.185 Action INFO Conform cannot test the Action method
+18:45:04.192 SupportedActions OK Driver returned an empty action list
+
+Can Properties
+18:45:04.260 CanFindHome OK False
+18:45:04.266 CanPark OK False
+18:45:04.273 CanPulseGuide OK False
+18:45:04.280 CanSetDeclinationRate OK False
+18:45:04.287 CanSetGuideRates OK False
+18:45:04.294 CanSetPark OK False
+18:45:04.301 CanSetPierSide OK False
+18:45:04.315 CanSetRightAscensionRate OK False
+18:45:04.322 CanSetTracking OK False
+18:45:04.330 CanSlew OK False
+18:45:04.337 CanSlewltAz OK False
+18:45:04.344 CanSlewAltAzAsync OK False
+18:45:04.352 CanSlewAsync OK False
+18:45:04.359 CanSync OK False
+18:45:04.367 CanSyncAltAz OK False
+18:45:04.375 CanUnPark OK False
+
+Pre-run Checks
+18:45:04.421 Mount Safety INFO Scope is not parked, continuing testing
+18:45:04.474 TimeCheck INFO PC Time Zone: GMT Summer Time, offset -1 hours.
+18:45:04.482 TimeCheck INFO PC UTCDate: 30-Apr-2019 17:45:04.482
+18:45:04.574 TimeCheck INFO Mount UTCDate: 30-Apr-2019 05:45:04.000
+
+Properties
+18:45:04.646 AlignmentMode OK Optional member threw a PropertyNotImplementedException exception.
+18:45:04.683 Altitude OK Optional member threw a PropertyNotImplementedException exception.
+18:45:04.715 ApertureArea OK Optional member threw a PropertyNotImplementedException exception.
+18:45:04.747 ApertureDiameter OK Optional member threw a PropertyNotImplementedException exception.
+18:45:04.779 AtHome OK False
+18:45:04.813 AtPark OK False
+18:45:04.845 Azimuth OK Optional member threw a PropertyNotImplementedException exception.
+18:45:04.877 Declination OK 00:00:00.00
+18:45:04.909 DeclinationRate Read OK 0.00
+18:45:04.943 DeclinationRate Write OK CanSetDeclinationRate is False and a PropertyNotImplementedException exception was generated as expected
+18:45:04.982 DoesRefraction Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.015 DoesRefraction Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.047 EquatorialSystem OK equLocalTopocentric
+18:45:05.080 FocalLength OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.116 GuideRateDeclination Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.127 GuideRateDeclination Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected
+18:45:05.159 GuideRateRightAscension Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.171 GuideRateRightAscension Write OK CanSetGuideRates is False and a PropertyNotImplementedException exception was generated as expected
+18:45:05.205 IsPulseGuiding OK CanPulseGuide is False and a PropertyNotImplementedException exception was generated as expected
+18:45:05.237 RightAscension OK 00:00:00.00
+18:45:05.270 RightAscensionRate Read OK 0.00
+18:45:05.305 RightAscensionRate Write OK CanSetRightAscensionRate is False and a PropertyNotImplementedException exception was generated as expected
+18:45:05.339 SiteElevation Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.374 SiteElevation Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.386 SiteElevation Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.398 SiteElevation Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.432 SiteLatitude Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.467 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.480 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.493 SiteLatitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.529 SiteLongitude Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.564 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.577 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.589 SiteLongitude Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.635 Slewing OK False
+18:45:05.669 SlewSettleTime Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.706 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.719 SlewSettleTime Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.754 SideOfPier Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.787 SiderealTime ISSUE This member is mandatory but threw a PropertyNotImplementedException exception, it must function per the ASCOM specification.
+18:45:05.827 TargetDeclination Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.862 TargetDeclination Write INFO Tests moved after the SlewToCoordinates tests so that Conform can check they properly set target coordinates.
+18:45:05.877 TargetRightAscension Read OK Optional member threw a PropertyNotImplementedException exception.
+18:45:05.915 TargetRightAscension Write INFO Tests moved after the SlewToCoordinates tests so that Conform can check they properly set target coordinates.
+18:45:05.928 Tracking Read OK True
+18:45:05.963 Tracking Write OK CanSetTracking is False and a PropertyNotImplementedException exception was generated as expected
+18:45:06.005 TrackingRates Found drive rate: driveSidereal
+18:45:06.017 TrackingRates OK Drive rates read OK
+18:45:06.031 TrackingRates OK Disposed tracking rates OK
+18:45:06.066 TrackingRates OK Successfully obtained a TrackingRates object after the previous TrackingRates object was disposed
+18:45:06.079 TrackingRate Read ISSUE This member is mandatory but threw a PropertyNotImplementedException exception, it must function per the ASCOM specification.
+18:45:06.157 UTCDate Read OK 30-Apr-2019 05:45:05.000
+18:45:06.305 UTCDate Write OK New UTCDate written successfully: 30/04/2019 06:45:05
+
+Methods
+18:45:06.538 CanMoveAxis:Primary OK CanMoveAxis:Primary True
+18:45:06.574 CanMoveAxis:Secondary OK CanMoveAxis:Secondary True
+18:45:06.611 CanMoveAxis:Tertiary OK CanMoveAxis:Tertiary False
+18:45:06.647 Park OK CanPark is False and a MethodNotImplementedException exception was generated as expected
+18:45:06.662 UnPark OK CanUnPark is False and a MethodNotImplementedException exception was generated as expected
+18:45:06.706 AbortSlew OK AbortSlew OK when not slewing
+18:45:06.775 AxisRate:Primary OK Empty axis rate returned
+18:45:06.788 AxisRate:Primary OK Disposed axis rates OK
+18:45:06.801 AxisRate:Secondary OK Empty axis rate returned
+18:45:06.814 AxisRate:Secondary OK Disposed axis rates OK
+18:45:06.828 AxisRate:Tertiary OK Empty axis rate returned
+18:45:06.840 AxisRate:Tertiary OK Disposed axis rates OK
+18:45:06.855 FindHome OK CanFindHome is False and a MethodNotImplementedException exception was generated as expected
+18:45:06.905 MoveAxis Primary WARNING MoveAxis tests skipped because there are no AxisRate values
+18:45:06.919 MoveAxis Primary OK AxisRates object successfully disposed
+18:45:06.978 MoveAxis Secondary WARNING MoveAxis tests skipped because there are no AxisRate values
+18:45:06.991 MoveAxis Secondary OK AxisRates object successfully disposed
+18:45:07.050 MoveAxis Tertiary OK CanMoveAxis Tertiary is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.091 PulseGuide OK CanPulseGuide is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.146 SlewToCoordinates ISSUE Received a PropertyNotImplementedException instead of a MethodNotImplementedException
+18:45:07.191 SlewToCoordinatesAsync ISSUE Received a PropertyNotImplementedException instead of a MethodNotImplementedException
+18:45:07.235 SyncToCoordinates OK CanSync is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.272 TargetRightAscension Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.287 TargetRightAscension Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.309 TargetRightAscension Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.348 TargetDeclination Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.362 TargetDeclination Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.376 TargetDeclination Write OK Optional member threw a PropertyNotImplementedException exception.
+18:45:07.421 SlewToTarget ISSUE Received a PropertyNotImplementedException instead of a MethodNotImplementedException
+18:45:07.466 SlewToTargetAsync ISSUE Received a PropertyNotImplementedException instead of a MethodNotImplementedException
+18:45:07.503 DestinationSideOfPier Test skipped as AligmentMode is not German Polar
+18:45:07.520 SlewToAltAz OK CanSlewAltAz is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.564 SlewToAltAzAsync OK CanSlewAltAzAsync is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.603 SyncToTarget OK CanSync is False and a MethodNotImplementedException exception was generated as expected
+18:45:07.641 SyncToAltAz OK CanSyncAltAz is False and a MethodNotImplementedException exception was generated as expected
+
+SideOfPier Model Tests
+18:45:07.711 SideOfPier Model Tests INFO Tests skipped because this driver does Not support SideOfPier Read
+
+Post-run Checks
+18:45:07.800 Mount Safety INFO Tracking can't be turned off for this mount, please switch off manually.
+
+Conformance test complete
+
+Your driver had 0 errors, 2 warnings and 6 issues
\ No newline at end of file
diff --git a/MeadeAutostar497.UnitTests/MeadeAutostar497.UnitTests.csproj b/MeadeAutostar497.UnitTests/MeadeAutostar497.UnitTests.csproj
index e49ccdc..a7a4fae 100644
--- a/MeadeAutostar497.UnitTests/MeadeAutostar497.UnitTests.csproj
+++ b/MeadeAutostar497.UnitTests/MeadeAutostar497.UnitTests.csproj
@@ -26,6 +26,7 @@
prompt
4
false
+ x64
pdbonly
diff --git a/MeadeAutostar497/Controller/ISerialProcessor.cs b/MeadeAutostar497/Controller/ISerialProcessor.cs
index 5f2e2c0..5578bf3 100644
--- a/MeadeAutostar497/Controller/ISerialProcessor.cs
+++ b/MeadeAutostar497/Controller/ISerialProcessor.cs
@@ -22,5 +22,7 @@ namespace ASCOM.MeadeAutostar497.Controller
char CommandChar(string command);
string ReadTerminated(string terminator);
void Command(string command);
+ void Lock();
+ void Unlock();
}
}
\ No newline at end of file
diff --git a/MeadeAutostar497/Controller/SerialProcessor.cs b/MeadeAutostar497/Controller/SerialProcessor.cs
index b9fe333..2e14264 100644
--- a/MeadeAutostar497/Controller/SerialProcessor.cs
+++ b/MeadeAutostar497/Controller/SerialProcessor.cs
@@ -72,7 +72,7 @@ namespace ASCOM.MeadeAutostar497.Controller
public string CommandTerminated(string command, string terminator)
{
- serialMutex.WaitOne();
+ Lock();
try
{
_serialPort.Write(command);
@@ -81,13 +81,13 @@ namespace ASCOM.MeadeAutostar497.Controller
}
finally
{
- serialMutex.ReleaseMutex();
+ Unlock();
}
}
public char CommandChar(string command)
{
- serialMutex.WaitOne();
+ Lock();
try
{
_serialPort.Write(command);
@@ -96,13 +96,13 @@ namespace ASCOM.MeadeAutostar497.Controller
}
finally
{
- serialMutex.ReleaseMutex();
+ Unlock();
}
}
public string ReadTerminated(string terminator)
{
- serialMutex.WaitOne();
+ Lock();
try
{
string result = _serialPort.ReadTo("#");
@@ -110,21 +110,31 @@ namespace ASCOM.MeadeAutostar497.Controller
}
finally
{
- serialMutex.ReleaseMutex();
+ Unlock();
}
}
public void Command(string command)
{
- serialMutex.WaitOne();
+ Lock();
try
{
_serialPort.Write(command);
}
finally
{
- serialMutex.ReleaseMutex();
+ Unlock();
}
}
+
+ public void Lock()
+ {
+ serialMutex.WaitOne();
+ }
+
+ public void Unlock()
+ {
+ serialMutex.ReleaseMutex();
+ }
}
}
diff --git a/MeadeAutostar497/Controller/TelescopeController.cs b/MeadeAutostar497/Controller/TelescopeController.cs
index a2a3f64..4979d07 100644
--- a/MeadeAutostar497/Controller/TelescopeController.cs
+++ b/MeadeAutostar497/Controller/TelescopeController.cs
@@ -93,7 +93,7 @@ namespace ASCOM.MeadeAutostar497.Controller
private void TestConnectionActive()
{
- var firmwareVersionNumber = SerialPort.CommandTerminated("#:GVN#", "#");
+ var firmwareVersionNumber = SerialPort.CommandTerminated(":GVN#", "#");
if (string.IsNullOrEmpty(firmwareVersionNumber))
{
throw new InvalidOperationException("Failed to communicate with telescope.");
@@ -106,7 +106,7 @@ namespace ASCOM.MeadeAutostar497.Controller
{
if (!Connected) return false;
- var result = SerialPort.CommandTerminated("#:D#", "#");
+ var result = SerialPort.CommandTerminated(":D#", "#");
return result != string.Empty;
}
}
@@ -115,8 +115,8 @@ namespace ASCOM.MeadeAutostar497.Controller
{
get
{
- string telescopeDate = SerialPort.CommandTerminated("#:GC#", "#");
- string telescopeTime = SerialPort.CommandTerminated("#:GL#", "#");
+ string telescopeDate = SerialPort.CommandTerminated(":GC#", "#");
+ string telescopeTime = SerialPort.CommandTerminated(":GL#", "#");
int month = telescopeDate.Substring(0, 2).ToInteger();
int day = telescopeDate.Substring(3, 2).ToInteger();
@@ -138,21 +138,29 @@ namespace ASCOM.MeadeAutostar497.Controller
set
{
//var result = SerialCommand(":SLHH:MM:SS#", true);
- var timeResult = SerialPort.CommandChar($"#:SL{value:hh:mm:ss}#");
+ var timeResult = SerialPort.CommandChar($":SL{value:hh:mm:ss}#");
if (timeResult != '1')
{
throw new InvalidOperationException("Failed to set local time");
}
- var dateResult = SerialPort.CommandChar($"#:SC{value:MM/dd/yy}#");
- if (dateResult != '1')
+ SerialPort.Lock();
+ try
{
- throw new InvalidOperationException("Failed to set local time");
- }
+ var dateResult = SerialPort.CommandChar($":SC{value:MM/dd/yy}#");
+ if (dateResult != '1')
+ {
+ throw new InvalidOperationException("Failed to set local time");
+ }
- //throwing away these two strings which represent
- SerialPort.ReadTerminated("#"); //Updating Planetary Data#
- SerialPort.ReadTerminated("#"); // #
+ //throwing away these two strings which represent
+ SerialPort.ReadTerminated("#"); //Updating Planetary Data#
+ SerialPort.ReadTerminated("#"); // #
+ }
+ finally
+ {
+ SerialPort.Unlock();
+ }
}
}
diff --git a/MeadeAutostar497/MeadeAutostar497.csproj b/MeadeAutostar497/MeadeAutostar497.csproj
index 1fa4160..6de6351 100644
--- a/MeadeAutostar497/MeadeAutostar497.csproj
+++ b/MeadeAutostar497/MeadeAutostar497.csproj
@@ -46,7 +46,7 @@
prompt
4
true
- AnyCPU
+ x64
false
diff --git a/TestConsole/TestConsole.csproj b/TestConsole/TestConsole.csproj
index 9631e67..4392996 100644
--- a/TestConsole/TestConsole.csproj
+++ b/TestConsole/TestConsole.csproj
@@ -16,7 +16,7 @@
512
- x86
+ x64
true
full
false