Skip to content

Commit fe4d8c8

Browse files
V1.1.24.0 Updates
1 parent 4ae4a76 commit fe4d8c8

7 files changed

Lines changed: 148 additions & 50 deletions

File tree

OATControl/DlgAppSettings.xaml

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
xmlns:converters="clr-namespace:OATControl.Converters"
1212
Loaded="OnWindowLoaded"
1313
mc:Ignorable="d"
14-
Title="OATControl Settings" MinHeight="250" Width="600" MinWidth="500" Height="500" WindowStyle="ToolWindow">
14+
Title="OATControl Settings" MinHeight="400" Width="660" MinWidth="600" Height="560" WindowStyle="ToolWindow">
1515
<Window.Resources>
1616
<converters:DoubleToHMSConverter x:Key="RAConverter" />
1717
<converters:DoubleToHMSConverter x:Key="DECConverter" Formatter = "[0:+00;-00]° [1:00]&quot; [2:00]'"/>
@@ -98,8 +98,8 @@
9898
<Setter Property="FontSize" Value="9" />
9999
<Setter Property="FontWeight" Value="Normal" />
100100
<Setter Property="TextWrapping" Value="Wrap" />
101-
<Setter Property="Width" Value="200" />
102-
<Setter Property="Margin" Value="2,0,0,0" />
101+
<Setter Property="Width" Value="Auto" />
102+
<Setter Property="Margin" Value="2,0,20,0" />
103103
<Setter Property="Foreground" Value="#B00" />
104104
</Style>
105105

@@ -456,6 +456,7 @@
456456
<RowDefinition Height="Auto"/>
457457
<RowDefinition Height="Auto"/>
458458
<RowDefinition Height="Auto"/>
459+
<RowDefinition Height="Auto"/>
459460
</Grid.RowDefinitions>
460461
<Grid.ColumnDefinitions>
461462
<ColumnDefinition Width="*" />
@@ -525,7 +526,12 @@
525526
Text="{Binding SharpCapLogFolder}"
526527
VerticalAlignment="Center" Margin="20,4,20,0"/>
527528

528-
<Grid Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" >
529+
<StackPanel Grid.Row="6" Grid.Column="0" VerticalAlignment="Top" Margin="0,15,0,0">
530+
<TextBlock Text="Invert corrections" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top"/>
531+
<TextBlock Text="If enabled, the corrections for the corresponding axis will be inverted." Style="{StaticResource TextBlockOptionHelp}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
532+
</StackPanel>
533+
534+
<Grid Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2" >
529535
<Grid.RowDefinitions>
530536
<RowDefinition Height="Auto"/>
531537
<RowDefinition Height="Auto"/>
@@ -537,10 +543,6 @@
537543
</Grid.ColumnDefinitions>
538544
<TextBlock Grid.Column="1" Text="AZ" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" Margin="30,20,0,0" HorizontalAlignment="Left"/>
539545
<TextBlock Grid.Column="2" Text="ALT" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" Margin="30,20,0,0" HorizontalAlignment="Left"/>
540-
<StackPanel Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" Margin="0,15,0,0">
541-
<TextBlock Text="Invert corrections" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top"/>
542-
<TextBlock Text="If enabled, the corrections for the corresponding axis will be inverted." Style="{StaticResource TextBlockOptionHelp}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
543-
</StackPanel>
544546
<Grid Grid.Row="0" Grid.Column="1" Width="Auto" HorizontalAlignment="Left" Margin="0,30,0,0">
545547
<Grid.RowDefinitions>
546548
<RowDefinition Height="Auto" />
@@ -573,28 +575,49 @@
573575

574576
<StackPanel Grid.Row="7" Grid.Column="0" VerticalAlignment="Top" >
575577
<TextBlock Text="AZ/ALT axis limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top"/>
576-
<TextBlock Text="Determines the maximum angle that the AZ and ALT axes will be moved during Automatic Polar Alignment." Style="{StaticResource TextBlockOptionHelp}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
578+
<TextBlock Text="Determines the maximum angle in degrees that the AZ and ALT axes will be moved during Automatic Polar Alignment." Style="{StaticResource TextBlockOptionHelp}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
577579
</StackPanel>
578580

581+
<Grid Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Left">
582+
<Grid.RowDefinitions>
583+
<RowDefinition Height="Auto"/>
584+
<RowDefinition Height="Auto"/>
585+
</Grid.RowDefinitions>
586+
<Grid.ColumnDefinitions>
587+
<ColumnDefinition Width="*" />
588+
<ColumnDefinition Width="*" />
589+
</Grid.ColumnDefinitions>
590+
<TextBlock Grid.Row="0" Grid.Column="0" Text="AZ Limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
591+
<TextBox Grid.Row="1" Grid.Column="0" Text="{Binding AZLimit}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
592+
<TextBlock Grid.Row="0" Grid.Column="1" Text="ALT Limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
593+
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding ALTLimit}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
579594

