Autor |
Beitrag |
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Di 09.10.18 11:19
Hallo nochmal,
ich hab noch Schwierigkeiten mit dem Programmablauf der Maschinen-Schnittstelle.
Beim ersten Mal sollen die beiden Funktionen Z_SDMACH__REQUEST4_NIE_ALU1() und FehlerRueckmeldung_SAP() aufgerufen werden. Die erste Funktion stellt die Verbindung zu SAP her und stellt die Parameter für die Maschine zur Verfügung, sodass die Maschine weiß, was zu tun ist. Falls die Länge des Werkstücks zu klein ist, wird ein Fehler gesetzt. Dieser soll dann an SAP zurückgemeldet werden.
Anschließend ruft der Werker die WindowsFormsApp1 auf mit den verschiedenen Maschinenparametern und der Sprache zum Einstellen (voreingestellt Tschechisch).
Nachdem er die Maschine gestartet hat und auf den Button zur Ermittlung der Anzahl an Bearbeitungsschritten (Anzahl Fräsen/Bohren/Sägen) gedrückt hat, und wenn die Maschine fertig ist, soll wieder die ConsolenApp aufgerufen werden. Diesmal sollen die Funktionen Maschine_Arbeitet(), Maschine_Stoppt() sowie Anzahl_Saeg_Bohr_fraes und Statusmeldung_SAP mit Maschine_Fertig aufgerufen werden.
Wenn Maschine stoppt, wird nur die Funktion Maschine_Stoppt() aufgerufen.
Meine Frage ist nun, wie ich die verschiedenen Funktionsaufrufe hin bekomme, ohne dass der Werker das jedes Mal im Code auskommentieren/einkommentieren muss?
Hier ist der Code:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| public static void Main(string[] args) { Console.WriteLine("\nHier ist StepByStepClient"); SAP.Middleware.Connector.Examples.StepByStepClient.Z_SDMACH__REQUEST4_NIE_ALU1(); SAP.Middleware.Connector.Examples.StepByStepClient.Maschine_Arbeitet(); SAP.Middleware.Connector.Examples.StepByStepClient.Maschine_Stoppt(); SAP.Middleware.Connector.Examples.StepByStepClient.Anzahl_Saeg_Bohr_Fraes(); SAP.Middleware.Connector.Examples.StepByStepClient.FehlerRueckmeldung_SAP(); Console.WriteLine("\nPress any key to exit."); Console.ReadKey(); } |
Moderiert von Th69: C#-Tags hinzugefügt
Moderiert von Th69: Topic aus C# - Die Sprache verschoben am Di 09.10.2018 um 11:49
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 09.10.18 11:58
Soll denn jedesmal wieder eine neue Instanz der Konsolen-App aufgerufen werden (oder eine laufende wieder aktiviert werden)?
Bei ersterem würde es sich anbieten, mittels Kommandozeilenparametern (also über args) die verschiedenen Programmabläufe umzusetzen (z.B. CONNECT, WORK, ...).
Aber warum gibt es überhaupt 2 verschiedene Apps?
PS: Bitte demnächst selber hier im Forum die Code-Tags (Leiste "Bereiche") benutzen, danke.
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Di 09.10.18 12:05
Ja, es soll wieder eine neue Instanz der Konsolen-App aufgerufen werden.
Kannst du ein Beispiel zeigen, wie die Umsetzung über Kommandozeilen-Parameter, args, erfolgen kann?
Vielen Dank.
Es gibt 2 verschiedene Apps um die Werkstückparameter von SAP aufzurufen und die WindowsFormsApp soll zur Übersicht und zur Interaktion des Werkers mit der Oberfläche dienen.
Vielleicht kann ich die beiden Apps auch noch vereinfachen in eine App, weiß aber noch nicht wie.
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 09.10.18 12:34
So etwas solltest du wohl selber aus dem Internet rausfinden können - aber hier zwei Links: Befehlszeilenargumente und Main Args Example.
Und beim Aufrufen der Konsolen-App dann den passenden Parameter mitgeben, s. z.B. Process.Start Examples (Stichwort: "Arguments").
|
|
lapadula
Beiträge: 180
Erhaltene Danke: 10
|
Verfasst: Di 09.10.18 12:52
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 09.10.18 13:22
Aber nicht mit hart-kodierten Pfaden aufrufen!
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Di 09.10.18 13:39
Die Eingabe der ersten Zeile funktioniert bei mir nicht.
Es werden folgende Fehler angezeigt:
Zitat: | Typ erwartet
Das Tupel muss mindestens 2 Argumente enthalten
)erwartet
ungültiges Token "Pfad" in Klassen-, Struktur- oder Schnittstellenmemberdeklaration
|
Moderiert von Th69: Quote-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
|
|
lapadula
Beiträge: 180
Erhaltene Danke: 10
|
Verfasst: Di 09.10.18 14:05
Dir fehlt das @-Zeichen vor deinem Pfad, siehe mein Beispiel.
Alternativ kannst du doppelte Back-Slash-Zeichen benutzen \\
Zuletzt bearbeitet von lapadula am Di 09.10.18 14:20, insgesamt 1-mal bearbeitet
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 09.10.18 14:07
@Isabelle: Vergleiche noch mal genau den Code mit dem geposteten Code (da ist nichts von einer eigenen class zu sehen).
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Di 09.10.18 14:37
Wo kommt denn der Befehl hin?
Innerhalb des namespace oder oberhalb davon?
Ich habe ihn jetzt oberhalb vom namespace davon platziert, aber es erscheint noch die Fehlermeldung, dass ) fehlt.
"Start" wird rot unterstrichen dargestellt und es erscheint folgende Fehlermeldung:
Zitat: | Member, wie zum Beispiel Felder oder Methoden, können nicht direkt in einem Namespace enthalten sein. |
Moderiert von Th69: Quote-Tags hinzugefügt
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 09.10.18 14:49
Sorry, aber das sind nun wirklich einfachste Grundlagen.
Du willst doch die Konsolen-App bei einem Button-Klick (innerhalb der WinForms-Anwendung) aufrufen? Also wohin gehört wohl dann dieser Code?
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Di 09.10.18 15:39
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 16:13
Hallo,
nun habe ich folgendes Problem:
Ich habe eine weitere KonsolenApp angelegt, welche durch einen weiteren ButtonClick in der WindowsForms geöffnet werden soll.
Im neuen Projekt wird jetzt aber Examples in der Direktive SAP.Middleware.Connector.Examples nicht gefunden.
Ich verstehe das nicht.
Bitte um Hilfe.
Moderiert von Th69: C#-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 10.10.18 16:26
Wie hast du denn SAP.Middleware.Connector.Examples bei deiner ersten Konsolen-App eingebunden (direkt die "StepByStepClient.cs"-Datei oder aber die Assembly zum Projekt hinzugefügt)?
Wenn es aber dein eigener Code ist (wie in deinem Code aus deinem Eingangsbeitrag vermutet), dann mußt du selbstverständlich den dort verwendeten Namensbereich (namespace) benutzen.
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 16:39
Ja, das versuche ich doch.
Aber wenn ich am Anfang der Datei using SAP.Middleware.Connector.Examples eingebe, erscheint auch ein Fehler.
Moderiert von Th69: C#-Tags hinzugefügt
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 16:41
Vielleicht muss ich auch einen Assembly-Verweis machen?
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 16:46
Wenn ja, wie mache ich einen Assembly-Verweis?
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 17:06
Ich hab das Problem jetzt selbst gelöst.
Ich war in der falschen Datei. Bin jetzt in die main-Methode von StepByStepClient.cs
|
|
IsabelleZimmermann
Beiträge: 54
|
Verfasst: Mi 10.10.18 17:10
Jetzt hab ich ein neues Problem:
Zitat: | Beschreibung
Fehler CS5001 Das Programm enthält keine als Einstiegspunkt geeignete statische Main-Methode. |
Moderiert von Th69: Quote-Tags hinzugefügt
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 10.10.18 17:16
Bitte befasse dich erst mit den Grundlagen, d.h. suche selbständig im Internet nach den Fehlern und nur wenn du da nicht weiterkommst, dann melde dich hier.
Ich empfehle dir daher das OpenBook Visual C# 2012 (hierfür also Kapitel "17 Projektmanagement und Visual Studio 2012") - auch wenn 2012 schon ein wenig her ist, aber die Grundlagen haben sich nicht geändert.
Daher sperre ich jetzt dieses Thema für 24h.
|
|