SettingsHandler.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO.Ports;
  7. namespace crusherScanner
  8. {
  9. internal class SettingsHandler
  10. {
  11. public void PutSettingsInternal(Settings settings)
  12. {
  13. }
  14. public Settings GetSettingsInternal()
  15. {
  16. //TODO: Fix this
  17. return new Settings();
  18. }
  19. /// <summary>
  20. /// Check the settings given are sane.
  21. /// </summary>
  22. /// <param name="settings">Settings to check.</param>
  23. /// <returns>True for sane, false if not.</returns>
  24. public static bool CheckSettings(Settings settings)
  25. {
  26. bool settingsCheckPassed = true;
  27. string replyMessage = "";
  28. if (settings.CrusherNo == 0)
  29. {
  30. replyMessage += "Crusher No must be a value between 1 and 3.\n";
  31. settingsCheckPassed = false;
  32. }
  33. if (settings.PrepmasterConnection)
  34. {
  35. if (settings.PrepmasterMagazineSerial == "" || settings.PrepmasterMagazineSerial == null)
  36. {
  37. replyMessage += "Prepmaster Magazine Serial details are blank, Please enter valid serial details or set Prepmaster Connection to false.\n";
  38. settingsCheckPassed = false;
  39. }
  40. else
  41. {
  42. //TODO check serial connection details.
  43. CheckSerial(settings.PrepmasterMagazineSerial);
  44. }
  45. }
  46. else
  47. {
  48. replyMessage += "Prepmaster Connection is set to false, SID's will not be sent to the crusher input.\n";
  49. }
  50. if (settings.LimsConnection)
  51. {
  52. if (settings.LimsConnString == "" || settings.LimsConnString == null)
  53. {
  54. replyMessage += "LIMS connection details are blank, Please enter valid database connection details or set LIMS Connection to false.\n";
  55. settingsCheckPassed = false;
  56. }
  57. else
  58. {
  59. //TODO check LIMS connection details.
  60. }
  61. }
  62. else
  63. {
  64. replyMessage += "LIMS Connection is set to false, SID's will not be checked if they have been registered in LIMS.\n";
  65. }
  66. if (settings.OreDefInFile == "" || settings.OreDefInFile == null)
  67. {
  68. replyMessage += "Ore Def input folder is not set, Please select a directory where the Ore Def input files can be found.\n";
  69. settingsCheckPassed = false;
  70. }
  71. else
  72. {
  73. if(settings.OreDefInFile == settings.OreDefWorkFile)
  74. {
  75. replyMessage += "Ore Def input folder and Ore Def working folder cannot be the same directory.\n";
  76. settingsCheckPassed = false;
  77. }
  78. if (settings.OreDefInFile == settings.OreDefOutFile)
  79. {
  80. replyMessage += "Ore Def input folder and Ore Def output folder cannot be the same directory.\n";
  81. settingsCheckPassed = false;
  82. }
  83. if (!Directory.Exists(settings.OreDefInFile))
  84. {
  85. replyMessage += $"Ore Def input folder is not accessable ({settings.OreDefInFile}).\n";
  86. settingsCheckPassed = false;
  87. }
  88. }
  89. if (settings.OreDefWorkFile == "" || settings.OreDefWorkFile == null)
  90. {
  91. replyMessage += "Ore Def working folder is not set, Please select a directory where the Ore Def working files can be stored\\shared.\n";
  92. settingsCheckPassed = false;
  93. }
  94. else
  95. {
  96. if (settings.OreDefWorkFile == settings.OreDefOutFile)
  97. {
  98. replyMessage += "Ore Def working folder and Ore Def output folder cannot be the same directory.\n";
  99. settingsCheckPassed = false;
  100. }
  101. if (!Directory.Exists(settings.OreDefWorkFile))
  102. {
  103. replyMessage += $"Ore Def working folder is not accessable ({settings.OreDefWorkFile}).\n";
  104. settingsCheckPassed = false;
  105. }
  106. }
  107. if (settings.OreDefOutFile == "" || settings.OreDefOutFile == null)
  108. {
  109. replyMessage += "Ore Def output folder is not set, Please select a directory where the Ore Def output files can be stored.\n";
  110. settingsCheckPassed = false;
  111. }
  112. else
  113. {
  114. if (!Directory.Exists(settings.OreDefOutFile))
  115. {
  116. replyMessage += $"Ore Def output folder is not accessable ({settings.OreDefOutFile}).\n";
  117. settingsCheckPassed = false;
  118. }
  119. }
  120. if (settings.OreDefTypes == "" || settings.OreDefTypes == null)
  121. {
  122. replyMessage += "Ore Def barcode prefix's are not set, Please enter a barcode prefix for Ore Def samples (comma delimited for multiples).\n";
  123. settingsCheckPassed = false;
  124. }
  125. if (settings.OutputFormat == "" || settings.OutputFormat == null)
  126. {
  127. replyMessage += "Ore Def output format not set, Please enter a format for Ore Def output files (default is CSV).\n";
  128. settingsCheckPassed = false;
  129. }
  130. if (settingsCheckPassed)
  131. {
  132. MessageBox.Show(replyMessage,"Settings check",MessageBoxButtons.OK,MessageBoxIcon.Information);
  133. }
  134. else
  135. {
  136. MessageBox.Show(replyMessage, "Settings check", MessageBoxButtons.OK, MessageBoxIcon.Error);
  137. }
  138. return settingsCheckPassed;
  139. }
  140. private static (bool,string) CheckSerial(string serialSetup)
  141. {
  142. string[] comPorts = { "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10", "COM11", "COM12", "COM13", "COM14", "COM15", "COM16" };
  143. string[] BaudRate = { "300", "600", "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200", "230400", "460800", "921600"};
  144. string[] Parity = { "Parity.None", "Parity.Odd", "Parity.Even", "Parity.Mark", "Parity.Space" };
  145. string[] DataBits = { "5", "6", "7", "8" };
  146. string[] StopBits = { "StopBits.None", "StopBits.One", "StopBits.Two", "StopBits.OnePointFive" };
  147. //COM1,9600,Parity.None,8,StopBits.One
  148. if (serialSetup.Contains(','))
  149. {
  150. string[] serialConfig = serialSetup.Split(',');
  151. if (serialConfig.Length>4)
  152. {
  153. return (Validate(serialConfig[4], StopBits), "");
  154. }
  155. return (Validate(serialSetup, comPorts), "");
  156. }
  157. else
  158. {
  159. return (Validate(serialSetup,comPorts),"");
  160. }
  161. }
  162. private static bool Validate(string value, string[] acceptable)
  163. {
  164. foreach (var item in acceptable)
  165. {
  166. if(value == item)
  167. {
  168. return true;
  169. }
  170. }
  171. return false;
  172. }
  173. private static void CheckLims(string limsSetup)
  174. {
  175. }
  176. }
  177. }