forked from selenur/OLD---CNC-controller-version-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setting.cs
248 lines (191 loc) · 8.12 KB
/
setting.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
namespace CNC_App
{
/// <summary>
/// Класс для храненения настроек программы
/// </summary>
public static class Setting
{
/// <summary>
/// Модель контроллера
/// </summary>
public static DeviceModel DeviceModel = DeviceModel.Emulator;
/// <summary>
/// Язык вывода
/// пока доступно rus, eng
/// </summary>
public static eLanguage language = eLanguage.rus;
/// <summary>
/// Количество импульсов в 1 мм для X
/// </summary>
public static int PulseX = 400;
/// <summary>
/// Количество импульсов в 1 мм для Y
/// </summary>
public static int PulseY = 400;
/// <summary>
/// Количество импульсов в 1 мм для Z
/// </summary>
public static int PulseZ = 400;
/// <summary>
/// Количество импульсов в 1 мм для Z
/// </summary>
public static int PulseA = 400;
public static bool StartupConnect = true;
/// <summary>
/// Файл настроек программы
/// </summary>
private static readonly string Filesetting = string.Format("{0}\\setting.ini", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
/// <summary>
/// Загрузка из файла настроек
/// </summary>
/// <returns></returns>
public static void LoadSetting()
{
string sPulseX = LoadProperty("pulseX").Trim();
string sPulseY = LoadProperty("pulseY").Trim();
string sPulseZ = LoadProperty("pulseZ").Trim();
string sStartupConnect = LoadProperty("StartupConnect").Trim();
string sDeviceModel = LoadProperty("DeviceModel").Trim();
string sLanguage = LoadProperty("Language").Trim();
if (sPulseX != "") Setting.PulseX = int.Parse(sPulseX);
if (sPulseY != "") Setting.PulseY = int.Parse(sPulseY);
if (sPulseZ != "") Setting.PulseZ = int.Parse(sPulseZ);
if (sStartupConnect != "") StartupConnect = bool.Parse(sStartupConnect);
switch (sDeviceModel)
{
case "MK1":
Setting.DeviceModel = DeviceModel.MK1;
break;
case "MK2":
Setting.DeviceModel = DeviceModel.MK2;
break;
default:
Setting.DeviceModel = DeviceModel.Emulator;
break;
}
switch (sLanguage)
{
case "rus":
Setting.language = eLanguage.rus;
break;
case "eng":
Setting.language = eLanguage.eng;
break;
default:
Setting.language = eLanguage.eng;
break;
}
}
/// <summary>
/// Сохранение в файл настроек
/// </summary>
/// <returns></returns>
public static void SaveSetting()
{
SaveProperty("pulseX", Setting.PulseX.ToString());
SaveProperty("pulseY", Setting.PulseY.ToString());
SaveProperty("pulseZ", Setting.PulseZ.ToString());
SaveProperty("StartupConnect", StartupConnect.ToString());
SaveProperty("DeviceModel", Setting.DeviceModel.ToString());
SaveProperty("Language", Setting.language.ToString());
}
/// <summary>
/// Функция извлечения параметра из файла настроек
/// </summary>
/// <param name="property">Имя параметра (строка)</param>
/// <returns>Значение параметра (Строка), если будет отсутствовать файл настроек, или указанный параметр, то вернется ""</returns>
private static string LoadProperty(string property)
{
if (!File.Exists(Filesetting)) return "";
var sr = new StreamReader(Filesetting);
var arr = sr.ReadToEnd().Split('\n');
sr.Close();
foreach (var ss in arr)
{
//проверим наш ли это параметр
var posSymbol = ss.IndexOf('=');
if (posSymbol <= 0) continue; //странный параметр, такой не нужен нам
var sProperty = ss.Substring(0, posSymbol);
var sValue = ss.Substring(posSymbol + 1);
if (property.Trim() == sProperty.Trim())
{
return sValue;
}
}
return "";
}
/// <summary>
/// Функция для сохранения параметров в файле настроек
/// Сохраненные данные в файле будут выглядеть следующим образом:
/// параметр = значение
/// !!! Поэтому знак равно нельзя использовать ни в параметре ни в значении
/// </summary>
/// <param name="property">Имя параметра (строка)</param>
/// <param name="value">Значение параметра (Строка)</param>
private static void SaveProperty(string property, string value)
{
List<string> listProperty = new List<string>();
// Запись параметра в файл
// В начале получим все параметры
if (File.Exists(Filesetting))
{
StreamReader sr = new StreamReader(Filesetting);
string[] arr = sr.ReadToEnd().Split('\n');
sr.Close();
foreach (string ss in arr)
{
// ReSharper disable once RedundantAssignment
var sformat = ss.Replace('\n', ' ').Trim();
sformat = ss.Replace('\r', ' ').Trim();
if (sformat.Length < 3) continue;
//проверим наш ли это параметр
int posSymbol = sformat.IndexOf('=');
if (posSymbol == 0) continue; //странный параметр, такой не нужен нам
string sProperty = sformat.Substring(0, posSymbol);
string sValue = sformat.Substring(posSymbol + 1);
if (property.Trim() == sProperty.Trim()) continue; //нужный параметр пропустим
listProperty.Add(sProperty + "=" + sValue);
}
}
//если в существующем файле такого параметра нет, то добавим новый
listProperty.Add(property + "=" + value);
try
{
string sOut = "";
foreach (string ss in listProperty)
{
sOut += ss + Environment.NewLine;
//OutputFile.WriteLine(ss);
}
StreamWriter sw = new StreamWriter(Filesetting);
sw.WriteLine(sOut);
sw.Close();
}
catch (Exception)
{
//addLog(e.ToString(), true);
}
}
}
/// <summary>
/// Виды контроллеров, которые поддерживает программа
/// </summary>
public enum DeviceModel
{
Emulator = 0,
MK1 = 1,
MK2 = 2
};
/// <summary>
/// язык программы
/// </summary>
public enum eLanguage
{
rus = 0,
eng = 1
};
}