580-
<Border Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Left">
595+
</Grid>
581596

582-
<Grid Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Left">
583-
<Grid.RowDefinitions>
584-
<RowDefinition Height="Auto"/>
585-
<RowDefinition Height="Auto"/>
586-
</Grid.RowDefinitions>
587-
<Grid.ColumnDefinitions>
588-
<ColumnDefinition Width="*" />
589-
<ColumnDefinition Width="*" />
590-
</Grid.ColumnDefinitions>
591-
<TextBlock Grid.Row="0" Grid.Column="0" Text="AZ Limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
592-
<TextBox Grid.Row="1" Grid.Column="0" Text="{Binding AZLimit}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
593-
<TextBlock Grid.Row="0" Grid.Column="1" Text="ALT Limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
594-
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding ALTLimit}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
597+
<StackPanel Grid.Row="8" Grid.Column="0" VerticalAlignment="Top" >
598+
<TextBlock Text="Minimum Total Error" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top"/>
599+
<TextBlock Text="If Alignment Tolerance in N.I.N.A is set to zero, polar alignment does not terminate automatically. This value determines at which Total Error value OATControl will assume alignment has been reached and will no longer issue corrections." Style="{StaticResource TextBlockOptionHelp}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
600+
</StackPanel>
601+
602+
<StackPanel Grid.Row="8" Grid.Column="1" VerticalAlignment="Center" Orientation="Horizontal">
603+
<TextBox Text="{Binding PolarAlignmentMinimumTotalError}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
604+
<TextBlock Text="arc seconds" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
605+
</StackPanel>
606+
607+
<!--<Grid Grid.Row="8" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Left">
608+
<Grid.RowDefinitions>
609+
<RowDefinition Height="Auto"/>
610+
<RowDefinition Height="Auto"/>
611+
</Grid.RowDefinitions>
612+
<Grid.ColumnDefinitions>
613+
<ColumnDefinition Width="*" />
614+
<ColumnDefinition Width="*" />
615+
</Grid.ColumnDefinitions>
616+
<TextBlock Grid.Row="0" Grid.Column="0" Text="AZ Limits" Style="{StaticResource TextBlockLabel}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,20,0"/>
617+
<TextBox Grid.Row="1" Grid.Column="0" Text="{Binding AZLimit}" HorizontalAlignment="Left" Style="{StaticResource TextBoxSmallLimit}" />
618+
619+
</Grid>-->
595620

596-
</Grid>
597-
</Border>
598621
</Grid>
599622
</TabItem>
600623
</TabControl>

OATControl/DlgAppSettings.xaml.cs

Lines changed: 62 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ public partial class DlgAppSettings : MetroWindow, INotifyPropertyChanged
4141
private bool _decStartSouth;
4242
private float _raDistance;
4343
private float _decDistance;
44+
private float _altLimit;
45+
private float _azLimit;
46+
private float _totalErrorLimit;
47+
private bool _invertALTCorrections;
48+
private bool _invertAZCorrections;
49+
private bool _monitorNinaForPA;
50+
private string _ninaLogFolder;
51+
private bool _monitorSharpCapForPA;
52+
private string _sharpCapLogFolder;
53+
4454
private List<PointOfInterest> _pointsOfInterest;
4555
private PointOfInterest _selectedPoint;
4656
private string sortField = "Name";
@@ -91,8 +101,7 @@ public void OnAddPoint()
91101
dlg.ShowDialog();
92102
this.OnPropertyChanged("AllPointsOfInterest");
93103
}
94-
95-
public bool IsPointSelected
104+
public bool IsPointSelected
96105
{
97106
get { return _selectedPoint != null; }
98107
}
@@ -122,51 +131,51 @@ public List<PointOfInterest> AllPointsOfInterest
122131

123132
public String NinaLogFolder
124133
{
125-
get { return _mount.NinaLogFolder; }
134+
get { return _ninaLogFolder; }
126135
set
127136
{
128-
if (_mount.NinaLogFolder != value)
137+
if (_ninaLogFolder != value)
129138
{
130-
_mount.NinaLogFolder = value;
139+
_ninaLogFolder = value;
131140
OnPropertyChanged();
132141
}
133142
}
134143
}
135144

136145
public bool MonitorNinaForPA
137146
{
138-
get { return _mount.MonitorNinaForPA; }
147+
get { return _monitorNinaForPA; }
139148
set
140149
{
141-
if (_mount.MonitorNinaForPA != value)
150+
if (_monitorNinaForPA != value)
142151
{
143-
_mount.MonitorNinaForPA = value;
152+
_monitorNinaForPA = value;
144153
OnPropertyChanged();
145154
}
146155
}
147156
}
148157

