Visual C# — aplikacje konsolowe i DOS

Visual C# — aplikacje konsolowe i DOS
Razem głosów: 22 co stanowi: 94.55% całości.

imgres

Często tworząc program w C# staramy się stworzyć ułatwiacz który stanowi niejako nakładkę graficzna na istniejący program konsolowy , albo po prostu chcemy przechwycić dane z konsoli wysyłane przez oprogramowanie obsługujące dany sprzęt i tu postaram się pokazać jak sobie radzić z tym zagadnieniem.

Nasze zadanie jest w sumie proste i składa się z dwóch części :

  1. Musimy uruchomić program  konsolowy – bez uruchamiania konsoli
  2. Musimy przechwycić dane wyjściowe z programu i wyświetlić je w okienku ponadto oprócz  wyświetlania danych wyjściowych musimy zapewnić obsługę błędów

Czyli jak widać nic wielkiego zatem tworzymy naszą solucję i na form1 tworzymy obiekty np tak:

Przechwytywanie111

Jak widać mamy tu pole tekstowe zawierające ścieżkę i nazwę programu  który zostanie uruchomiony po kliknięciu uruchom a dane wyjściowe zostaną przekierowane do właściwych okienek poniżej. Zanim jednak przystąpię do opisu naszego programu, czas przedstawić naszą ofiarę czyli program konsolowy :)  W celu ułatwienia sobie zadania najprościej będzie nam stworzyć taki program który będzie zawierał wszystkie możliwości (oczywiście inne programy konsolowe jak  avrdude, czy  stlink_cli  zachowują się w bardzo podobny sposób co możecie zobaczyć w programie SunDUDEK ), które nam są potrzebne do tej prezentacji. Tak więc uruchamiamy notatnik lub Notepad++  byle nie WORD i tworzymy program w abstrakcyjny dla większości wychowanych na Windowsie sposób.

Przechwytywanie

Nasz „program” składa się z linijek:

Nie będę teraz omawiał starsi wiedzą o co chodzi z tworzeniem plików wsadowych:) Nasz plik zapisujemy zatem pod nazwą  test.bat  i umieszczamy w katalogu głównym dysku C: oraz sprawdzamy czy działa. W tym celu uruchamiamy CMD i przechodzimy do folderu głównego  komendą cd..  : potem wpisujemy test i jak wszystko jest ok zobaczymy taki wynik:

Przechwytywanie

teraz możemy przystąpić do naszego programu :)

Jak widzicie mamy w naszym programie test  i dane wyjściowe i błąd który musimy obsłużyć więc do roboty.


Na naszym formularzu klikamy na button i tworzymy kod ciała zdarzenia on_click:

Powyższy kod spowoduje , że po wpisaniu nazwy programu do pola tekstowego  i kliknięciu w przycisk uruchom zostanie wskazany program uruchomiony ,a jego dane obsłużone :)  Czyli zostanie utworzony ProcessStartInfo , który będzie przechowywał informacje o procesie, który został wywołany. Następnie utworzony będzie Process obiektu i ustawiony stInf który będzie zwracał własności metody start.

Następnym krokiem jest utworzenie StreamReadera obiektu w celu uzyskania dostępu do standardowych strumieni wyjściowych oraz błędów, przeczytania ich i wyświetlenia zawartości we właściwym miejscu. Po czym zamkniemy zamykamy strumienie i proces CLI :)  Prawda że proste ??

Jeśli chcecie wskazać jakiś program do uruchomienia możecie to zrobić w zdarzeniu Form1_Load() w taki sposób np:

Oczywiście ja tutaj przekierowałem sobie ścieżkę do textBoxa i ją jak widzicie wyświetlam w nim poprzez metodę .text jawnie , ale możemy całkowicie ukryć jaki program i skąd wywołujemy sterując tylko jego właściwościami w strumieniach  Wyjścia i Błędu.   Możemy też dane parsować  i  wyświetlać właściwe informacje w dowolnych miejscach naszej aplikacji…

Wynik działania programu:

Przechwytywanie

 

… życzę dobrej zabawy :)

 

 

 

 

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay

Jedna myśl nt. „Visual C# — aplikacje konsolowe i DOS

  1. Bardzo przydatna rzecz… przychodzi od razu szatański pomysł na MCU->UART->USB->COM->putConsole , ConsoleOut->COM->USB->UART->MCU ;)

Możliwość komentowania jest wyłączona.