void emu_Disconnected(TNEmulator where, string Reason) { Disconnect(); this.IsConnected = false; this.IsConnecting = false; this.ScreenText = Reason; }
TNEmulator ConnectAndLogin(string user, string pass, string ip, int port) { CloseTerminal(); TNEmulator emulator = new TNEmulator(); emulator.Debug = false; emulator.Config.TermType = "IBM-3278-2-E"; emulator.Config.FastScreenMode = true; emulator.Connect(ip, port, null); if (!emulator.WaitForText(0, 5, "THIS TERMINAL IS LOGGED ON", _timeout)) { throw new Exception("Erro ao logar, não encontrada mensagem: THIS TERMINAL IS LOGGED ON"); } emulator.SendText("0cicabnpt"); emulator.SendKey(true, TnKey.Enter, _timeout); emulator.SendKey(true, TnKey.Enter, _timeout); if (!emulator.WaitForText(1, 2, "WELCOME TO CICS", _timeout)) { throw new Exception("Erro ao logar, não encontrada mensagem: WELCOME TO CICS"); } WriteTextToField(emulator.CurrentScreenXML.Fields[18], emulator, user); WriteTextToField(emulator.CurrentScreenXML.Fields[25], emulator, pass); emulator.SendKey(true, TnKey.Enter, _timeout); emulator.WaitForHostSettle(100, _timeout); emulator.SendKey(true, TnKey.Enter, _timeout); if (!emulator.WaitForText(5, 0, "CICS-SSO", _timeout)) { throw new Exception("Erro ao logar, não encontrada mensagem: CICS-SSO"); } return(emulator); }
public void connectToolStripMenuItem_Click(object sender, EventArgs e) { if (connectToolStripMenuItem.Text == "Connect") { if (string.IsNullOrEmpty(_host) || string.IsNullOrEmpty(_port)) { MessageBox.Show("Please provide a Host and Port."); return; } _terminalType = string.IsNullOrEmpty(_terminalType) ? null : _terminalType; if (OpenEmulator.Connect(_host, int.Parse(_port), _terminalType, _useSsl)) { TN3270 = OpenEmulator.TN3270; Text = $"Terminal (Connected) - Host: {_host} - Port: {_port}"; connectToolStripMenuItem.Text = "Disconnect"; } } else { OpenEmulator.Disconnect(); TN3270 = null; Text = "Terminal (Disconnected)"; connectToolStripMenuItem.Text = "Connect"; } }
public void Run() { TNEmulator emulator = new TNEmulator(); emulator.Audit = this; emulator.Debug = false; emulator.Config.TermType = "IBM-3278-2-E"; emulator.Config.FastScreenMode = true; emulator.Connect("localhost", 3270, null); // wait for the host to startup // if (emulator.WaitForTextOnScreen(2000, "Multi-User System for Interactive Computing / System Product", "MUSIC/SP ESA/390") == -1) { Console.WriteLine("Connection failed - didn't find 'LIBRARY OF CONGRESS' on screen"); Console.WriteLine(emulator.CurrentScreenXML.Dump()); return; } // // // emulator.Refresh(true, 20000); bool done = false; do { string currentScreen = emulator.CurrentScreenXML.Dump(); Console.WriteLine(currentScreen); Console.WriteLine("Enter command : - refresh, text <text>, key <key>, quit"); Console.WriteLine("key is one of : Attn, Backspace,BackTab,CircumNot,Clear,CursorSelect,Delete,DeleteField, DeleteWord,Down,Dup,Enter,Erase,EraseEOF,EraseInput,FieldEnd, FieldMark,FieldExit,Home,Insert,Interrupt,Key,Left,Left2,Newline,NextWord, PAnn, PFnn, PreviousWord,Reset,Right,Right2,SysReq,Tab,Toggle,ToggleInsert,ToggleReverse,Up"); string command = Console.ReadLine(); if (command == "quit") { done = true; } else if (command == "refresh") { emulator.Refresh(false, 0); } else if (command.Length > 4 && command.Substring(0, 4) == "key ") { emulator.SendKeyFromText(true, command.Substring(4)); } else if (command.Length > 5 && command.Substring(0, 5) == "text ") { emulator.SendText(command.Substring(5)); } else { Console.WriteLine("unknown command '" + command + "'"); } }while (!done); emulator.Close(); }
public void Disconnect() { try { Emulator3270?.Close(); Emulator3270 = null; _emulator = null; } finally { isConnected = false; } }
void ResetToMainMenu(TNEmulator emulator) { int count = 0; while (count <= _maxRetries) { emulator.WaitForHostSettle(50, _timeout); if (emulator.CurrentScreenXML.Dump().Contains("Aymore Financiamentos")) { return; } count++; } throw new Exception("Erro ao retornar ao menu principal, não encontrada mensagem: Aymore Financiamentos"); }
private Emulator() { Emulator3270 = new TNEmulator(); }
private void WriteTextToField(Open3270.TN3270.XMLScreenField field, TNEmulator emulator, string text) { emulator.SetText(text, field.Location.left, field.Location.top); }
private void emu_Disconnected(TNEmulator where, string Reason) { IsConnected = false; IsConnecting = false; ScreenText = Reason; }
public Terminal() { emu = new TNEmulator(); emu.Disconnected += emu_Disconnected; emu.CursorLocationChanged += emu_CursorLocationChanged; }
public List <string> AutorizarDispensaJuros(TNEmulator emulator) { List <string> contratosAprovados = new List <string>(); ResetToMainMenu(emulator); //string menuOption = ""; //for (int i = 0; i < emulator.CurrentScreenXML.Fields.Length; i++) //{ //if (emulator.CurrentScreenXML.Fields[3].Text != null) //{ WriteTextToField(emulator.CurrentScreenXML.Fields[3], emulator, "ocal"); emulator.SendKey(true, TnKey.Enter, _timeout); Console.Write(emulator.CurrentScreenXML.Dump()); //break; //} //} WriteTextToField(emulator.CurrentScreenXML.Fields[22], emulator, "20026731403"); emulator.SendKey(true, TnKey.Enter, _timeout); emulator.SendKey(true, TnKey.F2, _timeout); //Nomecliente = emulator.CurrentScreenXML.Fields[21].Text; Nomecliente = emulator.CurrentScreenXML.Fields[21].Text; TelaRegistro tl = new TelaRegistro(); tl.NomeC.Text = Nomecliente; //TelaRegistro reg = new TelaRegistro(); //reg.NomeC.Text = Nomecliente //DialogResult result6 = MessageBox.Show(tl.NomeC.Text, "Facilita", MessageBoxButtons.OK, MessageBoxIcon.Warning); //WriteTextToField(emulator.CurrentScreenXML.Fields[21].Text, ""); Console.Write(emulator.CurrentScreenXML.Dump()); //if (string.IsNullOrEmpty(menuOption)) // throw new Exception("Erro ao autorizar despesa, não foi possível encontrar a opção do menu"); //emulator.SetText(menuOption); //emulator.SendKey(true, TnKey.Enter, _timeout); //emulator.SendKey(true, TnKey.Enter, _timeout); //if (!emulator.WaitForText(27, 1, "ATENDIMENTO AO CLIENTE", _timeout)) // throw new Exception("Erro ao logar, não encontrada mensagem: ATENDIMENTO AO CLIENTE"); //emulator.WaitForHostSettle(200, _timeout); //emulator.SetText("16"); //emulator.SendKey(true, TnKey.Enter, _timeout); //WriteTextToField(emulator.CurrentScreenXML.Fields[18], emulator, "10"); //WriteTextToField(emulator.CurrentScreenXML.Fields[38], emulator, "i"); //WriteTextToField(emulator.CurrentScreenXML.Fields[46], emulator, "2"); //WriteTextToField(emulator.CurrentScreenXML.Fields[67], emulator, "1235"); //if (!emulator.SendKey(true, TnKey.Enter, _timeout)) // throw new Exception("Timeout ao entrar na tela de dispensa de juros"); //if (String.IsNullOrEmpty(emulator.CurrentScreenXML.Fields[45].Text)) //{ // Console.Clear(); // Console.Write(emulator.CurrentScreenXML.Dump()); // return contratosAprovados; //} //else //{ // //12 linhas, com 12 campos por linha // for (int i = 45; i < 45 + (12 * 12); i += 12) // { // //i = index contrato // //aprovacao = i-1 // //taxa = i+7 // if (!String.IsNullOrEmpty(emulator.CurrentScreenXML.Fields[i].Text)) // { // if (float.TryParse(emulator.CurrentScreenXML.Fields[i + 7].Text, out float taxa)) // { // if (taxa <= 100) // { // contratosAprovados.Add(emulator.CurrentScreenXML.Fields[i].Text); // WriteTextToField(emulator.CurrentScreenXML.Fields[i - 1], emulator, "a"); // } // else // { // // DESCOMENTAR PARA REPROVAR SE FOR MAIOR QUE 100% // //WriteTextToField(emulator.CurrentScreenXML.Fields[i - 1], emulator, "r"); // //contratosAprovados.Add("r"+emulator.CurrentScreenXML.Fields[i].Text); // } // } // } // } // Console.Clear(); // Console.Write(emulator.CurrentScreenXML.Dump()); // if (contratosAprovados.Any()) // { // emulator.SendKey(true, TnKey.F5, _timeout); // } //} return(contratosAprovados); }
public void Run() { TNEmulator emulator = new TNEmulator(); emulator.Audit = this; emulator.Debug = true; emulator.Config.TermType = "IBM-3278-2-E"; emulator.Config.FastScreenMode = true; emulator.Config.UseSSL = true; emulator.Connect("ssl3270.nccourts.org", 2023, null); var index = emulator.WaitForTextOnScreen2(2000, "COURT INFORMATION SYSTEM"); Console.WriteLine("Index = x=" + index.x + " y=" + index.y); return; // wait for the host to startup // if (!emulator.WaitForText(22, 0, "LIBRARY OF CONGRESS", 20000)) { Console.WriteLine("Connection failed - didn't find 'LIBRARY OF CONGRESS' on screen"); Console.WriteLine(emulator.CurrentScreenXML.Dump()); return; } // // // emulator.Refresh(true, 20000); bool done = false; do { string currentScreen = emulator.CurrentScreenXML.Dump(); Console.WriteLine(currentScreen); Console.WriteLine("Enter command : - refresh, text <text>, key <key>, quit"); Console.WriteLine("key is one of : Attn, Backspace,BackTab,CircumNot,Clear,CursorSelect,Delete,DeleteField, DeleteWord,Down,Dup,Enter,Erase,EraseEOF,EraseInput,FieldEnd, FieldMark,FieldExit,Home,Insert,Interrupt,Key,Left,Left2,Newline,NextWord, PAnn, PFnn, PreviousWord,Reset,Right,Right2,SysReq,Tab,Toggle,ToggleInsert,ToggleReverse,Up"); string command = Console.ReadLine(); if (command == "quit") { done = true; } else if (command == "refresh") { emulator.Refresh(false, 0); } else if (command.Length > 4 && command.Substring(0, 4) == "key ") { emulator.SendKeyFromText(true, command.Substring(4)); } else if (command.Length > 5 && command.Substring(0, 5) == "text ") { emulator.SendText(command.Substring(5)); } else { Console.WriteLine("unknown command '" + command + "'"); } }while (!done); emulator.Close(); }
public void Run() { using (TNEmulator emulator = new TNEmulator()) { emulator.Audit = this; emulator.Debug = false; emulator.Config.TermType = "IBM-3278-2-E"; emulator.Config.FastScreenMode = true; emulator.Config.AlwaysRefreshWhenWaiting = false; emulator.Connect("localhost", 3270, null); // wait for the host to startup // int index = emulator.WaitForTextOnScreen(1000, "Hercules", "Multi-User System for Interactive Computing / System Product"); if (index == 0) { Console.WriteLine("Mainframe emulator isn't running MUSIC/SP properly - check readme.md file in TestMainframe project for help"); return; } if (index == -1) { Console.WriteLine("Connection failed - didn't find 'Multi-User System for Interactive Computing / System Product' on screen"); Console.WriteLine(emulator.CurrentScreenXML.Dump()); return; } try { // // // //emulator.Refresh(true, 20000); emulator.SendKey(false, TnKey.Enter, 0); index = emulator.WaitForTextOnScreen(2000, "*MUSIC/SP ESA/390, sign on"); Console.WriteLine("Response : " + index); if (index != 0) { Console.WriteLine(emulator.CurrentScreenXML.Dump()); Console.WriteLine("ERROR : Failed to find login form failed"); return; } //emulator.SendKey(true, TnKey.Enter, 10000); //emulator.WaitForHostSettle(100, 10000); emulator.SetText("$000"); emulator.SendKey(false, TnKey.Tab, 0); emulator.SetText("music"); emulator.SendKey(false, TnKey.Enter, 0); index = emulator.WaitForTextOnScreen(10000, "Press ENTER to continue...", "Userid is already signed on"); Console.WriteLine("Response : " + index); if (index != 0) { Console.WriteLine(emulator.CurrentScreenXML.Dump()); Console.WriteLine("ERROR : Login failed"); return; } emulator.SendKey(false, TnKey.Enter, 0); index = emulator.WaitForTextOnScreen(10000, "Support Tasks: ADMIN Main Menu"); Console.WriteLine("Response : " + index); if (index != 0) { Console.WriteLine(emulator.CurrentScreenXML.Dump()); Console.WriteLine("ERROR : Failed to get to main menu"); return; } Console.WriteLine(emulator.CurrentScreenXML.Dump()); string timeText = emulator.GetText(65, 4, 15).Trim(); Console.WriteLine("Success! Scraped current mainframe time as : >>>" + timeText + "<<<"); return; } catch (Exception ex) { Console.WriteLine("EX: " + ex); Console.WriteLine(emulator.CurrentScreenXML.Dump()); } //emulator.Refresh(true, 20000); bool done = false; do { string currentScreen = emulator.CurrentScreenXML.Dump(); Console.WriteLine("DUMP SCREEN\n=============\n" + currentScreen + "\n=========\n"); Console.WriteLine("Enter command : - refresh, text <text>, key <key>, quit"); Console.WriteLine("key is one of : Attn, Backspace,BackTab,CircumNot,Clear,CursorSelect,Delete,DeleteField, DeleteWord,Down,Dup,Enter,Erase,EraseEOF,EraseInput,FieldEnd, FieldMark,FieldExit,Home,Insert,Interrupt,Key,Left,Left2,Newline,NextWord, PAnn, PFnn, PreviousWord,Reset,Right,Right2,SysReq,Tab,Toggle,ToggleInsert,ToggleReverse,Up"); string command = Console.ReadLine(); if (command == "quit") { done = true; } else if (command == "refresh") { emulator.Refresh(false, 0); } else if (command.Length > 4 && command.Substring(0, 4) == "key ") { emulator.SendKeyFromText(true, command.Substring(4)); } else if (command.Length > 5 && command.Substring(0, 5) == "text ") { emulator.SendText(command.Substring(5)); } else { Console.WriteLine("unknown command '" + command + "'"); } }while (!done); emulator.Close(); } }