149158
public String SharpCapLogFolder
150159
{
151-
get { return _mount.SharpCapLogFolder; }
160+
get { return _sharpCapLogFolder; }
152161
set
153162
{
154-
if (_mount.SharpCapLogFolder != value)
163+
if (_sharpCapLogFolder != value)
155164
{
156-
_mount.SharpCapLogFolder = value;
165+
_sharpCapLogFolder = value;
157166
OnPropertyChanged();
158167
}
159168
}
160169
}
161170

162171
public bool MonitorSharpCapForPA
163172
{
164-
get { return _mount.MonitorSharpCapForPA; }
173+
get { return _monitorSharpCapForPA; }
165174
set
166175
{
167-
if (_mount.MonitorSharpCapForPA != value)
176+
if (_monitorSharpCapForPA != value)
168177
{
169-
_mount.MonitorSharpCapForPA = value;
178+
_monitorSharpCapForPA = value;
170179
OnPropertyChanged();
171180
}
172181
}
@@ -194,40 +203,50 @@ public ChecklistShowOn ShowChecklist
194203

195204
public bool InvertALTCorrections
196205
{
197-
get { return _mount.InvertALTCorrections; }
206+
get { return _invertALTCorrections; }
198207
set
199208
{
200-
_mount.InvertALTCorrections = value;
209+
_invertALTCorrections = value;
201210
OnPropertyChanged();
202211
}
203212
}
204213

205214
public bool InvertAZCorrections
206215
{
207-
get { return _mount.InvertAZCorrections; }
216+
get { return _invertAZCorrections; }
208217
set
209218
{
210-
_mount.InvertAZCorrections = value;
219+
_invertAZCorrections = value;
211220
OnPropertyChanged();
212221
}
213222
}
214223

215224
public float AZLimit
216225
{
217-
get { return _mount.AZLimit; }
226+
get { return _azLimit; }
218227
set
219228
{
220-
_mount.AZLimit = value;
229+
_azLimit = value;
221230
OnPropertyChanged();
222231
}
223232
}
224233

225234
public float ALTLimit
226235
{
227-
get { return _mount.ALTLimit; }
236+
get { return _altLimit; }
228237
set
229238
{
230-
_mount.ALTLimit = value;
239+
_altLimit = value;
240+
OnPropertyChanged();
241+
}
242+
}
243+
244+
public float PolarAlignmentMinimumTotalError
245+
{
246+
get { return _totalErrorLimit; }
247+
set
248+
{
249+
_totalErrorLimit = value;
231250
OnPropertyChanged();
232251
}
233252
}
@@ -318,18 +337,38 @@ public void OnConfigureChecklist()
318337
private void OnCloseClick(object sender, RoutedEventArgs e)
319338
{
320339
// Transfer to MountVM
321-
_mount.SelectedBaudRate = _serialBaudRate;
340+
AppSettings.Instance.BaudRate = _serialBaudRate;
322341
AppSettings.Instance.AutoHomeRaDirection = RaStartEast ? "East" : "West";
323342
AppSettings.Instance.AutoHomeRaDistance = RaDistance;
324343
AppSettings.Instance.AutoHomeDecDirection = DecStartSouth ? "South" : "North";
325344
AppSettings.Instance.AutoHomeDecDistance = DecDistance;
326345
AppSettings.Instance.ShowChecklist = ShowChecklist;
346+
AppSettings.Instance.AZLimit= AZLimit;
347+
AppSettings.Instance.ALTLimit = ALTLimit;
348+
AppSettings.Instance.PolarAlignmentMinimumTotalError= PolarAlignmentMinimumTotalError;
349+
AppSettings.Instance.InvertALTCorrections = InvertALTCorrections;
350+
AppSettings.Instance.InvertAZCorrections = InvertAZCorrections;
351+
AppSettings.Instance.MonitorNinaPA = MonitorNinaForPA;
352+
AppSettings.Instance.NinaLogFolder = NinaLogFolder;
353+
AppSettings.Instance.MonitorSharpCapPA = MonitorSharpCapForPA;
354+
AppSettings.Instance.SharpCapLogFolder= SharpCapLogFolder;
355+
327356
AppSettings.Instance.Save();
357+
_mount.SelectedBaudRate = _serialBaudRate;
328358
_mount.AutoHomeDecDirection = AppSettings.Instance.AutoHomeDecDirection;
329359
_mount.AutoHomeRaDirection = AppSettings.Instance.AutoHomeRaDirection;
330360
_mount.AutoHomeDecDistance = AppSettings.Instance.AutoHomeDecDistance;
331361
_mount.AutoHomeRaDistance = AppSettings.Instance.AutoHomeRaDistance;
332362
_mount.ShowChecklist = AppSettings.Instance.ShowChecklist;
363+
_mount.AZLimit = AZLimit;
364+
_mount.ALTLimit = ALTLimit;
365+
_mount.PolarAlignmentMinimumTotalError = PolarAlignmentMinimumTotalError;
366+
_mount.InvertALTCorrections = InvertALTCorrections;
367+
_mount.InvertAZCorrections = InvertAZCorrections;
368+
_mount.MonitorNinaForPA = MonitorNinaForPA;
369+
_mount.NinaLogFolder = NinaLogFolder;
370+
_mount.MonitorSharpCapForPA = MonitorSharpCapForPA;
371+
_mount.SharpCapLogFolder = SharpCapLogFolder;
333372

334373
_mount.SavePointsOfInterest();
335374
Close();

OATControl/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@
5151
// You can specify all the values or you can default the Build and Revision Numbers
5252
// by using the '*' as shown below:
5353
// [assembly: AssemblyVersion("1.0.*")]
54-
[assembly: AssemblyVersion("1.1.23.0")]
55-
[assembly: AssemblyFileVersion("1.1.23.0")]
54+
[assembly: AssemblyVersion("1.1.24.0")]
55+
[assembly: AssemblyFileVersion("1.1.24.0")]

OATControl/Readme.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
Revision History
22
----------------
33

4+
OATControl V1.1.24.0 5 Jan 2026
5+
- Added ability to terminate AutoPA when the total error is below a
6+
threshold. USeful if NINA is set to 0 Alignment Tolerance.
7+
48
OATControl V1.1.23.0 29 Dec 2025
59
- Changed AutoPA limits to be symmetrical.
610

OATControl/ViewModels/AppSettings.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,5 +552,12 @@ public float ALTLimit
552552
get { return Convert.ToSingle(this["ALTLimit"] ?? "3"); }
553553
set { this["ALTLimit"] = value.ToString(); }
554554
}
555+
556+
[DefaultValueAttribute("20")]
557+
public float PolarAlignmentMinimumTotalError
558+
{
559+
get { return Convert.ToSingle(this["PolarAlignmentMinimumTotalError"] ?? "20"); }
560+
set { this["PolarAlignmentMinimumTotalError"] = value.ToString(); }
561+
}
555562
}
556563
}

