1 | using System;
|
2 | using System.Collections.Generic;
|
3 | using System.ComponentModel;
|
4 | using System.Data;
|
5 | using System.Linq;
|
6 | using System.Text;
|
7 | using System.IO.Ports;
|
8 |
|
9 | namespace ConsoleApplication1
|
10 | {
|
11 | public delegate void MenuFnct();
|
12 | public struct MenuEntry
|
13 | {
|
14 | public String Text;
|
15 | public MenuFnct Function;
|
16 | }
|
17 | class Program
|
18 | {
|
19 | static void Main(string[] args)
|
20 | {
|
21 | //RS232 Initialisierung
|
22 | SerialPort serialport = new SerialPort();
|
23 | serialport.BaudRate = 19200;
|
24 | serialport.Parity = Parity.None;
|
25 | serialport.DataBits = 8;
|
26 | serialport.StopBits = StopBits.One;
|
27 | serialport.RtsEnable = false;
|
28 | serialport.ReadTimeout = 1000;
|
29 | serialport.WriteTimeout = 1000;
|
30 | serialport.PortName = "COM4";
|
31 | serialport.Open();
|
32 | //Ende RS232
|
33 |
|
34 | int len = 0;
|
35 | // Variable vom Typ des Delegaten
|
36 | MenuEntry[] MainMenu = new MenuEntry[4];
|
37 | MainMenu[0].Text = "Datei";
|
38 | MainMenu[1].Text = "Bearbeiten";
|
39 | MainMenu[2].Text = "Ansicht";
|
40 | MainMenu[3].Text = "Beenden";
|
41 | MainMenu[0].Function = Menu0.DateiMenu;
|
42 | MainMenu[1].Function = Menu0.BearbeitenMenu;
|
43 | MainMenu[2].Function = Menu0.AnsichtMenu;
|
44 | MainMenu[3].Function = Menu0.Ende;
|
45 | for (int i = 0; i < MainMenu.Length; i++)
|
46 | len += System.Runtime.InteropServices.Marshal.SizeOf(MainMenu[i]);
|
47 | len /= System.Runtime.InteropServices.Marshal.SizeOf(typeof(MenuEntry));
|
48 | HandleMenu("Hauptmenue", ref MainMenu, len);
|
49 | }
|
50 |
|
51 | static void HandleMenu(String MenuTitle, ref MenuEntry[] Menu, int MenuSize)
|
52 | {
|
53 | int i;
|
54 | int Auswahl=0;
|
55 | MenuFnct sel;
|
56 |
|
57 | do
|
58 | {
|
59 |
|
60 | // Eingabe der Operation
|
61 |
|
62 | Console.Clear();
|
63 | Console.WriteLine(MenuTitle);
|
64 | Console.WriteLine("Bitte waehlen:");
|
65 | for (i = 0; i < MenuSize; i++)
|
66 | {
|
67 | Console.WriteLine(i+1 + " " + Menu[i].Text);
|
68 | }
|
69 | Auswahl = Convert.ToInt16(Console.ReadLine().ToUpper());
|
70 | // In Abhängigkeit von der Wahl des Anwenders wird die Variable 'sel'
|
71 | // mit einem Zeiger auf die auszuführende Methode initialisiert
|
72 | if (Auswahl < 1 || Auswahl > MenuSize)
|
73 | {
|
74 | do
|
75 | {
|
76 | Console.WriteLine("Ungültige Eingabe");
|
77 | Console.WriteLine("Bitte waehlen:");
|
78 | Auswahl = Convert.ToInt16(Console.ReadLine().ToUpper());
|
79 | } while (Auswahl < 1 || Auswahl > MenuSize);
|
80 | }
|
81 | else
|
82 | {
|
83 | Auswahl--;
|
84 | Console.Clear();
|
85 | sel = new MenuFnct(Menu[Auswahl].Function);
|
86 |
|
87 | sel();
|
88 | Console.WriteLine("----------------------------------");
|
89 | Console.WriteLine("Zum Beenden F12 drücken, Weiter: beliebige Taste druecken");
|
90 | }
|
91 | } while (Console.ReadKey(true).Key != ConsoleKey.F12);
|
92 |
|
93 | }
|
94 | class Menu0
|
95 | {
|
96 | public static void DateiMenu()
|
97 | {
|
98 | int len = 0;
|
99 | // Variable vom Typ des Delegaten
|
100 | MenuEntry[] DateiMenu = new MenuEntry[4];
|
101 | DateiMenu[0].Text = "Neu";
|
102 | DateiMenu[1].Text = "Oeffnen";
|
103 | DateiMenu[2].Text = "Speichern";
|
104 | DateiMenu[3].Text = "Zurueck";
|
105 | DateiMenu[0].Function = Menu1.New;
|
106 | DateiMenu[1].Function = Menu1.Open;
|
107 | DateiMenu[2].Function = Menu1.Save;
|
108 | DateiMenu[3].Function = Menu1.Back; //"0" geht hier nicht
|
109 | for (int i = 0; i < DateiMenu.Length; i++)
|
110 | len += System.Runtime.InteropServices.Marshal.SizeOf(DateiMenu[i]);
|
111 | len /= System.Runtime.InteropServices.Marshal.SizeOf(typeof(MenuEntry));
|
112 | HandleMenu("Hauptmenue", ref DateiMenu, len);
|
113 | }
|
114 | public static void BearbeitenMenu()
|
115 | {
|
116 | int len = 0;
|
117 | // Variable vom Typ des Delegaten
|
118 | MenuEntry[] BearbeitenMenu = new MenuEntry[4];
|
119 | BearbeitenMenu[0].Text = "Ausschneiden";
|
120 | BearbeitenMenu[1].Text = "Kopieren";
|
121 | BearbeitenMenu[2].Text = "Einsetzen";
|
122 | BearbeitenMenu[3].Text = "Zurueck";
|
123 | BearbeitenMenu[0].Function = Menu2.Cut;
|
124 | BearbeitenMenu[1].Function = Menu2.Copy;
|
125 | BearbeitenMenu[2].Function = Menu2.Paste;
|
126 | BearbeitenMenu[3].Function = Menu2.Back; //"0" geht hier nicht
|
127 | for (int i = 0; i < BearbeitenMenu.Length; i++)
|
128 | len += System.Runtime.InteropServices.Marshal.SizeOf(BearbeitenMenu[i]);
|
129 | len /= System.Runtime.InteropServices.Marshal.SizeOf(typeof(MenuEntry));
|
130 | HandleMenu("Hauptmenue", ref BearbeitenMenu, len);
|
131 | }
|
132 | public static void AnsichtMenu()
|
133 | {
|
134 |
|
135 | }
|
136 | public static void Ende()
|
137 | {
|
138 |
|
139 | }
|
140 | }
|
141 | class Menu1
|
142 | {
|
143 | public static void New()
|
144 | {
|
145 | Console.WriteLine("Funktion 'Neu' ausgewaehlt");
|
146 | }
|
147 | public static void Open()
|
148 | {
|
149 | Console.WriteLine("Funktion 'Oeffnen' ausgewaehlt");
|
150 | }
|
151 | public static void Save()
|
152 | {
|
153 | Console.WriteLine("Funktion 'Speichern' ausgewaehlt");
|
154 | }
|
155 | public static void Back()
|
156 | {
|
157 | Console.WriteLine("Funktion 'Zurueck' ausgewaehlt");
|
158 |
|
159 | }
|
160 | }
|
161 |
|
162 | class Menu2
|
163 | {
|
164 | public static void Cut()
|
165 | {
|
166 | Console.WriteLine("Funktion 'Ausschneiden' ausgewaehlt");
|
167 | }
|
168 | public static void Copy()
|
169 | {
|
170 | Console.WriteLine("Funktion 'Kopieren' ausgewaehlt");
|
171 | }
|
172 | public static void Paste()
|
173 | {
|
174 | Console.WriteLine("Funktion 'Einfuegen' ausgewaehlt");
|
175 | }
|
176 | public static void Back()
|
177 | {
|
178 | Console.WriteLine("Funktion 'Zurueck' ausgewaehlt");
|
179 |
|
180 | }
|
181 | }
|
182 |
|
183 | }
|
184 | }
|