Compare commits

...

238 Commits

Author SHA1 Message Date
ColinD 64978e96cc Merged in develop (pull request #55)
Develop
2025-12-30 22:59:06 +00:00
Olivier Balitch b63bbec629 Merged in feature/SupportMeadeLXD600 (pull request #54)
Initial support of LXD600 mount: no StarPatch, no long format, no park support for this mount.

Approved-by: Colin Dawson
2025-12-30 22:21:40 +00:00
ColinD a0d5eec267 code tidyup 2025-12-28 21:13:45 +00:00
Olivier Balitch c24b4c1161 Initial support of LXD600 mount: no StarPatch, no long format, no park support for this mount. 2025-09-27 11:46:00 +02:00
ColinD 6768e71ae6 Added Nunit3 test adapter nuget package to the test projects to improve testing for people without NCrunch. 2025-09-19 18:54:48 +01:00
ColinD a89b1c8fa6 Added Nunit3 test adapter nuget package to the test projects to improve testing for people without NCrunch. 2025-09-19 18:32:16 +01:00
ColinD d1ed5558b2 Changes the code a little more 2025-02-18 14:45:12 +00:00
ColinD ea07c7b625 Fixed unit tests 2025-02-17 15:56:34 +00:00
ColinD 56642267b0 Altered the profile read exception handling a little. 2025-02-17 15:37:40 +00:00
ColinD eda785c971 Merged in develop (pull request #53)
Adding NumberFormatInfo.InvariantInfo to integer convsions.
2025-02-05 17:16:38 +00:00
ColinD ddd67b330a Adding NumberFormatInfo.InvariantInfo to integer convsions. 2025-02-05 16:26:14 +00:00
ColinD 0bc4980786 Merged in develop (pull request #52)
Develop
2025-01-08 16:21:12 +00:00
ColinD 8521b3e2d2 Added ability to override the 5 second serial timeout with your own value. 2025-01-08 16:13:46 +00:00
ColinD a81318f4b5 Adding error trap so that the display prompts can be bypassed if it doesn't work, will still try to set the date and time. 2025-01-07 15:49:51 +00:00
ColinD e7e216597a Changing the recieve timeout to 30 seconds, as a test 2025-01-01 17:19:34 +00:00
ColinD a04cc82a46 Merge branch 'master' into develop 2025-01-01 17:17:51 +00:00
ColinD 7a0ee85af6 Merged in develop (pull request #51)
Develop

* Added an extra test to Slewing so that if connected will check with the mount to see if it's actually slewing, which is should have been doing

* Added extra check to ensure that slewing is return true whilst executing one of the ascom slew commands.

* Tweaked the GetSlewing command hopefully this makes the logic function correctly.
Also upgraded the logging to expose whether it's an internal call or not.

* Another slight tweak to the GetSlewing internal call code.

* Fixed problem where the telescope area was in mm when it should be mm squared.  And the driver was incorrect by a factor of 1000.

* Adding more information to the tracelog for get slewing

* Tweaked the code so that the _forceInternal variable doesn't care about if the scope is connected or not.

* Modified the code again, so that the _forceSlewingCount is done last, so that it's at up to date as possible.
2025-01-01 12:10:00 +00:00
ColinD 056484bce9 Modified the code again, so that the _forceSlewingCount is done last, so that it's at up to date as possible. 2024-12-24 17:25:18 +00:00
ColinD 6aa19b869b Tweaked the code so that the _forceInternal variable doesn't care about if the scope is connected or not. 2024-12-24 17:00:03 +00:00
ColinD 431776cfdf Adding more information to the tracelog for get slewing 2024-12-15 21:45:19 +00:00
ColinD 0afb80bd70 Fixed problem where the telescope area was in mm when it should be mm squared. And the driver was incorrect by a factor of 1000. 2024-12-01 22:42:19 +00:00
ColinD 4ef80b448e Another slight tweak to the GetSlewing internal call code. 2024-11-30 18:18:16 +00:00
ColinD cd6e72eb0a Tweaked the GetSlewing command hopefully this makes the logic function correctly.
Also upgraded the logging to expose whether it's an internal call or not.
2024-11-27 22:12:27 +00:00
ColinD c2bc2cfc7e Added extra check to ensure that slewing is return true whilst executing one of the ascom slew commands. 2024-11-26 16:01:07 +00:00
ColinD 7554c1e213 Added an extra test to Slewing so that if connected will check with the mount to see if it's actually slewing, which is should have been doing 2024-11-18 20:21:10 +00:00
ColinD 372c98a22c Merged in develop (pull request #50)
Develop
2024-11-12 18:59:03 +00:00
ColinD 04c2f5e1bb Added unit testing to cover the LX200 not being able to park. 2024-11-12 18:52:03 +00:00
ColinD 5b050c45c6 Removing the attmpt to get the LX200 to park 2024-11-12 18:29:41 +00:00
ColinD 44c59d1a55 Removing these commands as I think they're causing issues. Warning the scope will continue to track in RA after the "Park" is completed. 2024-11-12 18:05:13 +00:00
ColinD bb9fca7e9a Changing the park Alt for the LX200 to 0. 2024-11-12 16:24:00 +00:00
ColinD a0878ce153 Finish LX200ClassicParkingPosition 2024-11-06 16:52:24 +00:00
ColinD 80899b8056 Fixed problem where the tracking rate was using the local culture to convert a string to a double. 2024-11-06 16:48:46 +00:00
ColinD 99b3bce71a Merged in develop (pull request #49)
Develop
2023-06-10 21:41:29 +00:00
ColinD 4c7a40a8e4 Added extra values to GW translation.
Also added extra log message that includes the hour angle when calculating the destination side of pier.
2023-02-22 22:14:38 +00:00
ColinD 003dbe059a . doing the trim of the trailing # after writing the log message.
. for LX800 scopes, trying to use a send string instead of send chars for GW command.
2023-02-18 22:50:57 +00:00
ColinD c673e0c7d6 . doing the trim of the trailing # after writing the log message.
. for LX800 scopes, trying to use a send string instead of send chars for GW command.
2023-02-18 22:37:47 +00:00
ColinD 34dfa9276e Merged in develop (pull request #48)
Develop
2023-01-02 09:37:38 +00:00
ColinD 5678285e0e Added unit test to make sure that the LX200GPS with german firmware works as expected. 2023-01-02 09:31:05 +00:00
ColinD b263d5f3e2 Removed wrong test. 2023-01-01 22:37:22 +00:00
ColinD 4be35eb5d7 Added unit test for LX200GPS with german firmware 2023-01-01 22:31:23 +00:00
ColinD 4b78d8fb4f Added code to check for LX200GPS firmware version 4G0m which does not support the GW command. 2022-12-31 22:03:39 +00:00
ColinD 466d995873 Upgraded max steps to 30000 to allow for much much longer moves. 2022-11-26 17:10:46 +00:00
ColinD 1ce2afe9ce Trying the Ack command instead to see if this can workaround the CM bug. 2022-11-24 15:21:32 +00:00
ColinD d5108cf4db Adding a possible workaround to the Autostart not syncing problem 2022-11-23 16:06:38 +00:00
ColinD 888ab1aa46 Added LX800 series to scope as an autostar II based telescope. 2022-11-12 20:50:48 +00:00
ColinD 21d1d93235 Another attempt at the Dec value 2022-11-12 19:16:41 +00:00
ColinD 005643a7c7 Corrected all unit test setups. 2022-11-12 17:35:33 +00:00
ColinD 8539308cf3 oops 2022-11-12 17:34:24 +00:00
ColinD cd304f5955 Let's see what this does 2022-11-12 17:28:25 +00:00
ColinD da1d1baa30 Another tweak for the low preceion code. 2022-11-12 16:54:12 +00:00
ColinD a2b15f291d Needed to change one more thing 2022-11-12 15:47:35 +00:00
ColinD c380016b71 Changes the low precision target so that it's using seconds, instead of a fraction of a minute for the seconds portion of the coordinates. 2022-11-12 15:33:49 +00:00
ColinD febf52738e Set the path to open the logs folder properly 2022-11-10 20:31:30 +00:00
ColinD 7afa7458c7 Added comments for unit testing 2022-11-10 18:05:39 +00:00
ColinD 3ffa9fbe8b Nuget package updates 2022-11-10 17:57:45 +00:00
ColinD 6db59eaef1 Corrected Typo in name 2022-11-10 17:57:21 +00:00
ColinD cfa7e1d1cf Adding a catch so that when setting the precision, if one mode fails, try the other. 2022-11-10 16:53:27 +00:00
ColinD 129fc23d83 Added an attempt to use the short format to set the TargetRightAscension if the long format fails. 2022-11-10 15:30:16 +00:00
ColinD 5c3bb7d4ad Modified unit tests for force a pass. 2022-11-10 14:58:12 +00:00
ColinD e93da73431 Tried trimming a traingin : if it exists, that should not be part of the command sent to the scope. 2022-11-10 14:43:41 +00:00
ColinD 1e5bb04817 Added attempt to set the TargetRightAscension using the other format if one fails. 2022-11-10 14:34:10 +00:00
ColinD afd1c96671 Merged in develop (pull request #47)
Develop
2022-09-27 13:18:39 +00:00
ColinD e851fd0e01 Adding support for Audiostar to be returned as a Synonym of Autostar for GW detection. 2022-09-25 17:04:24 +01:00
ColinD fa7106a1b4 Adding extra tests to ensure that GetTracking is working correctly for the AudoStar 2022-09-20 12:47:24 +01:00
ColinD ef2ec06b0a Merged in develop (pull request #46)
Develop
2022-07-25 21:06:09 +00:00
ColinD 89f5b6d546 Merged in feature/AllowAltAzPulseGuiding (pull request #45)
Feature/AllowAltAzPulseGuiding
2022-07-25 21:01:18 +00:00
ColinD 349397b70f Fixed logging message 2022-07-25 21:57:52 +01:00
ColinD 9666811eff Added messages to include information about what is being sent via the serial port. 2022-07-25 16:08:50 +01:00
ColinD 7287990240 Added messages to include information about what is being sent via the serial port. 2022-07-25 16:07:55 +01:00
ColinD 6428e6d31b Added the tracelogger to the calls that send the actual serial commands. 2022-07-25 15:53:29 +01:00
ColinD 0fbb2331cf Added unit tests to show that StarPatch firmware can attempt pulse guide 2022-07-19 18:42:34 +01:00
ColinD faf2692fae Added code to allow pulseguide commands to be sent to telescopes with StarPatch installed. 2022-07-19 18:30:26 +01:00
ColinD d996d6f8d6 Revert "Added Wix installer as a nuget package. Hopefully this will fix the new build agent."
This reverts commit 57a76383bc.
2022-07-17 13:12:07 +01:00
ColinD 2a40807dc3 Revert "Attempting to override project restore"
This reverts commit adeab53bd3.
2022-07-17 13:12:07 +01:00
ColinD adeab53bd3 Attempting to override project restore 2022-07-17 12:46:41 +01:00
ColinD 57a76383bc Added Wix installer as a nuget package. Hopefully this will fix the new build agent. 2022-07-17 12:39:11 +01:00
ColinD 5f3157a58d Refactored code
Added support for setting the guide rate on the RCX400
2022-07-17 12:03:32 +01:00
ColinD 5f75916116 Added support for RCX400 using newer pulse guiding commands.
Refactored the connect set to be a little less cluttered.
2022-07-16 14:17:39 +01:00
ColinD aff44494bc Added long enter and goto commands. 2022-07-15 21:08:54 +01:00
ColinD 78e686b3cb Attempt to fix .net 4.8 install detection 2022-07-13 17:55:56 +01:00
ColinD 519005d892 Fixed the property name for .net framework 4.8 detection.
Fixed Typo in the Ascom Platform required line.
2022-07-13 17:41:22 +01:00
ColinD e0d51eae81 Removed redundant code. 2022-06-29 18:41:51 +01:00
ColinD 42f2f45866 Added test for StarParch firmware. PulseGuiding is always enabled. 2022-06-28 18:47:33 +01:00
ColinD 0066a6ebed Fixed broken unit test 2022-06-28 17:45:55 +01:00
ColinD 9b2818ddba Added pseudocode for detecting StarPatch firmware 2022-06-27 21:55:09 +01:00
ColinD 0806696d30 Added support for allowing pulse guiding for AltAz telescope using older guiding method. 2022-06-27 21:25:58 +01:00
ColinD fd4c524264 Upgraded requirements to need Ascom 6.6.0 and .net framework 4.8 or higher. 2022-06-24 20:05:40 +01:00
ColinD 4e0e105255 Merged in develop (pull request #44)
Develop
2022-05-17 19:57:34 +00:00
ColinD 3fa8079a41 Merged in feature/SideOfPier (pull request #43)
Feature/SideOfPier
2022-05-17 19:47:38 +00:00
ColinD 7dc96c650d tidied up old unneeded unit test code 2022-05-17 19:11:01 +01:00
ColinD 650fc04bca Changing how side of pier is calculated. 2022-05-16 18:59:55 +01:00
ColinD 5c2bd21f1e Merged in develop (pull request #42)
1.3.4
2022-05-14 12:12:54 +00:00
ColinD 39a6bfca80 Merged in feature/LX200ClassicPark (pull request #41)
Feature/LX200ClassicPark
2022-05-14 12:08:17 +00:00
ColinD f551081454 LX200 Park unit test added. 2022-05-14 12:57:00 +01:00
ColinD 5c362a5a9a Changed how the part position is calculated. 2022-05-10 11:39:40 +01:00
ColinD abb985559e Upgraded error trapping for all the public methods in the driver. 2022-05-09 20:06:01 +01:00
ColinD ddd6178416 Removed side of pier set that isn't needed. 2022-05-09 14:57:40 +01:00
ColinD 356377ce36 Removed the requirement for GW Support when trying to set the alignment mode. 2022-05-09 12:09:59 +01:00
ColinD 1b220334d6 Added a general try catch to the UnPark method. 2022-05-08 15:31:56 +01:00
ColinD bb54356b58 Added more loggins to the unparking process 2022-05-08 15:22:04 +01:00
ColinD ebca231d9a Made sure that the alignment mode is preserved when parked, across sessions. 2022-05-08 15:15:30 +01:00
ColinD 2b5205d9c5 I think this will allow the LX200Classic to unpark 2022-05-08 14:46:53 +01:00
ColinD 81d2b98bfe Added ability to unpark the LX200 Classic 2022-05-08 14:30:39 +01:00
ColinD 9ee6adf063 Merge remote-tracking branch 'origin/feature/LX200ClassicPark' into feature/LX200ClassicPark
# Conflicts:
#	Meade.net/SharedResources.cs
2022-05-08 13:01:49 +01:00
ColinD 554b1af082 Maybe this is what's missing to get the telescope to park 2022-05-08 13:00:05 +01:00
ColinD 70f72e3df7 Upgraded the align mode command to have a retry and added support for land mode. 2022-05-08 13:00:05 +01:00
ColinD 3af02920c4 Added more logging to DoSlewAsync, Added a retry to the AltAz Slew. 2022-05-08 13:00:05 +01:00
ColinD ede7c33302 Added Alt Az coordinates to the connected message. 2022-05-08 13:00:05 +01:00
ColinD 9866578cab Added more error checks for connected, and found a couple of logic holds in the code that sets the IsConnected property. 2022-05-08 12:58:28 +01:00
ColinD d9093635de Added a log message for when connected check fails. 2022-05-08 12:58:27 +01:00
ColinD 885edba1c5 Removed the AL command as I think it's failing 2022-05-08 12:58:27 +01:00
ColinD 1949c50764 Modified the deubgging information. 2022-05-08 12:58:27 +01:00
ColinD 2b7d12fac9 Added some debugging messages 2022-05-08 12:58:26 +01:00
ColinD f168acc90b Added work around for LX200 classed to be able to turn tracking off when parking. 2022-05-08 12:58:26 +01:00
ColinD 8f6ea33139 Changes LX200 Park to use Alt 0 Az 0. i.e. Pointing level and North 2022-05-08 12:58:26 +01:00
ColinD c6f938bd5c Merge remote-tracking branch 'origin/feature/LX200ClassicPark' into feature/LX200ClassicPark 2022-05-08 12:58:25 +01:00
ColinD c271f0c4d3 New Park routine for the LX-200 Classic, uses the same technique as the 5.0.4 driver. 2022-05-08 12:58:25 +01:00
ColinD 35a76fe52c Merged in feature/PortSpeed (pull request #40)
Feature/PortSpeed

* Added support for changing the speed of the autostar

* Added support for changing the speed of the autostar

* Merge remote-tracking branch 'origin/feature/PortSpeed' into feature/PortSpeed

* Upgraded unit testing to make sure that speed changes are properly tested
2022-05-08 11:52:45 +00:00
ColinD 64e42f961c Maybe this is what's missing to get the telescope to park 2022-05-07 19:37:16 +01:00
ColinD 8eb093c13a Upgraded the align mode command to have a retry and added support for land mode. 2022-05-07 18:09:37 +01:00
ColinD a204f9c57f Added more logging to DoSlewAsync, Added a retry to the AltAz Slew. 2022-05-07 16:54:22 +01:00
ColinD 700802033b Added Alt Az coordinates to the connected message. 2022-05-07 14:00:29 +01:00
ColinD 350dd23ed1 Added more error checks for connected, and found a couple of logic holds in the code that sets the IsConnected property. 2022-05-07 12:22:46 +01:00
ColinD 5e65ea7946 Added a log message for when connected check fails. 2022-05-07 12:15:45 +01:00
ColinD 0c70688b60 Removed the AL command as I think it's failing 2022-05-07 10:00:57 +01:00
ColinD af3cca7611 Modified the deubgging information. 2022-05-06 21:31:12 +01:00
ColinD ef498fc5a0 Added some debugging messages 2022-05-06 20:09:40 +01:00
ColinD ceca3a15dc Added work around for LX200 classed to be able to turn tracking off when parking. 2022-05-06 13:39:34 +01:00
ColinD a9b8a60e43 Changes LX200 Park to use Alt 0 Az 0. i.e. Pointing level and North 2022-05-06 12:14:24 +01:00
ColinD 7a85f7ca9e Merge remote-tracking branch 'origin/feature/LX200ClassicPark' into feature/LX200ClassicPark 2022-05-05 21:50:28 +01:00
ColinD 57c5a34fe2 New Park routine for the LX-200 Classic, uses the same technique as the 5.0.4 driver. 2022-05-05 21:50:13 +01:00
ColinD a68e86d8cd Added unit tests for long duration pulse guides. 2022-05-05 20:56:18 +01:00
ColinD 503eec38a3 Added check to ensure that telescope is in Polar Mode when attempting to PulseGuide. CanPulseGuide also fails when scope is in AltAz mode. 2022-05-05 20:40:51 +01:00
ColinD ed54487a88 New Park routine for the LX-200 Classic, uses the same technique as the 5.0.4 driver. 2022-05-05 18:55:38 +01:00
ColinD f788320927 Refactor to use ProfileProperties instead of assigning individual variables.
Added support for ApertureArea and ApertureDiameter
2022-05-03 21:57:25 +01:00
ColinD dc68bb0b4c Added Focal Length property to telescope setup screen 2022-04-28 23:55:35 +01:00
ColinD 1a66f41d78 Add support for the IsGuiding function 2022-04-28 23:20:56 +01:00
ColinD 826f887bdf Added mossing file 2021-12-17 13:16:20 +00:00
ColinD 7ac3c95c8e modified the get tracking code to make it less better. amd more tolerant of lunar speeds, taken from Nasa and other sources (Info from David Richards) 2021-12-17 13:11:32 +00:00
ColinD acb1533f21 Upgraded the tracking rate detection, now detects solar, lunar and sidereal better than before. 2021-12-15 20:23:46 +00:00
ColinD eda3a53d6f Added logging to MoxingAxis call to see if a telescope axis is moving 2021-12-13 14:09:16 +00:00
ColinD 6786db65fe Overridden the alignment status ToString to help with logging 2021-12-13 12:58:40 +00:00
ColinD df7dfb7c04 Modified the implementation of side of pier support detection. Hopefully will now,
Added extra checking to ensure that a slew cannot be started whilst a slew is in progress.
2021-12-11 19:10:18 +00:00
ColinD 771e325067 Merged in develop (pull request #39)
Removed unneeded lock and will cause a lock recursion and break things.
2021-10-18 17:56:27 +00:00
ColinD a5a3bd5bd4 Removed unneeded lock and will cause a lock recursion and break things. 2021-10-14 13:50:24 +01:00
ColinD a605a3ed9d Merged in develop (pull request #38)
Develop
2021-09-26 16:18:18 +00:00
ColinD ad9169a48d Modified so that the driver supports either +60.1 or 60.1 for tracking rate 2021-09-26 16:50:46 +01:00
ColinD 3b056ef7f8 Fixed bug in tracking rate get where it always returns lunar when it should be sidereal 2021-09-17 09:38:35 +01:00
ColinD 710ae0420a Added left, right as sysonyms of back and forward for the handbox commands.
Added scrollup and scrolldown handbox commands as well.
2021-09-09 12:14:15 +01:00
ColinD 2a6b74c6fd Merged in develop (pull request #37)
version 1.3.1
2021-08-04 18:48:01 +00:00
ColinD 49c43358de Added check to ensure that the Lunar Tracking rate cannot be selected on the LX200 Classic. 2021-08-04 18:48:24 +01:00
ColinD 27a0f54b07 Added check to make sure that the tracking rate cannot be set for an LX200. 2021-08-04 17:01:06 +01:00
ColinD a562b848c0 Corrected the expected result of the GT command. 2021-08-04 09:22:31 +01:00
ColinD f4c26d777b Added more logging around the tracking rates.
Corrected the Command logged messages to use the correct info.
Added a try catch to the setup dialog to see if an error occurs to give a better message.
2021-08-03 21:55:06 +01:00
ColinD 8d8b50957c Merged in develop (pull request #36)
Develop
2021-07-03 12:35:42 +00:00
Sebastian Godelet faa6ad757e Merged in feature/GWSupport-update (pull request #35)
Feature/GWSupport update
2021-07-03 11:23:32 +00:00
Sebastian Godelet 64df8282a0 Support Set Tracking when GW is supported 2021-06-29 15:31:57 +10:00
Sebastian Godelet 8478af26bf Implemented TrackingRate via GT 2021-06-28 16:06:15 +10:00
Sebastian Godelet 77c87a51fa Moved IsGuiding to SharedResourcesWrapper 2021-06-28 13:03:07 +10:00
Sebastian Godelet 631aa91d94 Moved IsTargetCoordinateInitRequired to SharedResourcesWrapper 2021-06-28 12:53:05 +10:00
Sebastian Godelet 90713de34b Moved parked SiteLat/Long to ParkedPosition data 2021-06-28 12:45:26 +10:00
Sebastian Godelet a3408a86c3 Update unit tests to support GW command
SideOfPier also supports German EQ
2021-06-27 19:16:39 +10:00
Sebastian Godelet 74440b6b3b Merge branch 'develop' into feature/GWSupport 2021-06-25 15:34:58 +10:00
ColinD f1d100892b Removed nunit3 Test adapter 2021-06-23 13:18:30 +01:00
ColinD c6baab2b12 Added tolerance in unit test to allow for rounding error. 2021-06-23 13:11:33 +01:00
Sebastian Godelet f47b205025 Merged in feature/preserve-sop-target-radec-across-connections (pull request #34)
Preserve SideOfPier, Target{RA,DEC}, SlewSettleTime, Move axis across connections

Approved-by: Colin Dawson
2021-06-23 08:53:31 +00:00
Sebastian Godelet 6c27499769 Create generic ThreadSafeValue 2021-06-23 16:21:08 +10:00
Sebastian Godelet 6dff32505e Clarify thread-safe value test intention 2021-06-23 11:09:22 +10:00
Sebastian Godelet 7afd364efa Add tests for SharedResources properties
Ensure that default values are correct and no error appears
2021-06-22 17:43:25 +10:00
Sebastian Godelet 6fc476b031 Make further properties multi-client and thread-safe
Move MovingPrimary, MovingSecondary, EarliestNonSlewingTime to
SharedResources, make all new properties thread-safe (atomic)
operations.
2021-06-22 17:21:21 +10:00
Sebastian Godelet af750549fe Test that low-precision digit values are preserved across connections 2021-06-13 17:36:42 +10:00
Sebastian Godelet 2e3572375f Test that SideralTime is preserved across connections 2021-06-13 17:24:09 +10:00
Sebastian Godelet b23da15022 Make Focuser.cs ASCII compatible 2021-06-13 16:30:55 +10:00
Sebastian Godelet 0b75b8d2cd Remove now unneeded Setup for DestinationSideOfPier
DestinationSideOfPier will not call Slewing anymore,
since it reads the property from SharedResourcesWrapper directly.
2021-06-13 09:59:17 +10:00
Sebastian Godelet 036a9d7116 Add multi-connection test for TargetRightAscension 2021-06-13 09:45:07 +10:00
Sebastian Godelet 6c769f3649 Add SlewSettleTime and IsLongFormat to SharedResources interface
Also ensure that digit precision is set during initialisation
2021-06-12 20:09:51 +10:00
Sebastian Godelet bdbd206a54 Avoid possible data race condition when calculating DSOP 2021-06-12 16:22:38 +10:00
Sebastian Godelet 1684bd60bd Move SideOfPier, TargetRA/DEC properties to SharedResourcesWrapper
This change allows several instances of the driver to be in sync
w.r.t. TargetRightAscension, TargetDeclination and SideOfPier
2021-06-12 15:47:34 +10:00
Sebastian Godelet 8c4b08d0c6 Merged in feature/side-of-pier-unit-tests (pull request #33)
Add unit test around meridian flip detection

Approved-by: Colin Dawson
2021-06-07 10:30:52 +00:00
Sebastian Godelet fe3c106954 Add unit test around meridian flip detection 2021-06-07 17:58:20 +10:00
ColinD 3d0464f379 Merged in develop (pull request #32)
Develop
2021-06-06 13:44:33 +00:00
Sebastian Godelet d1b5652228 Merged in feature/add-side-of-pier (pull request #31)
Implemented SideOfPier and DestinationSideOfPier

Approved-by: Colin Dawson
2021-06-06 13:23:49 +00:00
Sebastian Godelet 65e06f2d6c Implemented SideOfPier and DestinationSideOfPier
For telescopes that automatically perform a meridian flip we can
implement the SideOfPier property by updating the current side of pier
after a telescope slew (via DestinationSideOfPier)
2021-06-06 19:44:40 +10:00
ColinD b27e50275d Added extra logging for CommandBlind, CommandBool, and CommandString. 2021-05-09 15:20:45 +01:00
ColinD a101d3a2d7 Merged in develop (pull request #30)
Develop
2021-04-29 15:18:42 +00:00
ColinD d7637928b7 Made sure that the telescope doesn't think it's parked for the first Telescope to connect. 2021-04-27 22:14:22 +01:00
ColinD 486a9205ee Fixed the defect when one instance of the driver gets parked, the info is shared to the other instances. 2021-04-27 22:08:25 +01:00
ColinD 2c2c59290e Reinstated the Real Alt Az methods for the LX200GPS. Changes how the parked behaviour is implemented, so that it doesn't need to make as many calls. 2021-04-27 20:14:57 +01:00
ColinD 70e615bb4e Made sure that CommandString, CommandBool and CommandBlind work as expected, complete with Raw and non raw support. (Implementation is the same as one of the LX200 drivers.) 2021-04-26 20:51:41 +01:00
ColinD 43ec63b0f5 Merged in develop (pull request #29)
Develop
2021-04-25 19:54:35 +00:00
ColinD 8c94fd6b71 Merge branch 'develop' into feature/GWSupport 2021-04-25 20:28:48 +01:00
ColinD f354bcdee1 Merged in feature/AddDateTimeByPass (pull request #28)
Feature/AddDateTimeByPass
2021-04-25 19:27:23 +00:00
ColinD e32c2aa50a Sorted out some code inspection issues 2021-04-25 20:16:07 +01:00
ColinD 795dc0c741 Added parked behaviour modes to the unit testing. 2021-04-25 19:58:09 +01:00
ColinD 22a8a794ba Added unit tests for check Parked, when parked mode is set to no coordinates 2021-04-25 19:17:56 +01:00
ColinD c6b54e273d Added unit testing for bypass feature, and setting the date on first connection 2021-04-25 18:27:44 +01:00
ColinD 7eec6c0008 Fixed some issued with the telescope parking and unparking. Now reports reported correctly for the LX200GPS, and Autostars 2021-04-24 22:29:11 +01:00
ColinD f9bb2aa879 Fixed the date format for the bypass date time setting for the LX-200GPS 2021-04-24 21:23:12 +01:00
ColinD 18ea52c972 Impemented the code changes to return co-ordinated when the telescope is parked.
Also added loads of checks for if the telescope is parked.
2021-04-24 20:52:21 +01:00
ColinD f4eafa668d Added a log for the display output 2021-04-24 19:30:46 +01:00
ColinD 53abdba374 Added extra logging. 2021-04-24 19:20:05 +01:00
ColinD fdd008fcfb Adding support for sending co-ordinates when scope is parked. 2021-04-24 19:16:36 +01:00
ColinD eaeae4d66b Combined the skip prompts and set date time code, to just one check box. 2021-04-24 13:16:08 +01:00
ColinD 6ac80c408c Fixed problem with changing the modifying the profile on the fly! 2021-04-24 13:07:42 +01:00
ColinD 9c5620edee Going to try the proper command for bypassing the date entry for AutostarII 2021-04-23 21:13:46 +01:00
ColinD ad40eb8b9a Fixed problem with Autostar not returning the correct value for IsSlewing 2021-04-23 20:45:48 +01:00
ColinD aca01de4ee Added a # prefix before the commands. 2021-04-23 19:45:10 +01:00
ColinD 384deecc3f More attempts to detect the slewing character 2021-04-23 19:11:45 +01:00
ColinD b27adf2649 Added check that returns [7F] when slewing 2021-04-23 18:58:14 +01:00
ColinD 2776b469c8 Fixed broken logic, and fixed broken unit tests. 2021-04-23 18:26:49 +01:00
ColinD fc3c91b975 Added extra logging to get slewing 2021-04-23 17:14:33 +01:00
ColinD e7c81aba24 Added code to force the date time to happen after the display bypass for autostar 497's 2021-04-23 16:51:05 +01:00
ColinD a15bf22785 Switched the order of the setting of the date and time, then skipping the prompts. 2021-04-23 15:00:03 +01:00
ColinD ed84313c2e Added initial display values bypass for the Autostar 497 2021-04-22 21:40:07 +01:00
ColinD e4af93dd07 Added ability to skip the prompts initial connect, and added ability to send the date and time on initial connect 2021-04-21 20:17:00 +01:00
ColinD 5538f51cf0 Merged in feature/SerialPort (pull request #27)
Feature/SerialPort
2021-04-21 16:35:02 +00:00
ColinD a2abbbb3d0 Working on a possible side of pier implementation 2021-04-21 17:24:40 +01:00
ColinD d0f12a604a Made the new serial options dropdownLists to help avoid ID10T errors. 2021-04-09 21:35:19 +01:00
ColinD 178ef8b11d Fixed the dataBits profile name, and upgraded the sharedresources unit tests for the new comport settings. 2021-04-09 20:43:12 +01:00
ColinD 0835431e76 Added new profile settings to the unit tests 2021-04-09 20:07:52 +01:00
ColinD bf6203d901 Added support for setting all serial properties. 2021-04-09 19:57:43 +01:00
ColinD 51bf99cb8c Started adding full serial port settings, so that people can do crazy things at their own risk. 2021-04-09 12:54:25 +01:00
ColinD 21e7bcd530 Added support for the GW Command.
Removed the implementation of Tracking Set as this does not do anything in the code.
Set Can Set Tracking to false.
Get tracking always returns true is the GW command is not supported.
2021-03-10 19:25:27 +00:00
ColinD 8713154e84 Merged in develop (pull request #26)
Version 1.0.0
2021-03-02 20:31:32 +00:00
ColinD 75b6f0b4b4 Added unit testing for the settle time delay on MoveAxis. 2021-03-02 20:24:43 +00:00
ColinD 032fb2e8a8 Code inspection 2021-03-02 20:24:13 +00:00
ColinD a5773aaaa9 Trying to change the inspections again 2021-03-02 14:23:42 +00:00
ColinD f88ad13f0d Testing to ignore unit tests from code inspections. 2021-03-02 14:02:12 +00:00
ColinD 9dde0d9e81 Another code inspection. 2021-03-02 13:49:02 +00:00
ColinD acc935248b Couple more code inspections, and changes the MoveAxis so that it will apply the settle time delay when not guiding. 2021-03-02 13:07:21 +00:00
ColinD cdf1066e4e Fixed a few more code inspections 2021-03-02 12:54:47 +00:00
ColinD f57a73843a Fixed a few code inspections 2021-03-01 11:19:27 +00:00
ColinD b0ef75ae66 Added code to include the settle time in the Moving Axis commands (except when moving at Guide Rate) 2021-03-01 09:55:07 +00:00
ColinD 136ccc8fa9 Added more places to initialise the slewing settle delay 2021-02-28 20:03:19 +00:00
ColinD e9491da707 Seperated the SlewSettleTime property from the ProfileSettle time, and implemented a delay on IsSlewing to use the combined SettleTimes 2021-02-27 21:20:06 +00:00
ColinD db06002ebf Added support for SlewSettleTime 2021-02-26 00:11:44 +00:00
ColinD ca1b7f8883 Merged in develop (pull request #24)
Made alteration to IsSlewing response when the LX200 returns a buffer of rubbish.
2021-02-10 10:24:54 +00:00
ColinD 14b5651795 Made alteration to IsSlewing response when the LX200 returns a buffer of rubbish. 2021-02-09 21:57:42 +00:00
66 changed files with 8670 additions and 2380 deletions
-1
View File
@@ -218,5 +218,4 @@ _Pvt_Extensions
# nCrunch items
*.ncrunchsolution
*.DotSettings
*.ncrunchproject
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
+81 -12
View File
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\NUnit.3.13.0\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" />
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
<Import Project="..\packages\NUnit.3.13.3\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -53,24 +57,75 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath>
<Reference Include="Castle.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.5.1.0\lib\net462\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.15.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.15.2\lib\net45\Moq.dll</HintPath>
<Reference Include="Microsoft.ApplicationInsights, Version=2.23.0.29, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.23.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.0\lib\net45\nunit.framework.dll</HintPath>
<Reference Include="Microsoft.Testing.Extensions.MSBuild, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.MSBuild.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Platform, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.1.7.3\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.AdapterUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.AdapterUtilities.17.13.0\lib\net462\Microsoft.TestPlatform.AdapterUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.CoreUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.PlatformAbstractions, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.PlatformAbstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.18.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.18.2\lib\net462\Moq.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.3.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.3\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=1.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.7.0.0-preview.2.22152.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
@@ -90,6 +145,10 @@
<Project>{64308775-bd4a-469c-bcab-3ed830b811af}</Project>
<Name>Meade.net.Telescope</Name>
</ProjectReference>
<ProjectReference Include="..\Meade.net\Meade.net.csproj">
<Project>{3689a2cb-94c5-4012-a5cf-7e7d1dd27143}</Project>
<Name>Meade.net</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
@@ -100,6 +159,16 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.0\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.3\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" />
</Project>
+2 -1
View File
@@ -123,7 +123,8 @@ namespace AstroMath.UnitTests
var altAz = _astroMath.ConvertEqToHoz(hourAngle, latitude, equatorialCoordinates);
Assert.That(altAz.Altitude, Is.EqualTo(20.958562421092779));
Assert.That(altAz.Altitude, Is.GreaterThan(20.958562421092770));
Assert.That(altAz.Altitude, Is.LessThanOrEqualTo(20.958562421092779));
Assert.That(altAz.Azimuth, Is.EqualTo(281.2728706962269));
}
+1 -1
View File
@@ -8,7 +8,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
+20 -5
View File
@@ -1,9 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Castle.Core" version="4.4.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="Moq" version="4.15.2" targetFramework="net472" />
<package id="NUnit" version="3.13.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="Castle.Core" version="5.1.0" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights" version="2.23.0" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform.MSBuild" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.TestPlatform.AdapterUtilities" version="17.13.0" targetFramework="net472" />
<package id="Microsoft.TestPlatform.ObjectModel" version="17.13.0" targetFramework="net472" />
<package id="Moq" version="4.18.2" targetFramework="net472" />
<package id="NUnit" version="3.13.3" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="5.1.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="7.0.0-preview.2.22152.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>
+3 -3
View File
@@ -10,7 +10,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ASCOM.MeadeGeneric</RootNamespace>
<AssemblyName>ASCOM.MeadeGeneric.Test</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
@@ -59,8 +59,8 @@
<ItemGroup>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL" />
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL" />
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
+1 -1
View File
@@ -1,3 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net45" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net48" />
</packages>
+42 -35
View File
@@ -15,6 +15,7 @@ namespace Meade.net.Focuser.UnitTests
{
private Mock<IUtil> _utilMock;
private Mock<ISharedResourcesWrapper> _sharedResourcesWrapperMock;
private Mock<ITraceLogger> _traceLoggerMock;
private ProfileProperties _profileProperties;
@@ -27,6 +28,12 @@ namespace Meade.net.Focuser.UnitTests
{
TraceLogger = false,
ComPort = "TestCom1",
Speed = 9600,
Parity = "None",
Handshake = "None",
StopBits = "One",
DataBits = 8,
GuideRateArcSecondsPerSecond = 1.23,
Precision = "Unchanged",
GuidingStyle = "Auto"
@@ -34,13 +41,13 @@ namespace Meade.net.Focuser.UnitTests
_utilMock = new Mock<IUtil>();
_sharedResourcesWrapperMock = new Mock<ISharedResourcesWrapper>();
_traceLoggerMock = new Mock<ITraceLogger>();
_sharedResourcesWrapperMock.Setup(x => x.Lock(It.IsAny<Action>())).Callback<Action>(action => { action(); });
_sharedResourcesWrapperMock = new Mock<ISharedResourcesWrapper>();
_sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(() => _profileProperties);
_focuser = new ASCOM.Meade.net.Focuser(_utilMock.Object, _sharedResourcesWrapperMock.Object);
_focuser = new ASCOM.Meade.net.Focuser(_utilMock.Object, _sharedResourcesWrapperMock.Object, _traceLoggerMock.Object);
}
private void ConnectFocuser()
@@ -103,16 +110,17 @@ namespace Meade.net.Focuser.UnitTests
Assert.That(exception.Message, Is.EqualTo("Not connected to focuser when trying to execute: CommandBlind"));
}
[Test]
public void CommandBlind_WhenConnected_ThenSendsExpectedMessage()
[TestCase(false)]
[TestCase(true)]
public void CommandBlind_WhenConnected_ThenSendsExpectedMessage(bool raw)
{
string expectedMessage = "test blind Message";
ConnectFocuser();
_focuser.CommandBlind(expectedMessage, true);
_focuser.CommandBlind(expectedMessage, raw);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(expectedMessage), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, expectedMessage, raw), Times.Once);
}
[Test]
@@ -124,16 +132,19 @@ namespace Meade.net.Focuser.UnitTests
Assert.That(exception.Message, Is.EqualTo("Not connected to focuser when trying to execute: CommandBool"));
}
[Test]
public void CommandBool_WhenConnected_ThenSendsExpectedMessage()
[TestCase(false)]
[TestCase(true)]
public void CommandBool_WhenConnected_ThenSendsExpectedMessage(bool raw)
{
string expectedMessage = "test blind Message";
_sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, expectedMessage, raw)).Returns(true);
ConnectFocuser();
var exception = Assert.Throws<MethodNotImplementedException>(() => { _focuser.CommandBool(expectedMessage, true); });
var result = _focuser.CommandBool(expectedMessage, raw);
Assert.That(exception.Message, Is.EqualTo("Method CommandBool is not implemented in this driver."));
_sharedResourcesWrapperMock.Verify(x => x.SendBool(_traceLoggerMock.Object, expectedMessage, raw), Times.Once);
Assert.That(result, Is.True);
}
[Test]
@@ -153,11 +164,11 @@ namespace Meade.net.Focuser.UnitTests
ConnectFocuser();
_sharedResourcesWrapperMock.Setup(x => x.SendString(sendMessage)).Returns(() => expectedMessage);
_sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, sendMessage, true)).Returns(() => expectedMessage);
var actualMessage = _focuser.CommandString(sendMessage, true);
_sharedResourcesWrapperMock.Verify(x => x.SendString(sendMessage), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, sendMessage, true), Times.Once);
Assert.That(actualMessage, Is.EqualTo(expectedMessage));
}
@@ -313,7 +324,7 @@ namespace Meade.net.Focuser.UnitTests
_focuser.Halt();
_sharedResourcesWrapperMock.Verify( x => x.SendBlind(":FQ#"), Times.AtLeastOnce);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "FQ", false), Times.AtLeastOnce);
}
[Test]
@@ -328,13 +339,13 @@ namespace Meade.net.Focuser.UnitTests
[TestCase(false)]
[TestCase(true)]
public void Link_Get_ReturnsSameValueAsConnected( bool connected)
public void Link_Get_ReturnsSameValueAsConnected(bool connected)
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => TelescopeList.Autostar497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => TelescopeList.Autostar497_31Ee);
_focuser.Connected = connected;
Assert.That( _focuser.Link, Is.EqualTo(connected));
Assert.That(_focuser.Link, Is.EqualTo(connected));
}
[TestCase(false)]
@@ -353,7 +364,7 @@ namespace Meade.net.Focuser.UnitTests
{
var result = _focuser.MaxIncrement;
Assert.That(result, Is.EqualTo(7000));
Assert.That(result, Is.EqualTo(30000));
}
[Test]
@@ -361,7 +372,7 @@ namespace Meade.net.Focuser.UnitTests
{
var result = _focuser.MaxStep;
Assert.That(result, Is.EqualTo(7000));
Assert.That(result, Is.EqualTo(30000));
}
[Test]
@@ -371,8 +382,8 @@ namespace Meade.net.Focuser.UnitTests
Assert.That(exception.Message, Is.EqualTo("Not connected to focuser when trying to execute: Move"));
}
[TestCase(-7001)]
[TestCase(7001)]
[TestCase(-30001)]
[TestCase(300001)]
public void Move_WhenLargerThanMaxIncrement_ThenThrowsException(int position)
{
ConnectFocuser();
@@ -388,12 +399,12 @@ namespace Meade.net.Focuser.UnitTests
_focuser.Move(0);
_utilMock.Verify( x => x.WaitForMilliseconds(It.IsAny<int>()), Times.Never);
_utilMock.Verify(x => x.WaitForMilliseconds(It.IsAny<int>()), Times.Never);
}
[TestCase(200)]
[TestCase(-200)]
public void Move_WhenIncrementIsNot0_ThenMovesFocuserAndStopsFocuser( int position)
public void Move_WhenIncrementIsNot0_ThenMovesFocuserAndStopsFocuser(int position)
{
_profileProperties.BacklashCompensation = 0;
@@ -403,17 +414,15 @@ namespace Meade.net.Focuser.UnitTests
if (position < 0)
{
_sharedResourcesWrapperMock.Verify( x => x.SendBlind(":F-#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F+#"), Times.Never);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F-", false), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F+", false), Times.Never);
}
else
{
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F-#"), Times.Never);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F+#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F-", false), Times.Never);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F+", false), Times.Once);
}
_sharedResourcesWrapperMock.Verify( x => x.Lock(It.IsAny<Action>()), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(Math.Abs(position)), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(Math.Abs(_profileProperties.BacklashCompensation)), Times.Never);
_utilMock.Verify(x => x.WaitForMilliseconds(100), Times.Once());
@@ -431,22 +440,20 @@ namespace Meade.net.Focuser.UnitTests
if (position < 0)
{
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F-#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F+#"), Times.Never);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F-", false), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F+", false), Times.Never);
_utilMock.Verify(x => x.WaitForMilliseconds(Math.Abs(position)), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(Math.Abs(_profileProperties.BacklashCompensation)), Times.Never);
_utilMock.Verify(x => x.WaitForMilliseconds(100), Times.Exactly(1));
}
else
{
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F-#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":F+#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F-", false), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "F+", false), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(Math.Abs(position) + _profileProperties.BacklashCompensation), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(_profileProperties.BacklashCompensation), Times.Once);
_utilMock.Verify(x => x.WaitForMilliseconds(100), Times.Exactly(2));
}
_sharedResourcesWrapperMock.Verify(x => x.Lock(It.IsAny<Action>()), Times.Once);
}
[Test]
@@ -497,7 +504,7 @@ namespace Meade.net.Focuser.UnitTests
{
var exception = Assert.Throws<PropertyNotImplementedException>(() =>
{
var result = _focuser.Temperature;
var result = _focuser.Temperature;
Assert.Fail($"{result} should not have a value");
});
Assert.That(exception.Message, Is.EqualTo("Property read Temperature is not implemented in this driver."));
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\NUnit.3.13.0\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" />
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
<Import Project="..\packages\NUnit.3.13.3\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -36,56 +40,107 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath>
<Reference Include="Castle.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.5.1.0\lib\net462\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.15.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.15.2\lib\net45\Moq.dll</HintPath>
<Reference Include="Microsoft.ApplicationInsights, Version=2.23.0.29, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.23.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.0\lib\net45\nunit.framework.dll</HintPath>
<Reference Include="Microsoft.Testing.Extensions.MSBuild, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.MSBuild.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Platform, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.1.7.3\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.AdapterUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.AdapterUtilities.17.13.0\lib\net462\Microsoft.TestPlatform.AdapterUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.CoreUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.PlatformAbstractions, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.PlatformAbstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.18.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.18.2\lib\net462\Moq.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.3.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.3\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=1.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.7.0.0-preview.2.22152.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
@@ -102,7 +157,6 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
@@ -120,6 +174,16 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.0\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.3\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" />
</Project>
+1 -1
View File
@@ -8,7 +8,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
+21 -6
View File
@@ -1,10 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="Castle.Core" version="4.4.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="Moq" version="4.15.2" targetFramework="net472" />
<package id="NUnit" version="3.13.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="Castle.Core" version="5.1.0" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights" version="2.23.0" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform.MSBuild" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.TestPlatform.AdapterUtilities" version="17.13.0" targetFramework="net472" />
<package id="Microsoft.TestPlatform.ObjectModel" version="17.13.0" targetFramework="net472" />
<package id="Moq" version="4.18.2" targetFramework="net472" />
<package id="NUnit" version="3.13.3" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="5.1.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="7.0.0-preview.2.22152.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>
+5 -5
View File
@@ -21,13 +21,13 @@
Type="raw" />
</Property>
<Condition Message="This application requires Ascom Platform 6.4 SP1 or higher. Please install this before installing the driver.">
<![CDATA[Installed OR ASCOMPLATFORMVERSION >= "6.4.1"]]>
<Condition Message="This application requires Ascom Platform 6.6.0 or higher. Please install this before installing the driver.">
<![CDATA[Installed OR ASCOMPLATFORMVERSION >= "6.6.0"]]>
</Condition>
<PropertyRef Id="NETFRAMEWORK45"/>
<Condition Message="This application requires .NET Framework 4.5 or higher. Please install the .NET Framework then run this installer again.">
<![CDATA[Installed OR NETFRAMEWORK45]]>
<PropertyRef Id='WIXNETFX4RELEASEINSTALLED'/>
<Condition Message="This application requires .NET Framework 4.8 or higher. Please install the .NET Framework then run this installer again.">
<![CDATA[Installed OR (WIXNETFX4RELEASEINSTALLED >= "#528040")]]>
</Condition>
<!-- <Condition Message="Please use the correct installer for your operating system - x86 for 32-bit, x64 for 64-bit.">
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\NUnit.3.13.0\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" />
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
<Import Project="..\packages\NUnit.3.13.3\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -57,56 +61,108 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath>
<Reference Include="Castle.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.5.1.0\lib\net462\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.15.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.15.2\lib\net45\Moq.dll</HintPath>
<Reference Include="Microsoft.ApplicationInsights, Version=2.23.0.29, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.23.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.0\lib\net45\nunit.framework.dll</HintPath>
<Reference Include="Microsoft.Testing.Extensions.MSBuild, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.MSBuild.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Platform, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.1.7.3\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.AdapterUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.AdapterUtilities.17.13.0\lib\net462\Microsoft.TestPlatform.AdapterUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.CoreUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.PlatformAbstractions, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.PlatformAbstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.18.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.18.2\lib\net462\Moq.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.3.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.3\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=1.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.7.0.0-preview.2.22152.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
@@ -132,7 +188,6 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
@@ -140,6 +195,16 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.0\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.3\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" />
</Project>
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -4,7 +4,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+21 -6
View File
@@ -1,10 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="Castle.Core" version="4.4.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="Moq" version="4.15.2" targetFramework="net472" />
<package id="NUnit" version="3.13.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="Castle.Core" version="5.1.0" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights" version="2.23.0" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform.MSBuild" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.TestPlatform.AdapterUtilities" version="17.13.0" targetFramework="net472" />
<package id="Microsoft.TestPlatform.ObjectModel" version="17.13.0" targetFramework="net472" />
<package id="Moq" version="4.18.2" targetFramework="net472" />
<package id="NUnit" version="3.13.3" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="5.1.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="7.0.0-preview.2.22152.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>
+12
View File
@@ -0,0 +1,12 @@
namespace ASCOM.Meade.net
{
public enum Alignment
{
NeedsAlignment,
OneStarAligned,
TwoStarAligned,
ThreeStarAligned,
AlignedOnHome,
ScopeWasParked,
}
}
+16
View File
@@ -0,0 +1,16 @@
using ASCOM.DeviceInterface;
namespace ASCOM.Meade.net
{
public class AlignmentStatus
{
public AlignmentModes AlignmentMode { get; set; }
public bool Tracking { get; set; }
public Alignment Status { get; set; }
public override string ToString()
{
return $"AlignmentStatus AlignmentMode={AlignmentMode};Tracking={Tracking};Status={Status}";
}
}
}
@@ -58,7 +58,7 @@ namespace ASCOM.Meade.net.AstroMaths
t0 -= 24;
}
var ut = DateTimeToDecimalHours(utcDateTime);
var ut = utcDateTime.DateTimeToDecimalHours();
var a = ut * 1.002737909;
var t1 = t0 + a;
+9
View File
@@ -0,0 +1,9 @@
using System;
namespace ASCOM.Meade.net
{
public class Clock : IClock
{
public DateTime UtcNow => DateTime.UtcNow;
}
}
@@ -0,0 +1,10 @@
namespace System
{
static class DoubelExtensions
{
public static bool Between(this double value, double lower, double higher)
{
return value >= lower & value <= higher;
}
}
}
+9
View File
@@ -0,0 +1,9 @@
using System;
namespace ASCOM.Meade.net
{
public interface IClock
{
DateTime UtcNow { get; }
}
}
+25 -17
View File
@@ -62,7 +62,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>..\bin\Release\</OutputPath>
<Prefer32Bit>false</Prefer32Bit>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<OutputPath>..\bin\Debug\</OutputPath>
@@ -71,40 +71,40 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
@@ -118,14 +118,18 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Alignment.cs" />
<Compile Include="AlignmentStatus.cs" />
<Compile Include="AstroMaths\AltitudeData.cs" />
<Compile Include="AstroMaths\AstroMathExtensions.cs" />
<Compile Include="AstroMaths\AstroMaths.cs" />
<Compile Include="AstroMaths\EquatorialCoordinates.cs" />
<Compile Include="AstroMaths\HorizonCoordinates.cs" />
<Compile Include="AstroMaths\IAstroMaths.cs" />
<Compile Include="Clock.cs" />
<Compile Include="ComparisonResult.cs" />
<Compile Include="DoubleExtensions.cs" />
<Compile Include="ExtensionMethods\DoubelExtensions.cs" />
<Compile Include="IClock.cs" />
<Compile Include="StringExtensions.cs" />
<Compile Include="Telescope.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -152,7 +156,6 @@
<None Include="app.config" />
<None Include="ASCOM.png" />
<None Include="ASCOMDriverTemplate.snk" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@@ -184,12 +187,17 @@
<Name>Meade.net</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
@@ -1,5 +1,8 @@
<ProjectConfiguration>
<Settings>
<HiddenComponentWarnings>
<Value>CopyReferencedAssembliesToWorkspaceIsOn</Value>
</HiddenComponentWarnings>
<UseCPUArchitecture>x86</UseCPUArchitecture>
</Settings>
</ProjectConfiguration>
+7 -3
View File
@@ -149,15 +149,19 @@ namespace ASCOM.Meade.net
// Default constructor - Internal prevents public creation
// of instances. Returned by Telescope.AxisRates.
//
internal TrackingRates()
internal TrackingRates(bool supportsLunar)
{
//
// This array must hold ONE or more DriveRates values, indicating
// the tracking rates supported by your telescope. The one value
// (tracking rate) that MUST be supported is driveSidereal!
//
_trackingRates = new[] { DriveRates.driveSidereal, DriveRates.driveLunar };
// TODO Initialize this array with any additional tracking rates that your driver may provide
if (supportsLunar)
{
_trackingRates = new[] {DriveRates.driveSidereal, DriveRates.driveLunar};
}
else
_trackingRates = new[] { DriveRates.driveSidereal };
}
#region ITrackingRates Members
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
</packages>
+92 -24
View File
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\NUnit.3.13.0\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" />
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" />
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
<Import Project="..\packages\NUnit.3.13.3\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -35,56 +39,107 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath>
<Reference Include="Castle.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.5.1.0\lib\net462\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.15.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.15.2\lib\net45\Moq.dll</HintPath>
<Reference Include="Microsoft.ApplicationInsights, Version=2.23.0.29, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.23.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.0\lib\net45\nunit.framework.dll</HintPath>
<Reference Include="Microsoft.Testing.Extensions.MSBuild, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.MSBuild.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.7.3\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Testing.Platform, Version=1.7.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Testing.Platform.1.7.3\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.AdapterUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.AdapterUtilities.17.13.0\lib\net462\Microsoft.TestPlatform.AdapterUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.CoreUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.PlatformAbstractions, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.TestPlatform.PlatformAbstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.13.0\lib\net462\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.18.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.18.2\lib\net462\Moq.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.13.3.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.13.3\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=1.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.7.0.0-preview.2.22152.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
@@ -98,6 +153,10 @@
<ItemGroup>
<Compile Include="SharedResourcesUnitTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ThreadSafeBoolTests.cs" />
<Compile Include="ThreadSafeDateTimeTests.cs" />
<Compile Include="ThreadSafeEnumTests.cs" />
<Compile Include="ThreadSafeNullableDoubleTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Meade.net\Meade.net.csproj">
@@ -107,7 +166,6 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
@@ -115,6 +173,16 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\NUnit.3.13.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.0\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\NUnit.3.13.3\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.3\build\NUnit.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.7.3\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.7.3\build\netstandard2.0\Microsoft.Testing.Platform.targets')" />
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.7.3\build\Microsoft.Testing.Platform.MSBuild.targets')" />
<Import Project="..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets" Condition="Exists('..\packages\NUnit3TestAdapter.5.1.0\build\net462\NUnit3TestAdapter.targets')" />
</Project>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,39 @@
using ASCOM.Meade.net;
using NUnit.Framework;
namespace Meade.net.UnitTests
{
public class ThreadSafeBoolTests
{
[TestCase(false)]
[TestCase(true)]
public void When_Assigned_ThenValueIsSame(bool value)
{
// given
ThreadSafeValue<bool> sut = value;
// when
bool actual = sut;
// then
Assert.That(actual, Is.EqualTo(value));
}
[TestCase(false, false)]
[TestCase(false, true)]
[TestCase(true, false)]
[TestCase(true, true)]
public void When_SetValue_ThenValueIsUpdated(bool initialValue, bool setValue)
{
// given
ThreadSafeValue<bool> sut = initialValue;
// when
sut.Set(setValue);
bool afterset = sut;
// then
Assert.That(afterset, Is.EqualTo(setValue));
}
}
}
@@ -0,0 +1,61 @@
using ASCOM.Meade.net;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Globalization;
namespace Meade.net.UnitTests
{
public class ThreadSafeDateTimeTests
{
[TestCaseSource(nameof(DateTimeSource))]
public void When_Assigned_ThenValueIsSame(DateTime value)
{
// given
ThreadSafeValue<DateTime> sut = value;
// when
DateTime actual = sut;
// then
Assert.That(actual, Is.EqualTo(value));
}
[TestCaseSource(nameof(DateTimeSetSource))]
public void When_SetValue_ThenValueIsUpdated(DateTime initialValue, DateTime setValue)
{
// given
ThreadSafeValue<DateTime> sut = initialValue;
// when
sut.Set(setValue);
DateTime afterset = sut;
// then
Assert.That(afterset, Is.EqualTo(setValue));
}
static readonly DateTime Example1 = DateTimeOffset.Parse("2012-05-09T02:10:31.296761Z", CultureInfo.InvariantCulture).UtcDateTime;
static readonly DateTime Example2 = DateTimeOffset.Parse("2051-03-09T23:15:11.556081Z", CultureInfo.InvariantCulture).UtcDateTime;
static IEnumerable<DateTime> DateTimeSource => new[]
{
DateTime.MinValue,
Example1,
Example2
};
static IEnumerable<TestCaseData> DateTimeSetSource => new[]
{
new TestCaseData(DateTime.MinValue, Example1),
new TestCaseData(DateTime.MinValue, Example2),
new TestCaseData(DateTime.MinValue, DateTime.MinValue),
new TestCaseData(Example1, Example1),
new TestCaseData(Example1, Example2),
new TestCaseData(Example1, DateTime.MinValue),
new TestCaseData(Example2, Example1),
new TestCaseData(Example2, Example2),
new TestCaseData(Example2, DateTime.MinValue)
};
}
}
@@ -0,0 +1,46 @@
using ASCOM.DeviceInterface;
using ASCOM.Meade.net;
using NUnit.Framework;
namespace Meade.net.UnitTests
{
public class ThreadSafeEnumTests
{
[TestCase(PierSide.pierUnknown)]
[TestCase(PierSide.pierEast)]
[TestCase(PierSide.pierWest)]
public void When_Assigned_ThenValueIsSame(PierSide value)
{
// given
ThreadSafeValue<PierSide> sut = value;
// when
PierSide actual = sut;
// then
Assert.That(actual, Is.EqualTo(value));
}
[TestCase(PierSide.pierUnknown, PierSide.pierUnknown)]
[TestCase(PierSide.pierUnknown, PierSide.pierEast)]
[TestCase(PierSide.pierUnknown, PierSide.pierWest)]
[TestCase(PierSide.pierEast, PierSide.pierUnknown)]
[TestCase(PierSide.pierEast, PierSide.pierEast)]
[TestCase(PierSide.pierEast, PierSide.pierWest)]
[TestCase(PierSide.pierWest, PierSide.pierUnknown)]
[TestCase(PierSide.pierWest, PierSide.pierEast)]
[TestCase(PierSide.pierWest, PierSide.pierWest)]
public void When_SetValue_ThenValueIsUpdated(PierSide initialValue, PierSide setValue)
{
// given
ThreadSafeValue<PierSide> sut = initialValue;
// when
sut.Set(setValue);
PierSide afterset = sut;
// then
Assert.That(afterset, Is.EqualTo(setValue));
}
}
}
@@ -0,0 +1,45 @@
using ASCOM.Meade.net;
using NUnit.Framework;
namespace Meade.net.UnitTests
{
public class ThreadSafeNullableDoubleTests
{
[TestCase(0.1d)]
[TestCase(-12.34d)]
[TestCase(0d)]
[TestCase(null)]
public void When_Assigned_ThenValueIsSame(double? value)
{
// given
ThreadSafeValue<double?> sut = value;
// when
double? actual = sut;
// then
Assert.That(actual, Is.EqualTo(value));
}
[TestCase(0.1d, 0.2d)]
[TestCase(-12.34d, 5d)]
[TestCase(0d, 1d)]
[TestCase(null, 2d)]
[TestCase(0.1d, null)]
[TestCase(-12.34d, null)]
[TestCase(0d, null)]
[TestCase(null, null)]
public void When_SetValue_ThenValueIsUpdated(double? initialValue, double? setValue)
{
// given
ThreadSafeValue<double?> sut = initialValue;
// when
sut.Set(setValue);
double? afterset = sut;
// then
Assert.That(afterset, Is.EqualTo(setValue));
}
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
+22 -6
View File
@@ -1,10 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="Castle.Core" version="4.4.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="Moq" version="4.15.2" targetFramework="net472" />
<package id="NUnit" version="3.13.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="Castle.Core" version="5.1.0" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights" version="2.23.0" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.Testing.Platform.MSBuild" version="1.7.3" targetFramework="net472" />
<package id="Microsoft.TestPlatform.AdapterUtilities" version="17.13.0" targetFramework="net472" />
<package id="Microsoft.TestPlatform.ObjectModel" version="17.13.0" targetFramework="net472" />
<package id="Moq" version="4.18.2" targetFramework="net472" />
<package id="NUnit" version="3.13.3" targetFramework="net472" />
<package id="NUnit.ConsoleRunner" version="3.15.2" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="5.1.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="7.0.0-preview.2.22152.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>
+67 -63
View File
@@ -43,7 +43,7 @@ namespace ASCOM.Meade.net
/// Private variable to hold an ASCOM Utilities object
/// </summary>
private readonly IUtil _utilities;
/// <summary>
/// Initializes a new instance of the <see cref="Meade.net"/> class.
/// Must be public for COM registration.
@@ -57,11 +57,11 @@ namespace ASCOM.Meade.net
Initialise(nameof(Focuser));
}
public Focuser(IUtil util, ISharedResourcesWrapper sharedResourcesWrapper) : base(sharedResourcesWrapper)
public Focuser(IUtil util, ISharedResourcesWrapper sharedResourcesWrapper, ITraceLogger traceLogger) : base(sharedResourcesWrapper)
{
_utilities = util;
Initialise(nameof(Focuser));
Initialise(nameof(Focuser), traceLogger);
}
//
@@ -78,17 +78,17 @@ namespace ASCOM.Meade.net
/// </summary>
public void SetupDialog()
{
Tl.LogMessage("SetupDialog", "Opening setup dialog");
Tl.LogMessage("SetupDialog", "Opening setup dialog", false);
SharedResourcesWrapper.SetupDialog();
ReadProfile();
Tl.LogMessage("SetupDialog", "complete");
Tl.LogMessage("SetupDialog", "complete", false);
}
public ArrayList SupportedActions
{
get
{
Tl.LogMessage("SupportedActions Get", "Returning empty arraylist");
Tl.LogMessage("SupportedActions Get", "Returning empty arraylist", false);
return new ArrayList();
}
}
@@ -101,32 +101,39 @@ namespace ASCOM.Meade.net
public void CommandBlind(string command, bool raw)
{
LogMessage("CommandBlind", "raw: {0} command {0}", raw, command);
CheckConnected("CommandBlind");
// Call CommandString and return as soon as it finishes
//this.CommandString(command, raw);
SharedResourcesWrapper.SendBlind(command);
SharedResourcesWrapper.SendBlind(Tl, command, raw);
// or
//throw new ASCOM.MethodNotImplementedException("CommandBlind");
// DO NOT have both these sections! One or the other
LogMessage("CommandBlind", "Completed");
}
public bool CommandBool(string command, bool raw)
{
LogMessage("CommandBool", "raw: {0} command {0}", raw, command);
CheckConnected("CommandBool");
//string ret = CommandString(command, raw);
// decode the return string and return true or false
var result = SharedResourcesWrapper.SendBool(Tl, command, raw);
LogMessage("CommandBool", "Completed: {0}", result);
return result;
// or
throw new MethodNotImplementedException("CommandBool");
//throw new MethodNotImplementedException("CommandBool");
// DO NOT have both these sections! One or the other
}
public string CommandString(string command, bool raw)
{
LogMessage("CommandString", "raw: {0} command {0}", raw, command);
CheckConnected("CommandString");
// 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 SharedResourcesWrapper.SendString(command);
var result = SharedResourcesWrapper.SendString(Tl, command, raw);
LogMessage("CommandBool", "Completed: {0}", result);
return result;
//throw new ASCOM.MethodNotImplementedException("CommandString");
}
@@ -134,8 +141,8 @@ namespace ASCOM.Meade.net
{
// Clean up the tracelogger and util objects
Tl.Enabled = false;
Tl.Dispose();
Tl = null;
//Tl.Dispose();
//Tl = null;
}
public bool Connected
@@ -169,12 +176,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}", _profileProperties.ComPort, ex.Message);
}
}
else
{
LogMessage("Connected Set", "Disconnecting from port {0}", ComPort);
LogMessage("Connected Set", "Disconnecting from port {0}", _profileProperties.ComPort);
SharedResourcesWrapper.Disconnect("Serial", DriverId);
IsConnected = false;
}
@@ -197,7 +204,7 @@ namespace ASCOM.Meade.net
{
//string name = "Short driver name - please customise";
string name = DriverDescription;
Tl.LogMessage("Name Get", name);
Tl.LogMessage("Name Get", name, false);
return name;
}
}
@@ -212,20 +219,20 @@ namespace ASCOM.Meade.net
{
CheckConnected("Absolute Get");
Tl.LogMessage("Absolute Get", false.ToString());
Tl.LogMessage("Absolute Get", false.ToString(), false);
return false; // This is a relative focuser
}
}
public void Halt()
{
Tl.LogMessage("Halt", "Halting");
Tl.LogMessage("Halt", "Halting", false);
CheckConnected("Halt");
//todo fix this issue: A single halt command is sometimes missed by the #909 apm, so let's do it a few times to be safe.
SharedResourcesWrapper.SendBlind(":FQ#");
SharedResourcesWrapper.SendBlind(Tl, "FQ");
//:FQ# Halt Focuser Motion
//Returns: Nothing
}
@@ -234,7 +241,7 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("IsMoving Get", false.ToString());
Tl.LogMessage("IsMoving Get", false.ToString(), false);
return false; // This focuser always moves instantaneously so no need for IsMoving ever to be True
}
}
@@ -243,40 +250,40 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("Link Get", Connected.ToString());
Tl.LogMessage("Link Get", Connected.ToString(), false);
return Connected; // Direct function to the connected method, the Link method is just here for backwards compatibility
}
set
{
Tl.LogMessage("Link Set", value.ToString());
Tl.LogMessage("Link Set", value.ToString(), false);
Connected = value; // Direct function to the connected method, the Link method is just here for backwards compatibility
}
}
private readonly int _maxIncrement = 7000;
private readonly int _maxIncrement = 30000;
public int MaxIncrement
{
get
{
Tl.LogMessage("MaxIncrement Get", _maxIncrement.ToString());
Tl.LogMessage("MaxIncrement Get", _maxIncrement.ToString(), false);
return _maxIncrement; // Maximum change in one move
}
}
private readonly int _maxStep = 7000;
private readonly int _maxStep = 30000;
public int MaxStep
{
get
{
Tl.LogMessage("MaxStep Get", _maxStep.ToString());
Tl.LogMessage("MaxStep Get", _maxStep.ToString(), false);
return _maxStep;
}
}
public void Move(int position)
{
Tl.LogMessage("Move", position.ToString());
Tl.LogMessage("Move", position.ToString(), false);
CheckConnected("Move");
if (position < -MaxIncrement || position > MaxIncrement)
@@ -288,40 +295,37 @@ namespace ASCOM.Meade.net
return;
var direction = position > 0;
if (ReverseFocusDirection)
if (_profileProperties.ReverseFocusDirection)
direction = !direction;
//backlash compensation.
var backlashCompensationSteps = direction ? Math.Abs(_profileProperties.BacklashCompensation) : 0;
SharedResourcesWrapper.Lock(() =>
var steps = Math.Abs(position) + backlashCompensationSteps;
MoveFocuser(direction, steps);
//todo refactor the backlash compensation to combine the commands into as few moves as practicle.
//ApplyBacklashCompensation(direction);
if (direction & backlashCompensationSteps != 0)
{
//backlash compensation.
var backlashCompensationSteps = direction ? Math.Abs(BacklashCompensation) : 0;
Tl.LogMessage("Move", "Applying backlash compensation", false);
MoveFocuser(!direction, backlashCompensationSteps);
}
var steps = Math.Abs(position) + backlashCompensationSteps;
MoveFocuser(direction, steps);
//todo refactor the backlash compensation to combine the commands into as few moves as practicle.
//ApplyBacklashCompensation(direction);
if (direction & backlashCompensationSteps != 0)
{
Tl.LogMessage("Move", "Applying backlash compensation");
MoveFocuser(!direction, backlashCompensationSteps);
}
DynamicBreaking(direction);
//todo implement dynamic braking
//dynamic breaking is sending the command to move in the opposite direction immediatly followed by the command to stop.
});
DynamicBreaking(direction);
//todo implement dynamic braking
//dynamic breaking is sending the command to move in the opposite direction immediatly followed by the command to stop.
}
private void DynamicBreaking(bool directionOut)
{
if (!UseDynamicBreaking)
if (!_profileProperties.DynamicBreaking)
return;
Tl.LogMessage("Move", "Applying dynamic breaking");
Tl.LogMessage("Move", "Applying dynamic breaking", false);
PerformFocuserMove(directionOut);
Halt();
@@ -329,18 +333,18 @@ namespace ASCOM.Meade.net
private void MoveFocuser(bool directionOut, int steps)
{
//_sharedResourcesWrapper.SendBlind(":FF#");
//_sharedResourcesWrapper.SendBlind("FF");
//:FF# Set Focus speed to fastest setting
//Returns: Nothing
//:FS# Set Focus speed to slowest setting
//Returns: Nothing
//:F<n># Autostar, Autostar II set focuser speed to <n> where <n> is an ASCII digit 1..4
//:F<n># Autostar, Autostar II - set focuser speed to <n> where <n> is an ASCII digit 1..4
//Returns: Nothing
//All others Not Supported
//All others - Not Supported
_utilities.WaitForMilliseconds(100);
PerformFocuserMove(directionOut);
_utilities.WaitForMilliseconds(steps);
@@ -350,7 +354,7 @@ namespace ASCOM.Meade.net
private void PerformFocuserMove(bool directionOut)
{
SharedResourcesWrapper.SendBlind(directionOut ? ":F+#" : ":F-#");
SharedResourcesWrapper.SendBlind(Tl, directionOut ? "F+" : "F-");
//:F+# Start Focuser moving inward (toward objective)
//Returns: None
@@ -364,7 +368,7 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("StepSize Get", "Not implemented");
Tl.LogMessage("StepSize Get", "Not implemented", false);
throw new PropertyNotImplementedException("StepSize", false);
}
}
@@ -373,13 +377,13 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("TempComp Get", false.ToString());
Tl.LogMessage("TempComp Get", false.ToString(), false);
return false;
}
// ReSharper disable once ValueParameterNotUsed
set
{
Tl.LogMessage("TempComp Set", "Not implemented");
Tl.LogMessage("TempComp Set", "Not implemented", false);
throw new PropertyNotImplementedException("TempComp", false);
}
}
@@ -388,7 +392,7 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("TempCompAvailable Get", false.ToString());
Tl.LogMessage("TempCompAvailable Get", false.ToString(), false);
return false; // Temperature compensation is not available in this driver
}
}
@@ -397,7 +401,7 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("Temperature Get", "Not implemented");
Tl.LogMessage("Temperature Get", "Not implemented", false);
throw new PropertyNotImplementedException("Temperature", false);
}
}
@@ -411,7 +415,7 @@ namespace ASCOM.Meade.net
#region ASCOM Registration
// Register or unregister driver for ASCOM. This is harmless if already
// registered or unregistered.
// registered or unregistered.
//
/// <summary>
/// Register or unregister the driver with the ASCOM Platform.
@@ -481,7 +485,7 @@ namespace ASCOM.Meade.net
}
#endregion
/// <summary>
/// Use this function to throw an exception if we aren't connected to the hardware
/// </summary>
+13 -14
View File
@@ -83,40 +83,40 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
@@ -154,7 +154,6 @@
<None Include="app.config" />
<None Include="ASCOM.png" />
<None Include="ASCOMDriverTemplate.snk" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@@ -1,5 +1,8 @@
<ProjectConfiguration>
<Settings>
<HiddenComponentWarnings>
<Value>CopyReferencedAssembliesToWorkspaceIsOn</Value>
</HiddenComponentWarnings>
<UseCPUArchitecture>x86</UseCPUArchitecture>
</Settings>
</ProjectConfiguration>
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
</packages>
+6
View File
@@ -0,0 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/Housekeeping/ExcludedProjects/ProjectMasksToIgnore/=_002A_002A_005C_002A_002EUnitTests/@EntryIndexedValue">False</s:Boolean>
<s:Boolean x:Key="/Default/Housekeeping/ExcludedProjects/ProjectMasksToIgnore/=_002A_002A_005C_002A_002EUnitTests/@EntryIndexRemoved">True</s:Boolean>
<s:Boolean x:Key="/Default/Housekeeping/ExcludedProjects/ProjectMasksToIgnore/=_002A_002EUnitTests_002E_002A/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ASCOM/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Autostar/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
+2
View File
@@ -2,10 +2,12 @@
<Settings>
<AllowParallelTestExecution>True</AllowParallelTestExecution>
<CopyReferencedAssembliesToWorkspace>True</CopyReferencedAssembliesToWorkspace>
<EnableRDI>True</EnableRDI>
<MetricsExclusionList>
<Value>FocuserTestConsole\FocuserTestConsole.csproj</Value>
<Value>TelescopeTestConsole\TelescopeTestConsole.csproj</Value>
</MetricsExclusionList>
<RdiConfigured>True</RdiConfigured>
<SolutionConfigured>True</SolutionConfigured>
</Settings>
</SolutionConfiguration>
+39
View File
@@ -0,0 +1,39 @@
using System;
using System.Linq;
using System.Reflection;
namespace ASCOM.Meade.net
{
public static class EnumExtensionMethods
{
public static string GetDescription(this Enum GenericEnum)
{
var genericEnumType = GenericEnum.GetType();
var memberInfo = genericEnumType.GetMember(GenericEnum.ToString());
if (memberInfo.Length > 0)
{
var _Attribs = memberInfo[0]
.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
if (_Attribs.Any())
{
return ((System.ComponentModel.DescriptionAttribute) _Attribs.ElementAt(0)).Description;
}
}
return GenericEnum.ToString();
}
public static T GetValueFromDescription<T>( string description) where T : Enum
{
foreach (T value in Enum.GetValues(typeof(T)))
{
if (value.GetDescription() == description)
{
return value;
}
}
return default;
}
}
}
+16 -11
View File
@@ -337,18 +337,23 @@ namespace ASCOM.Meade.net
{
key?.SetValue(null, progid); // Could be assyTitle/Desc??, but .NET components show ProgId here
key?.SetValue("AppId", _sAppId);
using (RegistryKey key2 = key.CreateSubKey("Implemented Categories"))
if (key != null)
{
key2?.CreateSubKey("{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}");
}
using (RegistryKey key2 = key.CreateSubKey("ProgId"))
{
key2?.SetValue(null, progid);
}
key.CreateSubKey("Programmable");
using (RegistryKey key2 = key.CreateSubKey("LocalServer32"))
{
key2?.SetValue(null, Application.ExecutablePath);
using (RegistryKey key2 = key.CreateSubKey("Implemented Categories"))
{
key2?.CreateSubKey("{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}");
}
using (RegistryKey key2 = key.CreateSubKey("ProgId"))
{
key2?.SetValue(null, progid);
}
key.CreateSubKey("Programmable");
using (RegistryKey key2 = key.CreateSubKey("LocalServer32"))
{
key2?.SetValue(null, Application.ExecutablePath);
}
}
}
//
+20 -14
View File
@@ -86,40 +86,40 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCOM.Astrometry, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Astrometry.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Astrometry.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Attributes, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Attributes.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Attributes.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Cache, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Cache.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Cache.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Controls, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Controls.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Controls.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DeviceInterfaces.dll</HintPath>
</Reference>
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.DriverAccess.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.DriverAccess.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Exceptions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Exceptions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Exceptions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Internal.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Internal.Extensions.dll</HintPath>
</Reference>
<Reference Include="ASCOM.SettingsProvider, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.SettingsProvider.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.dll</HintPath>
</Reference>
<Reference Include="ASCOM.Utilities.Video, Version=6.1.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL">
<HintPath>..\packages\ASCOM.Platform.6.5.1\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
<HintPath>..\packages\ASCOM.Platform.6.5.2\lib\net40\ASCOM.Utilities.Video.dll</HintPath>
</Reference>
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Drawing" />
@@ -129,6 +129,7 @@
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ClassFactory.cs" />
<Compile Include="ConnectionInfo.cs" />
<Compile Include="EnumExtensionMethods.cs" />
<Compile Include="frmMain.cs">
<SubType>Form</SubType>
</Compile>
@@ -136,13 +137,18 @@
<DependentUpon>frmMain.cs</DependentUpon>
</Compile>
<Compile Include="GarbageCollection.cs" />
<Compile Include="AstroMaths\HorizonCoordinates.cs" />
<Compile Include="LocalServer.cs" />
<Compile Include="MeadeTelescopeBase.cs" />
<Compile Include="ParkedBehaviour.cs" />
<Compile Include="ParkedPosition.cs" />
<Compile Include="ProfileFactory.cs" />
<Compile Include="ProfileProperties.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TelescopeList.cs" />
<Compile Include="ThreadSafeValue.cs" />
<Compile Include="Win32Utilities.cs" />
<Compile Include="Wrapper\GetValueException.cs" />
<Compile Include="Wrapper\IProfileWrapper.cs" />
<Compile Include="Wrapper\SharedResourcesWrapper.cs" />
<EmbeddedResource Include="frmMain.resx">
@@ -174,7 +180,6 @@
<ItemGroup>
<Content Include="ASCOM.ico" />
<Content Include="ASCOM.png" />
<None Include="BootstrapAscomProfileStore.ps1" />
<None Include="packages.config" />
<None Include="Resources\ASCOM.bmp" />
</ItemGroup>
@@ -199,6 +204,7 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
+25 -32
View File
@@ -3,6 +3,7 @@ using System.Reflection;
using System.Runtime.InteropServices;
using ASCOM.Meade.net.Wrapper;
using ASCOM.Utilities;
using ASCOM.Utilities.Interfaces;
namespace ASCOM.Meade.net
{
@@ -12,23 +13,15 @@ namespace ASCOM.Meade.net
/// <summary>
/// Variable to hold the trace logger object (creates a diagnostic log file with information that you specify)
/// </summary>
protected static TraceLogger Tl;
protected static ITraceLogger Tl;
/// <summary>
/// Driver description that displays in the ASCOM Chooser.
/// </summary>
protected static readonly string DriverDescription = "Meade Generic";
protected static string ComPort; // Variables to hold the currrent device configuration
protected static int BacklashCompensation;
protected static bool ReverseFocusDirection;
protected static bool UseDynamicBreaking;
protected double GuideRate;
protected string Precision;
protected string GuidingStyle;
protected double SiteElevation;
protected readonly ISharedResourcesWrapper SharedResourcesWrapper;
protected ProfileProperties _profileProperties;
public MeadeTelescopeBase()
{
@@ -40,9 +33,9 @@ namespace ASCOM.Meade.net
SharedResourcesWrapper = sharedResourcesWrapper;
}
protected void Initialise(string className)
protected void Initialise(string className, ITraceLogger traceLogger = null)
{
Tl = new TraceLogger("", $"Meade.Generic.{className}");
Tl = traceLogger ?? new TraceLogger("", $"Meade.Generic.{className}");
ReadProfile(); // Read device configuration from the ASCOM Profile store
@@ -57,25 +50,25 @@ namespace ASCOM.Meade.net
/// </summary>
protected void ReadProfile()
{
var profileProperties = SharedResourcesWrapper.ReadProfile();
Tl.Enabled = profileProperties.TraceLogger;
ComPort = profileProperties.ComPort;
BacklashCompensation = profileProperties.BacklashCompensation;
ReverseFocusDirection = profileProperties.ReverseFocusDirection;
UseDynamicBreaking = profileProperties.DynamicBreaking;
GuideRate = profileProperties.GuideRateArcSecondsPerSecond;
Precision = profileProperties.Precision;
GuidingStyle = profileProperties.GuidingStyle.ToLower();
SiteElevation = profileProperties.SiteElevation;
_profileProperties = SharedResourcesWrapper.ReadProfile();
Tl.Enabled = _profileProperties.TraceLogger;
LogMessage("ReadProfile", $"Trace logger enabled: {Tl.Enabled}");
LogMessage("ReadProfile", $"Com Port: {ComPort}");
LogMessage("ReadProfile", $"Backlash Steps: {BacklashCompensation}");
LogMessage("ReadProfile", $"Dynamic breaking: {UseDynamicBreaking}");
LogMessage("ReadProfile", $"Guide Rate: {GuideRate}");
LogMessage("ReadProfile", $"Precision: {Precision}");
LogMessage("ReadProfile", $"Guiding Style: {GuidingStyle}");
LogMessage("ReadProfile", $"Site Elevation: {SiteElevation}");
LogMessage("ReadProfile", $"Com Port: {_profileProperties.ComPort}");
LogMessage("ReadProfile", $"Backlash Steps: {_profileProperties.BacklashCompensation}");
LogMessage("ReadProfile", $"Dynamic breaking: {_profileProperties.DynamicBreaking}");
LogMessage("ReadProfile", $"Guide Rate: {_profileProperties.GuideRateArcSecondsPerSecond}");
LogMessage("ReadProfile", $"Precision: {_profileProperties.Precision}");
LogMessage("ReadProfile", $"Guiding Style: {_profileProperties.GuidingStyle}");
LogMessage("ReadProfile", $"Site Elevation: {_profileProperties.SiteElevation}");
LogMessage("ReadProfile", $"Settle Time after slew: {_profileProperties.SettleTime}");
LogMessage("ReadProfile", $"Send date and time on connect: {_profileProperties.SendDateTime}");
LogMessage("ReadProfile", $"Parked Behaviour: {_profileProperties.ParkedBehaviour}");
LogMessage("ReadProfile", $"Parked Alt: {_profileProperties.ParkedAlt}");
LogMessage("ReadProfile", $"Parked Az: {_profileProperties.ParkedAz}");
LogMessage("ReadProfile", $"Focal Length: {_profileProperties.FocalLength}");
LogMessage("ReadProfile", $"Aperture Area: {_profileProperties.ApertureArea}");
LogMessage("ReadProfile", $"Aperture Area: {_profileProperties.ApertureDiameter}");
}
/// <summary>
@@ -87,7 +80,7 @@ namespace ASCOM.Meade.net
public static void LogMessage(string identifier, string message, params object[] args)
{
var msg = string.Format(message, args);
Tl.LogMessage(identifier, msg);
Tl.LogMessage(identifier, msg, false);
}
/// <summary>
@@ -99,7 +92,7 @@ namespace ASCOM.Meade.net
{
get
{
Tl.LogMessage("Description Get", DriverDescription);
Tl.LogMessage("Description Get", DriverDescription, false);
return DriverDescription;
}
}
@@ -140,7 +133,7 @@ namespace ASCOM.Meade.net
protected void UpdateSiteElevation()
{
var profileProperties = SharedResourcesWrapper.ReadProfile();
profileProperties.SiteElevation = SiteElevation;
profileProperties.SiteElevation = _profileProperties.SiteElevation;
SharedResourcesWrapper.WriteProfile(profileProperties);
}
}
+14
View File
@@ -0,0 +1,14 @@
using System.ComponentModel;
namespace ASCOM.Meade.net
{
public enum ParkedBehaviour
{
[Description("No Coordinates")]
NoCoordinates,
[Description("Last Good Position")]
LastGoodPosition,
[Description("Report coordinates as")]
ReportCoordinates
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace ASCOM.Meade.net
{
public class ParkedPosition
{
public double Altitude { get; set; }
public double Azimuth { get; set; }
public double RightAscension { get; set; }
public double Declination { get; set; }
public double SiteLongitude { get; set; }
public double SiteLatitude { get; set; }
}
}
+14
View File
@@ -13,5 +13,19 @@ namespace ASCOM.Meade.net
public bool DynamicBreaking { get; set; }
public bool RtsDtrEnabled { get; set; }
public double SiteElevation { get; set; }
public short SettleTime { get; set; }
public int DataBits { get; set; }
public string StopBits { get; set; }
public string Parity { get; set; }
public int Speed { get; set; }
public string Handshake { get; set; }
public bool SendDateTime { get; set; }
public ParkedBehaviour ParkedBehaviour { get; set; }
public double ParkedAlt { get; set; }
public double ParkedAz { get; set; }
public double FocalLength { get; set; }
public double ApertureArea { get; set; }
public double ApertureDiameter { get; set; }
public int TimeoutMs { get; set; }
}
}
+18
View File
@@ -135,5 +135,23 @@ namespace ASCOM.Meade.net.Properties {
return ResourceManager.GetString("SetupDialogForm_TextBox1_TextChanged___0_00_0___of_sidereal_rate_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please enter only numbers..
/// </summary>
internal static string SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_ {
get {
return ResourceManager.GetString("SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please enter only numbers..
/// </summary>
internal static string SetupDialogForm_txtFocalLength_TextChanged_1_Please_enter_only_numbers_ {
get {
return ResourceManager.GetString("SetupDialogForm_txtFocalLength_TextChanged_1_Please_enter_only_numbers_", resourceCulture);
}
}
}
}
+6
View File
@@ -144,4 +144,10 @@ Valid are : -register, -unregister and -embedding</value>
<data name="SetupDialogForm_SetupDialogForm__0__Settings___1__" xml:space="preserve">
<value>{0} Settings ({1})</value>
</data>
<data name="SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_" xml:space="preserve">
<value>Please enter only numbers.</value>
</data>
<data name="SetupDialogForm_txtFocalLength_TextChanged_1_Please_enter_only_numbers_" xml:space="preserve">
<value>Please enter only numbers.</value>
</data>
</root>
+229 -4
View File
@@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
@@ -7,6 +8,7 @@ using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using ASCOM.Meade.net.Properties;
using ASCOM.Utilities;
namespace ASCOM.Meade.net
{
@@ -20,6 +22,50 @@ namespace ASCOM.Meade.net
var assemblyInfo = new AssemblyInfo();
Text = string.Format(Resources.SetupDialogForm_SetupDialogForm__0__Settings___1__, assemblyInfo.Product, assemblyInfo.AssemblyVersion);
SetItemsFromEnum(cboStopBits.Items, typeof(SerialStopBits));
SetItemsFromEnum(cboParity.Items, typeof(SerialParity));
SetItemFromEnumValues(cboSpeed.Items, SerialSpeed.ps1200, SerialSpeed.ps57600);
SetItemsFromEnum(cboHandShake.Items, typeof(SerialHandshake));
SetItemsFromEnum(cboParkedBehaviour.Items, typeof(ParkedBehaviour));
}
private void SetItemsFromEnum(IList items, Type enumItems)
{
items.Clear();
foreach (var value in Enum.GetValues(enumItems) )
{
var val = value as Enum;
items.Add(val.GetDescription());
}
}
//private void SetItemsFromEnumValues(IList items, Type enumItems)
//{
// items.Clear();
// foreach (int item in Enum.GetValues(enumItems))
// {
// items.Add(item);
// }
//}
private void SetItemFromEnumValues<T>(IList items, T minValue, T maxValue)
{
items.Clear();
var type = typeof(T);
var intMinValue = (int)Convert.ChangeType(minValue, typeof(int));
var intMaxValue = (int)Convert.ChangeType(maxValue, typeof(int));
foreach (int item in Enum.GetValues(type))
{
if ((item >= intMinValue) && (item <= intMaxValue))
items.Add(item);
}
}
public sealed override string Text
@@ -83,11 +129,119 @@ namespace ASCOM.Meade.net
cboGuidingStyle.SelectedItem = "Auto";
}
numDatabits.Value = profileProperties.DataBits;
try
{
cboStopBits.SelectedItem = profileProperties.StopBits;
}
catch (Exception)
{
cboStopBits.SelectedItem = "One";
}
try
{
cboParity.SelectedItem = profileProperties.Parity;
}
catch (Exception)
{
cboParity.SelectedItem = "None";
}
try
{
cboSpeed.SelectedItem = profileProperties.Speed;
}
catch (Exception)
{
cboParity.SelectedItem = "9600";
}
try
{
cboHandShake.SelectedItem = profileProperties.Handshake;
}
catch (Exception)
{
cboHandShake.SelectedItem = "None";
}
txtBacklashSteps.Text = profileProperties.BacklashCompensation.ToString(CultureInfo.CurrentCulture);
txtElevation.Text = profileProperties.SiteElevation.ToString(CultureInfo.CurrentCulture);
cbxReverseDirection.Checked = profileProperties.ReverseFocusDirection;
cbxDynamicBreaking.Checked = profileProperties.DynamicBreaking;
nudSettleTime.Value = profileProperties.SettleTime;
cbxSendDateTime.Checked = profileProperties.SendDateTime;
try
{
cboParkedBehaviour.SelectedItem = profileProperties.ParkedBehaviour.GetDescription();
}
catch (Exception)
{
cboParkedBehaviour.SelectedItem = ParkedBehaviour.NoCoordinates.GetDescription();
}
try
{
txtParkedAlt.Text = profileProperties.ParkedAlt.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtParkedAlt.Text = "0";
}
try
{
txtParkedAz.Text = profileProperties.ParkedAz.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtParkedAz.Text = "180";
}
try
{
txtFocalLength.Text = profileProperties.FocalLength.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtFocalLength.Text = "2000";
}
try
{
txtApertureArea.Text = profileProperties.ApertureArea.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtApertureArea.Text = "32685";
}
try
{
txtApertureDiameter.Text = profileProperties.ApertureDiameter.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtApertureDiameter.Text = "203";
}
try
{
txtTimeout.Text = profileProperties.TimeoutMs.ToString(CultureInfo.CurrentCulture);
}
catch (Exception)
{
txtTimeout.Text = "5000";
}
UpdateParkedItemsEnabled();
}
public ProfileProperties GetProfile()
@@ -96,14 +250,28 @@ namespace ASCOM.Meade.net
{
TraceLogger = chkTrace.Checked,
ComPort = comboBoxComPort.SelectedItem.ToString(),
TimeoutMs = Convert.ToInt32(txtTimeout.Text),
RtsDtrEnabled = cbxRtsDtr.Checked,
DataBits = Convert.ToInt32(numDatabits.Value),
StopBits = cboStopBits.SelectedItem.ToString(),
Parity = cboParity.SelectedItem.ToString(),
Speed = Convert.ToInt32(cboSpeed.SelectedItem),
Handshake = cboHandShake.SelectedItem.ToString(),
GuideRateArcSecondsPerSecond = double.Parse(txtGuideRate.Text.Trim()),
Precision = cboPrecision.SelectedItem.ToString(),
GuidingStyle = cboGuidingStyle.SelectedItem.ToString(),
BacklashCompensation = int.Parse(txtBacklashSteps.Text),
ReverseFocusDirection = cbxReverseDirection.Checked,
DynamicBreaking = cbxDynamicBreaking.Checked,
SiteElevation = double.Parse(txtElevation.Text)
SiteElevation = double.Parse(txtElevation.Text),
SettleTime = Convert.ToInt16(nudSettleTime.Value),
SendDateTime = cbxSendDateTime.Checked,
ParkedBehaviour = EnumExtensionMethods.GetValueFromDescription<ParkedBehaviour>(cboParkedBehaviour.SelectedItem.ToString()),
ParkedAlt = double.Parse(txtParkedAlt.Text),
ParkedAz = double.Parse(txtParkedAz.Text),
FocalLength = double.Parse(txtFocalLength.Text),
ApertureArea = double.Parse(txtApertureArea.Text),
ApertureDiameter = double.Parse(txtApertureDiameter.Text)
};
return profileProperties;
@@ -167,7 +335,7 @@ namespace ASCOM.Meade.net
{
if (System.Text.RegularExpressions.Regex.IsMatch(txtElevation.Text, "[^0-9]"))
{
MessageBox.Show("Please enter only numbers.");
MessageBox.Show(Resources.SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_);
txtElevation.Text = txtElevation.Text.Remove(txtElevation.Text.Length - 1);
}
}
@@ -176,9 +344,66 @@ namespace ASCOM.Meade.net
{
if (System.Text.RegularExpressions.Regex.IsMatch(txtBacklashSteps.Text, "[^0-9]"))
{
MessageBox.Show("Please enter only numbers.");
MessageBox.Show(Resources.SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_);
txtBacklashSteps.Text = txtElevation.Text.Remove(txtBacklashSteps.Text.Length - 1);
}
}
private void cboParkedBehaviour_SelectionChangeCommitted(object sender, EventArgs e)
{
UpdateParkedItemsEnabled();
}
private void UpdateParkedItemsEnabled()
{
txtParkedAlt.Enabled = cboParkedBehaviour.SelectedItem?.ToString() == "Report coordinates as";
txtParkedAz.Enabled = txtParkedAlt.Enabled;
}
private void txtParkedAlt_TextChanged(object sender, EventArgs e)
{
if (System.Text.RegularExpressions.Regex.IsMatch(txtParkedAlt.Text, "[^0-9]"))
{
MessageBox.Show(Resources.SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_);
txtParkedAlt.Text = txtParkedAlt.Text.Remove(txtParkedAlt.Text.Length - 1);
}
}
private void txtParkedAz_TextChanged(object sender, EventArgs e)
{
if (System.Text.RegularExpressions.Regex.IsMatch(txtParkedAz.Text, "[^0-9]"))
{
MessageBox.Show(Resources.SetupDialogForm_txtElevation_TextChanged_1_Please_enter_only_numbers_);
txtParkedAz.Text = txtParkedAz.Text.Remove(txtParkedAz.Text.Length - 1);
}
}
private void txt_FocalLength_TextChanged_1(object sender, EventArgs e)
{
if (System.Text.RegularExpressions.Regex.IsMatch(txtFocalLength.Text, "[^0-9]"))
{
MessageBox.Show(Resources.SetupDialogForm_txtFocalLength_TextChanged_1_Please_enter_only_numbers_);
txtFocalLength.Text = txtFocalLength.Text.Remove(txtFocalLength.Text.Length - 1);
}
}
private void button1_Click(object sender, EventArgs e)
{
string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Process.Start(new ProcessStartInfo()
{
FileName = $"{myDocumentsPath}\\ASCOM",
UseShellExecute = true,
Verb = "open"
});
}
private void label29_Click(object sender, EventArgs e)
{
}
}
}
}
+310
View File
@@ -58,10 +58,46 @@ namespace ASCOM.Meade.net
this.cbxDynamicBreaking = new System.Windows.Forms.CheckBox();
this.cbxRtsDtr = new System.Windows.Forms.CheckBox();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.cbxSendDateTime = new System.Windows.Forms.CheckBox();
this.label12 = new System.Windows.Forms.Label();
this.txtElevation = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.nudSettleTime = new System.Windows.Forms.NumericUpDown();
this.label15 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.cboStopBits = new System.Windows.Forms.ComboBox();
this.numDatabits = new System.Windows.Forms.NumericUpDown();
this.cboParity = new System.Windows.Forms.ComboBox();
this.cboSpeed = new System.Windows.Forms.ComboBox();
this.cboHandShake = new System.Windows.Forms.ComboBox();
this.label17 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.cboParkedBehaviour = new System.Windows.Forms.ComboBox();
this.label22 = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.label24 = new System.Windows.Forms.Label();
this.txtParkedAlt = new System.Windows.Forms.TextBox();
this.txtParkedAz = new System.Windows.Forms.TextBox();
this.label25 = new System.Windows.Forms.Label();
this.txtFocalLength = new System.Windows.Forms.TextBox();
this.label26 = new System.Windows.Forms.Label();
this.label27 = new System.Windows.Forms.Label();
this.txtApertureDiameter = new System.Windows.Forms.TextBox();
this.label28 = new System.Windows.Forms.Label();
this.label29 = new System.Windows.Forms.Label();
this.txtApertureArea = new System.Windows.Forms.TextBox();
this.label30 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.txtTimeout = new System.Windows.Forms.TextBox();
this.label31 = new System.Windows.Forms.Label();
this.label32 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.picASCOM)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudSettleTime)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numDatabits)).BeginInit();
this.SuspendLayout();
//
// cmdOK
@@ -121,6 +157,7 @@ namespace ASCOM.Meade.net
//
resources.ApplyResources(this.txtGuideRate, "txtGuideRate");
this.txtGuideRate.Name = "txtGuideRate";
this.toolTip1.SetToolTip(this.txtGuideRate, resources.GetString("txtGuideRate.ToolTip"));
this.txtGuideRate.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
//
// label4
@@ -215,6 +252,13 @@ namespace ASCOM.Meade.net
this.toolTip1.SetToolTip(this.cbxRtsDtr, resources.GetString("cbxRtsDtr.ToolTip"));
this.cbxRtsDtr.UseVisualStyleBackColor = true;
//
// cbxSendDateTime
//
resources.ApplyResources(this.cbxSendDateTime, "cbxSendDateTime");
this.cbxSendDateTime.Name = "cbxSendDateTime";
this.toolTip1.SetToolTip(this.cbxSendDateTime, resources.GetString("cbxSendDateTime.ToolTip"));
this.cbxSendDateTime.UseVisualStyleBackColor = true;
//
// label12
//
resources.ApplyResources(this.label12, "label12");
@@ -231,10 +275,240 @@ namespace ASCOM.Meade.net
resources.ApplyResources(this.label13, "label13");
this.label13.Name = "label13";
//
// label14
//
resources.ApplyResources(this.label14, "label14");
this.label14.Name = "label14";
//
// nudSettleTime
//
resources.ApplyResources(this.nudSettleTime, "nudSettleTime");
this.nudSettleTime.Maximum = new decimal(new int[] {
32767,
0,
0,
0});
this.nudSettleTime.Name = "nudSettleTime";
//
// label15
//
resources.ApplyResources(this.label15, "label15");
this.label15.Name = "label15";
//
// label16
//
resources.ApplyResources(this.label16, "label16");
this.label16.Name = "label16";
//
// cboStopBits
//
this.cboStopBits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboStopBits.FormattingEnabled = true;
resources.ApplyResources(this.cboStopBits, "cboStopBits");
this.cboStopBits.Name = "cboStopBits";
//
// numDatabits
//
resources.ApplyResources(this.numDatabits, "numDatabits");
this.numDatabits.Maximum = new decimal(new int[] {
32767,
0,
0,
0});
this.numDatabits.Name = "numDatabits";
//
// cboParity
//
this.cboParity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboParity.FormattingEnabled = true;
resources.ApplyResources(this.cboParity, "cboParity");
this.cboParity.Name = "cboParity";
//
// cboSpeed
//
this.cboSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboSpeed.FormattingEnabled = true;
resources.ApplyResources(this.cboSpeed, "cboSpeed");
this.cboSpeed.Name = "cboSpeed";
//
// cboHandShake
//
this.cboHandShake.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboHandShake.FormattingEnabled = true;
resources.ApplyResources(this.cboHandShake, "cboHandShake");
this.cboHandShake.Name = "cboHandShake";
//
// label17
//
resources.ApplyResources(this.label17, "label17");
this.label17.Name = "label17";
//
// label18
//
resources.ApplyResources(this.label18, "label18");
this.label18.Name = "label18";
//
// label19
//
resources.ApplyResources(this.label19, "label19");
this.label19.Name = "label19";
//
// label20
//
resources.ApplyResources(this.label20, "label20");
this.label20.Name = "label20";
//
// label21
//
resources.ApplyResources(this.label21, "label21");
this.label21.Name = "label21";
//
// cboParkedBehaviour
//
this.cboParkedBehaviour.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboParkedBehaviour.FormattingEnabled = true;
this.cboParkedBehaviour.Items.AddRange(new object[] {
resources.GetString("cboParkedBehaviour.Items"),
resources.GetString("cboParkedBehaviour.Items1"),
resources.GetString("cboParkedBehaviour.Items2")});
resources.ApplyResources(this.cboParkedBehaviour, "cboParkedBehaviour");
this.cboParkedBehaviour.Name = "cboParkedBehaviour";
this.cboParkedBehaviour.SelectionChangeCommitted += new System.EventHandler(this.cboParkedBehaviour_SelectionChangeCommitted);
//
// label22
//
resources.ApplyResources(this.label22, "label22");
this.label22.Name = "label22";
//
// label23
//
resources.ApplyResources(this.label23, "label23");
this.label23.Name = "label23";
//
// label24
//
resources.ApplyResources(this.label24, "label24");
this.label24.Name = "label24";
//
// txtParkedAlt
//
resources.ApplyResources(this.txtParkedAlt, "txtParkedAlt");
this.txtParkedAlt.Name = "txtParkedAlt";
this.txtParkedAlt.TextChanged += new System.EventHandler(this.txtParkedAlt_TextChanged);
//
// txtParkedAz
//
resources.ApplyResources(this.txtParkedAz, "txtParkedAz");
this.txtParkedAz.Name = "txtParkedAz";
this.txtParkedAz.TextChanged += new System.EventHandler(this.txtParkedAz_TextChanged);
//
// label25
//
resources.ApplyResources(this.label25, "label25");
this.label25.Name = "label25";
//
// txtFocalLength
//
resources.ApplyResources(this.txtFocalLength, "txtFocalLength");
this.txtFocalLength.Name = "txtFocalLength";
this.txtFocalLength.TextChanged += new System.EventHandler(this.txt_FocalLength_TextChanged_1);
//
// label26
//
resources.ApplyResources(this.label26, "label26");
this.label26.Name = "label26";
//
// label27
//
resources.ApplyResources(this.label27, "label27");
this.label27.Name = "label27";
//
// txtApertureDiameter
//
resources.ApplyResources(this.txtApertureDiameter, "txtApertureDiameter");
this.txtApertureDiameter.Name = "txtApertureDiameter";
//
// label28
//
resources.ApplyResources(this.label28, "label28");
this.label28.Name = "label28";
//
// label29
//
resources.ApplyResources(this.label29, "label29");
this.label29.Name = "label29";
this.label29.Click += new System.EventHandler(this.label29_Click);
//
// txtApertureArea
//
resources.ApplyResources(this.txtApertureArea, "txtApertureArea");
this.txtApertureArea.Name = "txtApertureArea";
//
// label30
//
resources.ApplyResources(this.label30, "label30");
this.label30.Name = "label30";
//
// button1
//
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// txtTimeout
//
resources.ApplyResources(this.txtTimeout, "txtTimeout");
this.txtTimeout.Name = "txtTimeout";
//
// label31
//
resources.ApplyResources(this.label31, "label31");
this.label31.Name = "label31";
//
// label32
//
resources.ApplyResources(this.label32, "label32");
this.label32.Name = "label32";
//
// SetupDialogForm
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label32);
this.Controls.Add(this.label31);
this.Controls.Add(this.txtTimeout);
this.Controls.Add(this.button1);
this.Controls.Add(this.label29);
this.Controls.Add(this.txtApertureArea);
this.Controls.Add(this.label30);
this.Controls.Add(this.label27);
this.Controls.Add(this.txtApertureDiameter);
this.Controls.Add(this.label28);
this.Controls.Add(this.label26);
this.Controls.Add(this.txtFocalLength);
this.Controls.Add(this.label25);
this.Controls.Add(this.txtParkedAz);
this.Controls.Add(this.txtParkedAlt);
this.Controls.Add(this.label24);
this.Controls.Add(this.label23);
this.Controls.Add(this.label22);
this.Controls.Add(this.cboParkedBehaviour);
this.Controls.Add(this.cbxSendDateTime);
this.Controls.Add(this.label21);
this.Controls.Add(this.label20);
this.Controls.Add(this.label19);
this.Controls.Add(this.label18);
this.Controls.Add(this.label17);
this.Controls.Add(this.cboHandShake);
this.Controls.Add(this.cboSpeed);
this.Controls.Add(this.cboParity);
this.Controls.Add(this.numDatabits);
this.Controls.Add(this.cboStopBits);
this.Controls.Add(this.label16);
this.Controls.Add(this.label15);
this.Controls.Add(this.nudSettleTime);
this.Controls.Add(this.label14);
this.Controls.Add(this.label13);
this.Controls.Add(this.txtElevation);
this.Controls.Add(this.label12);
@@ -270,6 +544,8 @@ namespace ASCOM.Meade.net
this.TopMost = true;
this.Shown += new System.EventHandler(this.SetupDialogForm_Shown);
((System.ComponentModel.ISupportInitialize)(this.picASCOM)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nudSettleTime)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numDatabits)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -305,5 +581,39 @@ namespace ASCOM.Meade.net
private Label label12;
private TextBox txtElevation;
private Label label13;
private Label label14;
private NumericUpDown nudSettleTime;
private Label label15;
private Label label16;
private ComboBox cboStopBits;
private NumericUpDown numDatabits;
private ComboBox cboParity;
private ComboBox cboSpeed;
private ComboBox cboHandShake;
private Label label17;
private Label label18;
private Label label19;
private Label label20;
private Label label21;
private CheckBox cbxSendDateTime;
private ComboBox cboParkedBehaviour;
private Label label22;
private Label label23;
private Label label24;
private TextBox txtParkedAlt;
private TextBox txtParkedAz;
private Label label25;
private TextBox txtFocalLength;
private Label label26;
private Label label27;
private TextBox txtApertureDiameter;
private Label label28;
private Label label29;
private TextBox txtApertureArea;
private Label label30;
private Button button1;
private TextBox txtTimeout;
private Label label31;
private Label label32;
}
}
File diff suppressed because it is too large Load Diff
+360 -59
View File
@@ -4,11 +4,11 @@
// ================
//
// This class is a container for all shared resources that may be needed
// by the drivers served by the Local Server.
// by the drivers served by the Local Server.
//
// NOTES:
//
// * ALL DECLARATIONS MUST BE STATIC HERE!! INSTANCES OF THIS CLASS MUST NEVER BE CREATED!
// * ALL DECLARATIONS MUST BE STATIC HERE!! INSTANCES OF THIS CLASS MUST NEVER BE CREATEDReceiveTimeout
//
// Written by: Bob Denny 29-May-2007
// Modified by Chris Rowland and Peter Simpson to hamdle multiple hardware devices March 2011
@@ -17,7 +17,10 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using ASCOM.DeviceInterface;
using ASCOM.Meade.net.Wrapper;
using ASCOM.Utilities;
using ASCOM.Utilities.Interfaces;
@@ -47,7 +50,7 @@ namespace ASCOM.Meade.net
#region single serial port connector
//
// this region shows a way that a single serial port could be connected to by multiple
// this region shows a way that a single serial port could be connected to by multiple
// drivers.
//
// Connected is used to handle the connections to the port.
@@ -71,17 +74,19 @@ namespace ASCOM.Meade.net
public static IProfileFactory ProfileFactory
{
get => _profileFactory ?? ( _profileFactory = new ProfileFactory());
get => _profileFactory ?? (_profileFactory = new ProfileFactory());
set => _profileFactory = value;
}
//todo add code to ensure that there is a minimum gap between commands. 5ms as default.
public static void SendBlind(string message)
public static void SendBlind(ITraceLogger traceLogger, string message, bool raw = false)
{
lock (LockObject)
{
SharedSerial.ClearBuffers();
SharedSerial.Transmit(message);
var encodedMessage = raw ? message : $"#:{message}#";
traceLogger.LogMessage("SendBlind", $"Transmitting {encodedMessage}", false);
SharedSerial.Transmit(encodedMessage);
}
}
@@ -92,24 +97,71 @@ namespace ASCOM.Meade.net
/// and that the reply will always be terminated by a "#" character.
/// </summary>
/// <param name="message"></param>
/// <param name="raw"></param>
/// <returns></returns>
public static string SendString(string message)
public static string SendString(ITraceLogger traceLogger, string message, bool raw = false)
{
lock (LockObject)
{
SharedSerial.ClearBuffers();
SharedSerial.Transmit(message);
return SharedSerial.ReceiveTerminated("#").TrimEnd('#');
var encodedMessage = raw ? message : $"#:{message}#";
traceLogger.LogMessage("SendString", $"Transmitting {encodedMessage}", false);
SharedSerial.Transmit(encodedMessage);
try
{
var result = SharedSerial.ReceiveTerminated("#");
traceLogger.LogMessage("SendString", $"Received {result}", false);
return result.TrimEnd('#');
}
catch (COMException ex)
{
traceLogger.LogIssue("SendString", ex.Message);
if (ex.Message.Contains("Timed out waiting for received data"))
throw new TimeoutException(ex.Message, ex);
throw;
}
}
}
public static string SendChar(string message)
public static bool SendBool(ITraceLogger traceLogger, string command, bool raw = false)
{
var result = SendChar(traceLogger, command, raw);
return result == "1";
}
public static string SendChar(ITraceLogger traceLogger, string command, bool raw = false)
{
return SendChars(traceLogger, command, raw, count: 1);
}
public static string SendChars(ITraceLogger traceLogger, string command, bool raw = false, int count = 1)
{
lock (LockObject)
{
SharedSerial.ClearBuffers();
SharedSerial.Transmit(message);
return SharedSerial.ReceiveCounted(1);
var encodedMessage = raw ? command : $"#:{command}#";
traceLogger.LogMessage("SendChars", $"Transmitting {encodedMessage}", false);
SharedSerial.Transmit(encodedMessage);
try
{
var result = SharedSerial.ReceiveCounted(count);
traceLogger.LogMessage("SendChars", $"Received {result}", false);
return result;
}
catch (COMException ex)
{
traceLogger.LogIssue("SendString", ex.Message);
if (ex.Message.Contains("Timed out waiting for received data"))
throw new TimeoutException(ex.Message, ex);
throw;
}
}
}
@@ -137,6 +189,7 @@ namespace ASCOM.Meade.net
// Constants used for Profile persistence
private const string ComPortProfileName = "COM Port";
private const string TimeoutMsName = "Serial Timeout (MS)";
private const string RtsDtrProfileName = "Rts / Dtr";
private const string TraceStateProfileName = "Trace Level";
private const string GuideRateProfileName = "Guide Rate Arc Seconds Per Second";
@@ -146,6 +199,20 @@ namespace ASCOM.Meade.net
private const string ReverseFocusDirectionName = "Reverse Focuser Direction";
private const string DynamicBreakingName = "Dynamic Breaking";
private const string SiteElevationName = "Site Elevation";
private const string SettleTimeName = "Settle Time";
private const string SpeedName = "Speed";
private const string DataBitsName = "Data Bits";
private const string StopBitsName = "Stop Bits";
private const string HandShakeName = "Hand Shake";
private const string ParityName = "Parity";
private const string SendDateTimeName = "Send Date and time on connect";
private const string ParkedBehaviourName = "Parked Behaviour";
private const string ParkedAltName = "Parked Altitude";
private const string ParkedAzimuthName = "Parked Azimuth";
private const string FocalLengthName = "Focal Length (mm)";
private const string ApertureAreaName = "Aperture Area (mm)";
private const string ApertureDiameterName = "Aperture Diameter (mm)";
public static void WriteProfile(ProfileProperties profileProperties)
{
@@ -156,19 +223,34 @@ namespace ASCOM.Meade.net
driverProfile.DeviceType = "Telescope";
driverProfile.WriteValue(DriverId, TraceStateProfileName, profileProperties.TraceLogger.ToString());
driverProfile.WriteValue(DriverId, ComPortProfileName, profileProperties.ComPort);
driverProfile.WriteValue(DriverId, TimeoutMsName, profileProperties.TimeoutMs.ToString());
driverProfile.WriteValue(DriverId, RtsDtrProfileName, profileProperties.RtsDtrEnabled.ToString());
driverProfile.WriteValue(DriverId, SpeedName, profileProperties.Speed.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, DataBitsName, profileProperties.DataBits.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, StopBitsName, profileProperties.StopBits);
driverProfile.WriteValue(DriverId, HandShakeName, profileProperties.Handshake);
driverProfile.WriteValue(DriverId, ParityName, profileProperties.Parity);
driverProfile.WriteValue(DriverId, GuideRateProfileName, profileProperties.GuideRateArcSecondsPerSecond.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, PrecisionProfileName, profileProperties.Precision);
driverProfile.WriteValue(DriverId, GuidingStyleProfileName, profileProperties.GuidingStyle);
driverProfile.WriteValue(DriverId, BacklashCompensationName, profileProperties.BacklashCompensation.ToString());
driverProfile.WriteValue(DriverId, ReverseFocusDirectionName, profileProperties.ReverseFocusDirection.ToString());
driverProfile.WriteValue(DriverId, DynamicBreakingName, profileProperties.DynamicBreaking.ToString());
driverProfile.WriteValue(DriverId, SiteElevationName, profileProperties.SiteElevation.ToString());
driverProfile.WriteValue(DriverId, SiteElevationName, profileProperties.SiteElevation.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, SettleTimeName, profileProperties.SettleTime.ToString());
driverProfile.WriteValue(DriverId, SendDateTimeName, profileProperties.SendDateTime.ToString());
driverProfile.WriteValue(DriverId, ParkedBehaviourName, profileProperties.ParkedBehaviour.GetDescription());
driverProfile.WriteValue(DriverId, ParkedAltName, profileProperties.ParkedAlt.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, ParkedAzimuthName, profileProperties.ParkedAz.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, FocalLengthName, profileProperties.FocalLength.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, ApertureAreaName, profileProperties.ApertureArea.ToString(CultureInfo.InvariantCulture));
driverProfile.WriteValue(DriverId, ApertureDiameterName, profileProperties.ApertureDiameter.ToString(CultureInfo.InvariantCulture));
}
}
}
private const string ComPortDefault = "COM1";
private const string TimeoutMsDefault = "5000";
private const string RtsDtrDefault = "false";
private const string TraceStateDefault = "false";
private const string GuideRateProfileNameDefault = "10.077939"; //67% of sidereal rate
@@ -178,6 +260,19 @@ namespace ASCOM.Meade.net
private const string ReverseFocuserDiectionDefault = "true";
private const string DynamicBreakingDefault = "true";
private const string SiteElevationDefault = "0";
private const string SettleTimeDefault = "2";
private const string SpeedDefault = "9600";
private const string DataBitsDefault = "8";
private const string StopBitsDefault = "One";
private const string HandShakeDefault = "None";
private const string ParityDefault = "None";
private const string SendDateTimeDefault = "false";
private const string ParkedBehaviourDefault = "No Coordinates";
private const string ParkedAltDefault = "0";
private const string ParkedAzimuthDefault = "180";
private const string FocalLengthDefault = "2000";
private const string ApertureAreaDefault = "32685";
private const string ApertureDiameterDefault = "203";
public static ProfileProperties ReadProfile()
{
@@ -188,15 +283,30 @@ namespace ASCOM.Meade.net
{
driverProfile.DeviceType = "Telescope";
profileProperties.ComPort = driverProfile.GetValue(DriverId, ComPortProfileName, string.Empty, ComPortDefault);
profileProperties.RtsDtrEnabled = Convert.ToBoolean(driverProfile.GetValue(DriverId, RtsDtrProfileName, string.Empty, RtsDtrDefault));
profileProperties.TraceLogger = Convert.ToBoolean(driverProfile.GetValue(DriverId, TraceStateProfileName, string.Empty, TraceStateDefault));
profileProperties.GuideRateArcSecondsPerSecond = double.Parse(driverProfile.GetValue(DriverId, GuideRateProfileName, string.Empty, GuideRateProfileNameDefault), NumberFormatInfo.InvariantInfo);
profileProperties.TimeoutMs = driverProfile.GetValueInt(DriverId, TimeoutMsName, string.Empty, TimeoutMsDefault);
profileProperties.RtsDtrEnabled = driverProfile.GetValueBool(DriverId, RtsDtrProfileName, string.Empty, RtsDtrDefault);
profileProperties.TraceLogger = driverProfile.GetValueBool(DriverId, TraceStateProfileName, string.Empty, TraceStateDefault);
profileProperties.GuideRateArcSecondsPerSecond = driverProfile.GetValueDouble(DriverId, GuideRateProfileName, string.Empty, GuideRateProfileNameDefault);
profileProperties.Precision = driverProfile.GetValue(DriverId, PrecisionProfileName, string.Empty, PrecisionDefault);
profileProperties.GuidingStyle = driverProfile.GetValue(DriverId, GuidingStyleProfileName, string.Empty, GuidingStyleDefault);
profileProperties.BacklashCompensation = Convert.ToInt32(driverProfile.GetValue(DriverId, BacklashCompensationName, string.Empty, BacklashCompensationDefault));
profileProperties.ReverseFocusDirection = Convert.ToBoolean(driverProfile.GetValue(DriverId, ReverseFocusDirectionName, string.Empty, ReverseFocuserDiectionDefault));
profileProperties.DynamicBreaking = Convert.ToBoolean(driverProfile.GetValue(DriverId, DynamicBreakingName, string.Empty, DynamicBreakingDefault));
profileProperties.SiteElevation = Convert.ToInt32(driverProfile.GetValue(DriverId, SiteElevationName, string.Empty, SiteElevationDefault));
profileProperties.BacklashCompensation = driverProfile.GetValueInt(DriverId, BacklashCompensationName, string.Empty, BacklashCompensationDefault);
profileProperties.ReverseFocusDirection = driverProfile.GetValueBool(DriverId, ReverseFocusDirectionName, string.Empty, ReverseFocuserDiectionDefault);
profileProperties.DynamicBreaking = driverProfile.GetValueBool(DriverId, DynamicBreakingName, string.Empty, DynamicBreakingDefault);
profileProperties.SiteElevation = driverProfile.GetValueInt(DriverId, SiteElevationName, string.Empty, SiteElevationDefault);
profileProperties.SettleTime = driverProfile.GetValueShort(DriverId, SettleTimeName, string.Empty, SettleTimeDefault);
profileProperties.StopBits = driverProfile.GetValue(DriverId, StopBitsName, string.Empty, StopBitsDefault);
profileProperties.DataBits = driverProfile.GetValueInt(DriverId, DataBitsName, string.Empty, DataBitsDefault);
profileProperties.Handshake = driverProfile.GetValue(DriverId, HandShakeName, string.Empty, HandShakeDefault);
profileProperties.Speed = driverProfile.GetValueInt(DriverId, SpeedName, string.Empty, SpeedDefault);
profileProperties.Parity = driverProfile.GetValue(DriverId, ParityName, string.Empty, ParityDefault);
profileProperties.SendDateTime = driverProfile.GetValueBool(DriverId, SendDateTimeName, string.Empty, SendDateTimeDefault);
profileProperties.ParkedBehaviour = EnumExtensionMethods.GetValueFromDescription<ParkedBehaviour>(driverProfile.GetValue(DriverId, ParkedBehaviourName, string.Empty, ParkedBehaviourDefault));
profileProperties.ParkedAlt = driverProfile.GetValueDouble(DriverId, ParkedAltName, string.Empty, ParkedAltDefault);
profileProperties.ParkedAz = driverProfile.GetValueDouble(DriverId, ParkedAzimuthName, string.Empty, ParkedAzimuthDefault);
profileProperties.FocalLength = driverProfile.GetValueDouble(DriverId, FocalLengthName, string.Empty, FocalLengthDefault);
profileProperties.ApertureArea = driverProfile.GetValueDouble(DriverId, ApertureAreaName, string.Empty, ApertureAreaDefault);
profileProperties.ApertureDiameter = driverProfile.GetValueDouble(DriverId, ApertureDiameterName, string.Empty, ApertureDiameterDefault);
}
return profileProperties;
@@ -209,29 +319,38 @@ namespace ASCOM.Meade.net
public static void SetupDialog()
{
var profileProperties = ReadProfile();
using (SetupDialogForm f = new SetupDialogForm())
try
{
f.SetProfile(profileProperties);
var profileProperties = ReadProfile();
if (IsConnected())
using (SetupDialogForm f = new SetupDialogForm())
{
f.SetReadOnlyMode();
}
f.SetProfile(profileProperties);
var result = f.ShowDialog();
if (result == DialogResult.OK)
{
profileProperties = f.GetProfile();
if (IsConnected())
{
f.SetReadOnlyMode();
}
WriteProfile(profileProperties); // Persist device configuration values to the ASCOM Profile store
var result = f.ShowDialog();
if (result == DialogResult.OK)
{
profileProperties = f.GetProfile();
WriteProfile(
profileProperties); // Persist device configuration values to the ASCOM Profile store
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
#endregion
#region Multi Driver handling
public static string ProductName { get; private set; } = string.Empty;
@@ -254,7 +373,7 @@ namespace ASCOM.Meade.net
private static readonly Dictionary<string, DeviceHardware> ConnectedDevices = new Dictionary<string, DeviceHardware>();
private static readonly Dictionary<string, DeviceHardware> ConnectedDeviceIds = new Dictionary<string, DeviceHardware>();
private static IProfileFactory _profileFactory ;
private static IProfileFactory _profileFactory;
/// <summary>
@@ -270,7 +389,7 @@ namespace ASCOM.Meade.net
{
if (!ConnectedDevices.ContainsKey(deviceId))
ConnectedDevices.Add(deviceId, new DeviceHardware());
if (!ConnectedDeviceIds.ContainsKey(driverId))
ConnectedDeviceIds.Add(driverId, new DeviceHardware());
@@ -282,17 +401,89 @@ namespace ASCOM.Meade.net
SharedSerial.PortName = profileProperties.ComPort;
SharedSerial.DTREnable = profileProperties.RtsDtrEnabled;
SharedSerial.RTSEnable = profileProperties.RtsDtrEnabled;
SharedSerial.DataBits = 8;
SharedSerial.StopBits = SerialStopBits.One;
SharedSerial.Parity = SerialParity.None;
SharedSerial.DataBits = profileProperties.DataBits;
SharedSerial.StopBits = (SerialStopBits)Enum.Parse(typeof(SerialStopBits), profileProperties.StopBits);
SharedSerial.Parity = (SerialParity)Enum.Parse(typeof(SerialParity), profileProperties.Parity);
SharedSerial.Handshake = (SerialHandshake)Enum.Parse(typeof(SerialHandshake), profileProperties.Handshake);
SharedSerial.ReceiveTimeoutMs = profileProperties.TimeoutMs;
SharedSerial.Speed = SerialSpeed.ps9600;
SharedSerial.Handshake = SerialHandshake.None;
var wantedSpeed = (SerialSpeed)profileProperties.Speed;
if (wantedSpeed != SerialSpeed.ps9600)
{
SharedSerial.Speed = wantedSpeed;
SharedSerial.Connected = true;
var speedRampNeeded = false;
//Test if communication is working.
try
{
string utcOffSet = SendString( traceLogger, "GG");
}
catch (Exception)
{
speedRampNeeded = true;
}
if (speedRampNeeded)
{
SharedSerial.Connected = false;
SharedSerial.Speed = SerialSpeed.ps9600;
SharedSerial.Connected = true;
int newSpeedIndex = GetSpeedIndex(wantedSpeed);
//:SBn# Set Baud Rate n, where n is an ASCII digit (1..9) with the following interpertation
// 1 56.7K
// 2 38.4K
// 3 28.8K
// 4 19.2K
// 5 14.4K
// 6 9600
// 7 4800
// 8 2400
// 9 1200
//Returns:
// 1 At the current baud rate and then changes to the new rate for further communication
//SendBlind($"SB{newSpeedIndex}");
try
{
var speedChanged = SendChar(traceLogger, $"SB{newSpeedIndex}");
if (speedChanged == "1")
{
SharedSerial.Connected = false;
SharedSerial.Speed = wantedSpeed;
traceLogger.LogIssue("Connect",
$"Telescope serial port speed change, connecting at {SharedSerial.Speed}.");
}
else
{
throw new Exception("Autostar not signalled speed change.");
}
}
catch (Exception)
{
SharedSerial.Connected = false;
SharedSerial.Speed = SerialSpeed.ps9600;
traceLogger.LogIssue("Connect", $"Telescope not responding to speed change, connecting at {SharedSerial.Speed}.");
}
}
}
SharedSerial.Connected = true;
try
{
ProductName = SendString("#:GVP#");
FirmwareVersion = SendString("#:GVN#");
ProductName = SendString(traceLogger, "GVP");
FirmwareVersion = SendString(traceLogger, "GVN");
//LXD600 mount uses LX-200 based firmware. When both above commands are sent to the scope,
//they both return the "6.12S" string.
//There may be other values of the string applicable to LXD600 mount or other values of the string
//may allow identify LXD650/LXD700 or other scopes. May require further adjustments.
if (String.Equals(ProductName, FirmwareVersion) && String.Equals(ProductName, TelescopeList.LXD600_6_12S))
{
ProductName = TelescopeList.LXD600;
}
}
catch (Exception ex)
{
@@ -312,7 +503,7 @@ namespace ASCOM.Meade.net
try
{
string utcOffSet = SendString("#:GG#");
string utcOffSet = SendString(traceLogger, "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
@@ -347,6 +538,23 @@ namespace ASCOM.Meade.net
}
}
private static int GetSpeedIndex(SerialSpeed speed)
{
switch (speed)
{
case SerialSpeed.ps57600: return 1;
case SerialSpeed.ps38400: return 2;
case SerialSpeed.ps28800: return 3;
case SerialSpeed.ps19200: return 4;
case SerialSpeed.ps14400: return 5;
case SerialSpeed.ps9600: return 6;
case SerialSpeed.ps4800: return 7;
case SerialSpeed.ps2400: return 8;
case SerialSpeed.ps1200: return 9;
default: throw new NotSupportedException($"{SpeedDefault} not supported");
}
}
public static void Disconnect(string deviceId, string driverId)
{
lock (LockObject)
@@ -383,23 +591,7 @@ namespace ASCOM.Meade.net
}
#endregion
public static void Lock(Action action)
{
lock (LockObject)
{
action();
}
}
public static T Lock<T>(Func<T> func)
{
lock (LockObject)
{
return func();
}
}
/// <summary>
/// Skeleton of a hardware class, all this does is hold a count of the connections,
/// in reality extra code will be needed to handle the hardware in some way
@@ -413,5 +605,114 @@ namespace ASCOM.Meade.net
Count = 0;
}
}
public static void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking)
{
IsParked = atPark;
ParkedPosition = parkedPosition;
RestartTracking = restartTracking;
}
private static readonly ThreadSafeValue<bool> _restartTracking = false;
public static bool RestartTracking
{
get => _restartTracking;
private set => _restartTracking.Set(value);
}
private static ParkedPosition _parkedPosition;
public static ParkedPosition ParkedPosition
{
get => _parkedPosition;
private set => Interlocked.Exchange(ref _parkedPosition, value);
}
private static readonly ThreadSafeValue<bool> _isParked = false;
public static bool IsParked
{
get => _isParked;
private set => _isParked.Set(value);
}
private static readonly ThreadSafeValue<AlignmentModes> _alignmentMode = AlignmentModes.algAltAz;
public static AlignmentModes AlignmentMode
{
get => _alignmentMode;
set => _alignmentMode.Set(value);
}
private static readonly ThreadSafeValue<PierSide> _sideOfPier = PierSide.pierUnknown;
/// <summary>
/// Start with <see cref="PierSide.pierUnknown"/>.
/// As we do not know the physical declination axis position, we have to keep track manually.
/// </summary>
public static PierSide SideOfPier
{
get => _sideOfPier;
internal set => _sideOfPier.Set(value);
}
private static readonly ThreadSafeValue<double?> _targetRightAscension = null as double?;
public static double? TargetRightAscension
{
get => _targetRightAscension;
internal set => _targetRightAscension.Set(value);
}
private static readonly ThreadSafeValue<double?> _targetDeclination = null as double?;
public static double? TargetDeclination
{
get => _targetDeclination;
internal set => _targetDeclination.Set(value);
}
private static int _slewSettleTime;
public static short SlewSettleTime
{
get => Convert.ToInt16(_slewSettleTime);
internal set => Interlocked.Exchange(ref _slewSettleTime, value);
}
private static readonly ThreadSafeValue<bool> _isLongFormat = false;
public static bool IsLongFormat
{
get => _isLongFormat;
internal set => _isLongFormat.Set(value);
}
private static readonly ThreadSafeValue<bool> _movingPrimary = false;
public static bool MovingPrimary
{
get => _movingPrimary;
internal set => _movingPrimary.Set(value);
}
private static readonly ThreadSafeValue<bool> _movingSecondary = false;
public static bool MovingSecondary
{
get => _movingSecondary;
internal set => _movingSecondary.Set(value);
}
private static readonly ThreadSafeValue<DateTime> _earliestNonSlewingTime = DateTime.MinValue;
public static DateTime EarliestNonSlewingTime
{
get => _earliestNonSlewingTime;
internal set => _earliestNonSlewingTime.Set(value);
}
private static readonly ThreadSafeValue<bool> _isTargetCoordinateInitRequired = true;
public static bool IsTargetCoordinateInitRequired
{
get => _isTargetCoordinateInitRequired;
internal set => _isTargetCoordinateInitRequired.Set(value);
}
private static readonly ThreadSafeValue<bool> _isGuiding = false;
public static bool IsGuiding
{
get => _isGuiding;
internal set => _isGuiding.Set(value);
}
}
}
+31 -1
View File
@@ -4,6 +4,7 @@
{
#region Autostar 497/Audiostar
public const string Audiostar = "Audiostar"; //This is a synonym for Autostar which can be returned by some of the Audiostar firmware revisions A1f7
public const string Autostar497 = "Autostar";
//Autostar/Audiostar firmware revisions
@@ -14,6 +15,10 @@
// ReSharper disable once InconsistentNaming
public const string Autostar497_43Eg = "43Eg";
// ReSharper disable once InconsistentNaming
public const string AudioStar_A1F7 = "A1F7";
// ReSharper disable once InconsistentNaming
public const string AudioStar_A4S4 = "A4S4";
#endregion
#region LX200GPS
@@ -21,13 +26,38 @@
// ReSharper disable once InconsistentNaming
public const string LX200GPS = "LX2001";
public const string LX200GPS_42F = "4.2f";
// ReSharper disable once InconsistentNaming
public const string LX200GPS_42G = "4.2G";
public const string LX200GPS_42G = "4.2g";
public const string LX200GPS_4G0M = "4G0m";
#endregion
#region LX800
public const string LX800 = "LX800";
public const string LX800_11i = "1.1i";
#endregion
#region LX200EMC
// ReSharper disable once InconsistentNaming
public const string LX200CLASSIC = "LX200 Classic"; //GVP command is not supported!
#endregion
#region LXD600
public const string LXD600 = "LXD600";
public const string LXD600_6_12S = "6.12S";
#endregion
#region RCX400
// ReSharper disable once InconsistentNaming
public const string RCX400 = "RCX400";
public const string RCX400_22I = "2.2i";
#endregion
}
}
+18
View File
@@ -0,0 +1,18 @@
using JetBrains.Annotations;
using System.Threading;
namespace ASCOM.Meade.net
{
public class ThreadSafeValue<T>
{
private object _value;
public ThreadSafeValue(in T value) => _value = value;
public void Set(in T value) => Interlocked.Exchange(ref _value, value);
public static implicit operator ThreadSafeValue<T>(in T value) => new ThreadSafeValue<T>(value);
public static implicit operator T([NotNull] ThreadSafeValue<T> @this) => (T)(@this?._value ?? default);
}
}
+28
View File
@@ -0,0 +1,28 @@
using System;
namespace ASCOM.Meade.net.Wrapper
{
public class GetValueException : Exception
{
public GetValueException(
string driverId,
string name,
string subKey,
string defaultValue,
Exception innerException
) : base ( $"Error getting value {name} from driver {driverId} in {subKey} and default value {defaultValue} cannot be used.", innerException)
{
}
public GetValueException(
string driverId,
string name,
string subKey,
string defaultValue,
string value,
Exception innerException):
base($"Error converting value {name} from {value}", innerException)
{
}
}
}
+67 -1
View File
@@ -1,5 +1,6 @@
using System;
using System.Collections;
using System.Globalization;
using ASCOM.Utilities;
using ASCOM.Utilities.Interfaces;
@@ -7,7 +8,11 @@ namespace ASCOM.Meade.net.Wrapper
{
public interface IProfileWrapper : IProfile, IProfileExtra, IDisposable
{
int GetValueInt(string driverId, string name, string subKey, string defaultValue);
short GetValueShort(string driverId, string name, string subKey, string defaultValue);
bool GetValueBool(string driverId, string name, string subKey, string defaultValue);
double GetValueDouble(string driverId, string name, string subKey, string defaultValue);
}
public class ProfileWrapper : IProfileWrapper
@@ -36,7 +41,68 @@ namespace ASCOM.Meade.net.Wrapper
public string GetValue(string driverId, string name, string subKey, string defaultValue)
{
return _profile.GetValue(driverId, name, subKey, defaultValue);
try
{
return _profile.GetValue(driverId, name, subKey, defaultValue);
}
catch (Exception e)
{
throw new GetValueException(driverId, name, subKey, defaultValue, e);
}
}
public int GetValueInt(string driverId, string name, string subKey, string defaultValue)
{
var value = GetValue(driverId, name, subKey, defaultValue);
try
{
return int.Parse(value, CultureInfo.InvariantCulture);
}
catch (Exception e)
{
throw new GetValueException(driverId, name, subKey, defaultValue, value, e);
}
}
public short GetValueShort(string driverId, string name, string subKey, string defaultValue)
{
var value = GetValue(driverId, name, subKey, defaultValue);
try
{
return short.Parse(value, CultureInfo.InvariantCulture);
}
catch (Exception e)
{
throw new GetValueException(driverId, name, subKey, defaultValue, value, e);
}
}
public bool GetValueBool(string driverId, string name, string subKey, string defaultValue)
{
var value = GetValue(driverId, name, subKey, defaultValue);
try
{
return bool.Parse(value);
}
catch (Exception e)
{
throw new GetValueException(driverId, name, subKey, defaultValue, value, e);
}
}
public double GetValueDouble(string driverId, string name, string subKey, string defaultValue)
{
var value = GetValue(driverId, name, subKey, defaultValue);
try
{
return double.Parse(value, CultureInfo.InvariantCulture);
}
catch (Exception e)
{
throw new GetValueException(driverId, name, subKey, defaultValue, value, e);
}
}
public void WriteValue(string driverId, string name, string value, string subKey)
+110 -17
View File
@@ -1,4 +1,5 @@
using System;
using ASCOM.DeviceInterface;
using ASCOM.Utilities.Interfaces;
namespace ASCOM.Meade.net.Wrapper
@@ -11,13 +12,12 @@ namespace ASCOM.Meade.net.Wrapper
string ProductName { get; }
string FirmwareVersion { get; }
void Lock(Action action);
T Lock<T>(Func<T> func);
string SendString(string message);
void SendBlind(string message);
string SendChar(string message);
string SendString(ITraceLogger traceLogger, string message, bool raw = false);
void SendBlind(ITraceLogger traceLogger, string message, bool raw = false);
bool SendBool(ITraceLogger traceLogger, string command, bool raw = false);
string SendChar(ITraceLogger traceLogger, string message, bool raw = false);
string SendChars(ITraceLogger traceLogger, string message, bool raw = false, int count = 1);
string ReadTerminated();
@@ -26,6 +26,28 @@ namespace ASCOM.Meade.net.Wrapper
void SetupDialog();
void WriteProfile(ProfileProperties profileProperties);
void ReadCharacters(int throwAwayCharacters);
void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking);
bool IsParked { get; }
ParkedPosition ParkedPosition { get; }
bool RestartTracking { get; }
double? TargetRightAscension { get; set; }
double? TargetDeclination { get; set; }
short SlewSettleTime { get; set; }
bool IsLongFormat { get; set; }
bool MovingPrimary { get; set; }
bool MovingSecondary { get; set; }
DateTime EarliestNonSlewingTime { get; set; }
bool IsTargetCoordinateInitRequired { get; set; }
bool IsGuiding { get; set; }
}
public class SharedResourcesWrapper : ISharedResourcesWrapper
@@ -44,29 +66,29 @@ namespace ASCOM.Meade.net.Wrapper
public string FirmwareVersion => SharedResources.FirmwareVersion;
public void Lock(Action action)
public string SendString(ITraceLogger traceLogger, string message, bool raw = false)
{
SharedResources.Lock(action);
return SharedResources.SendString(traceLogger, message, raw);
}
public T Lock<T>(Func<T> func)
public void SendBlind(ITraceLogger traceLogger, string message, bool raw = false)
{
return SharedResources.Lock(func);
SharedResources.SendBlind(traceLogger, message, raw);
}
public string SendString(string message)
public bool SendBool(ITraceLogger traceLogger, string command, bool raw = false)
{
return SharedResources.SendString(message);
return SharedResources.SendBool(traceLogger, command, raw);
}
public void SendBlind(string message)
public string SendChar(ITraceLogger traceLogger, string message, bool raw = false)
{
SharedResources.SendBlind(message);
return SharedResources.SendChar(traceLogger, message, raw);
}
public string SendChar(string message)
public string SendChars(ITraceLogger traceLogger, string message, bool raw = false, int count = 1)
{
return SharedResources.SendChar(message);
return SharedResources.SendChars(traceLogger, message, raw, count);
}
public string ReadTerminated()
@@ -93,5 +115,76 @@ namespace ASCOM.Meade.net.Wrapper
{
SharedResources.WriteProfile(profileProperties);
}
public void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking)
{
SharedResources.SetParked(atPark, parkedPosition, restartTracking);
}
public bool IsParked => SharedResources.IsParked;
public bool RestartTracking => SharedResources.RestartTracking;
public ParkedPosition ParkedPosition => SharedResources.ParkedPosition;
public PierSide SideOfPier
{
get => SharedResources.SideOfPier;
set => SharedResources.SideOfPier = value;
}
public double? TargetRightAscension
{
get => SharedResources.TargetRightAscension;
set => SharedResources.TargetRightAscension = value;
}
public double? TargetDeclination
{
get => SharedResources.TargetDeclination;
set => SharedResources.TargetDeclination = value;
}
public short SlewSettleTime
{
get => SharedResources.SlewSettleTime;
set => SharedResources.SlewSettleTime = value;
}
public bool IsLongFormat
{
get => SharedResources.IsLongFormat;
set => SharedResources.IsLongFormat = value;
}
public bool MovingPrimary
{
get => SharedResources.MovingPrimary;
set => SharedResources.MovingPrimary = value;
}
public bool MovingSecondary
{
get => SharedResources.MovingSecondary;
set => SharedResources.MovingSecondary = value;
}
public DateTime EarliestNonSlewingTime
{
get => SharedResources.EarliestNonSlewingTime;
set => SharedResources.EarliestNonSlewingTime = value;
}
public bool IsTargetCoordinateInitRequired
{
get => SharedResources.IsTargetCoordinateInitRequired;
set => SharedResources.IsTargetCoordinateInitRequired = value;
}
public bool IsGuiding
{
get => SharedResources.IsGuiding;
set => SharedResources.IsGuiding = value;
}
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ASCOM.Platform" version="6.5.1" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net472" />
<package id="ASCOM.Platform" version="6.5.2" targetFramework="net472" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net472" />
</packages>
@@ -10,7 +10,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ASCOM.Meade.net</RootNamespace>
<AssemblyName>ASCOM.Meade.net.Test</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
@@ -59,8 +59,8 @@
<ItemGroup>
<Reference Include="ASCOM.DeviceInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL" />
<Reference Include="ASCOM.DriverAccess, Version=6.0.0.0, Culture=neutral, PublicKeyToken=565de7938946fba7, processorArchitecture=MSIL" />
<Reference Include="JetBrains.Annotations, Version=2020.3.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2020.3.0\lib\net20\JetBrains.Annotations.dll</HintPath>
<Reference Include="JetBrains.Annotations, Version=4242.42.42.42, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
<HintPath>..\packages\JetBrains.Annotations.2022.3.1\lib\net20\JetBrains.Annotations.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
+1 -1
View File
@@ -1,3 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="JetBrains.Annotations" version="2020.3.0" targetFramework="net45" />
<package id="JetBrains.Annotations" version="2022.3.1" targetFramework="net48" />
</packages>