OATControl/ViewModels/MountVM.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class MountVM : ViewModelBase
4646
float _azStepper = 0;
4747
float _azLimit = 2.0f;
4848
float _altLimit = 4.0f;
49+
float _totalErrorLimit = 0;
4950
float _trkStepper = 0;
5051
long _focStepper = 0;
5152
float _raStepsPerDegree = 1;
@@ -526,6 +527,7 @@ public MountVM()
526527
MonitorSharpCapForPA = AppSettings.Instance.MonitorSharpCapPA;
527528
_azLimit = AppSettings.Instance.AZLimit;
528529
_altLimit = AppSettings.Instance.ALTLimit;
530+
_totalErrorLimit = AppSettings.Instance.PolarAlignmentMinimumTotalError;
529531
}
530532

531533
private bool _isNinaLogActive;
@@ -3733,6 +3735,18 @@ void OnAltAzLimitsChanged(float a, float b )
37333735
AppSettings.Instance.Save();
37343736
}
37353737

3738+
public float PolarAlignmentMinimumTotalError
3739+
{
3740+
get { return _totalErrorLimit; }
3741+
set { SetPropertyValue(ref _totalErrorLimit, value, OnTotalErrorLimitChanged); }
3742+
}
3743+
3744+
void OnTotalErrorLimitChanged(float a, float b)
3745+
{
3746+
AppSettings.Instance.PolarAlignmentMinimumTotalError = PolarAlignmentMinimumTotalError;
3747+
AppSettings.Instance.Save();
3748+
}
3749+
37363750
private void OnRAPosChanged(float a, float b)
37373751
{
37383752
if (FirmwareVersion < 11206)

OATControl/ViewModels/NinaPolarAlignLogProcessor.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,17 @@ protected override void ProcessLogLines()
174174
return;
175175
}
176176

177+
var totalAdjust = ParseMinutes(totalError, @"^([+-]?\d+)[°\s]+(\d+)[\'\s]+(\d+)[\""\s]*$");
178+
if (totalAdjust*60 < 20)
179+
{
180+
Log.WriteLine($"NINALOG: Total error is below 20 arcsecs, alignment succeeded!!");
181+
_examinedLines = lineCount;
182+
_polarAlignState = "Complete";
183+
ShowDialogStatus("Succeeded", "Polar Alignment succeeded, error below 20 arcsecs.");
184+
return;
185+
186+
}
187+
177188
Log.WriteLine($"NINALOG: Sending Adjustment to mount");
178189
RaiseCorrectionRequired(new PolarAlignCorrectionEventArgs(altAdjust, azAdjust));
179190
_polarAlignState = "Adjusting";

0 commit comments

Comments
 (0)