/// <summary> /// Запустить alfamos и установить подключение /// </summary> /// <param name="anyAlfamos"></param> /// <returns>имя новой сессии</returns> public char OpenConnection(PCCOMM_Path anyAlfamos, out Process alfamos) { char currentSessionName = 'H'; alfamos = null; for (int i = 8; i > 0; i--) { if (EUCL.Connect($"{ currentSessionName }") == 0) { currentSessionName++; alfamos = runAlfamos(currentSessionName, anyAlfamos.Path); return(currentSessionName); } else if (currentSessionName != 'A') { currentSessionName--; } else { alfamos = runAlfamos(currentSessionName, anyAlfamos.Path); } } return(currentSessionName); }
/// <summary> /// запустить сессию pccomm /// </summary> /// <param name="currentSessionName"></param> /// <param name="filePath"></param> private Process runAlfamos(char currentSessionName, string filePath) { int count = 0; if (Process.GetProcessesByName("pcscm").Length < 1) { Process.Start(_pcscm.Path); } Process newAlfamos = Process.Start(filePath); while (EUCL.Connect($"{currentSessionName}") != 0) { count++; if (count > WAIT_TIME) { throw new Exception("Не удалось запустить сессию Equation."); } Thread.Sleep(1000); } EUCL.Connect($"{currentSessionName}"); enter(); enter(); enter(); return(newAlfamos); }
/// <summary> /// Записать текущий профайл пользователя в Equation /// </summary> /// <param name="connectionChar">имя сессии</param> internal void GetUserProfile(char connectionChar) { EUCL.Connect(connectionChar.ToString()); EUCL.ClearScreen(); send("Я", 21, 17); enter(); _currentUserProfile = EUCL.ReadScreen(6, 18, 4); EUCL.SendStr("@c"); EUCL.Wait(); EUCL.Disconnect(connectionChar.ToString()); }
/// <summary> /// Заполнить коллекцию счетов данными из equation /// </summary> /// <param name="accounts"></param> /// <param name="connectionChar"></param> internal void FillAccounts(List <Account> accounts, char connectionChar) { EUCL.Connect($"{connectionChar}"); foreach (Account acc in accounts) { DateTime temp; EUCL.ClearScreen(); send("БРХ", 21, 17); enter(); send(acc.Number, 3, 29); enter(); DateTime.TryParse(EUCL.ReadScreen(4, 70, 11), out temp); acc.OpenedDate = temp; if (DateTime.TryParse(EUCL.ReadScreen(5, 70, 11), out temp)) { acc.ClosedDate = temp; } } EUCL.ClearScreen(); EUCL.Disconnect($"{connectionChar}"); }
public Equation() { #region getConnection int attempCount = 0; Console.WriteLine("Connecting to Equation"); Console.WriteLine($"Trying connect to {sessionName}..."); while (EUCL.Connect(sessionName.ToString()) != 0) { if (attempCount++ > 5) { connected = false; Console.WriteLine("Connection failed"); break; } sessionName++; Console.WriteLine($"Trying connect to {sessionName}..."); } if (connected) { ClearScreen(); Console.WriteLine("Connected."); } #endregion }