Mikel_60 Posted November 16, 2014 Posted November 16, 2014 Ein Hallo in die Runde,nachdem ich seit ein paar Wochen das 3D-ModellbahnStudio getestet habe und alle möglichen Ratschläge und Hinweise im Forum gelesen habe, möchte ich mich Heute endlich mal zu Wort melden ;).Im Moment fehlt mir einfach der Platz für eine Anlage in Orginal, so das mir die Version auf dem PC sehr entgegen kommt. Mich interessieren vor allem die automatischen Abläufe einer Modelleisenbahn. Da ich mich mit C# besser auskenne als mit VB, stelle ich mal eine Beta Vorlage eines C# MBS-Client hier vor.Das 'Beta' verschwindet, wenn ich selber damit zufrieden bin ^^. Michael PS: Bin aus dem Beta-Stadium raus. Aktueller Download ist jetzt Version 1.0.###############################################################################################http://www.3d-modellbahn.de/forum/thema/6520 (MBSControl) rein.C# Client (Beta) hat seit Jan. 2015 einen Nachfolger, schaut bitte bei ###############################################################################################C_mbs_client_1.0.zip
EASY Posted November 16, 2014 Posted November 16, 2014 Hallo Mikel_60,erst einmal willkommen hier im Forum.Obwohl ich in C# nur wenig Ahnung habe, freut es mich, daß es durch Deine Arbeit nun auch die Möglichkeit geben wird in C# mit der Schnittstelle zu arbeiten.Ein kleiner Fehler ist mir in "MBS_Enums.cs" aufgefallen:Zitat// Die Liste der Events, Kommandos, Parameter und die Rückgabewerte findet man unter: // http://www.3d-modellbahn.de/wiki/3415#Sec1_1_1 // Strg+Rechtsklick zum Öffnen des Links... es ist Strg+Linksklick zum Öffnen...Daß Du die Ereignisse und Kommandos über Enums "verwaltest", halte ich für eine gute Idee. Ich hatte es für den VB-Client auch mal angedacht, bin aber wieder davon abgekommen. Nachdem ich es bei Dir gesehen habe, werde ich noch einmal in mich gehen. Vielleicht wäre es sinnvoll, wenn wir uns auf gemeinsame Bezeichnungen und Sprache (Ereignisse und Kommandos in der selben Sprache) einigen... ... eventuell hat Neo noch den einen oder anderen Vorschlag...Noch eine Anmerkung: Ich setze die Form1 gene "TopMost", damit sie nicht immer "verschwindet", wenn man mal etwas im MBS anklickt... ist aber ansichtssache...Wie gesagt ich habe von C# wenig Ahnung, aber wenn Du "logistische" Unterstützung brauchst... gerne!GrußEASY
Mikel_60 Posted November 16, 2014 Author Posted November 16, 2014 Danke EASY,mit Rechts und Links lässt sich schnell ändern, war ja auch schon zu vorgerückter Stunde Gestern ;). Die Vereinheitlichung der Enums wäre sinnvoll. Ich habe erstmal einfach so angefangen, wie ich es aus meiner Sicht für sinnvoll gehalten hatte. Die englischen Begriffe kommen bei mir automatisch, liegt an meiner Arbeit. Wenn du im VB-Client die Enums einfügst, können wir uns ja nochmal über die Syntax einigen. Das mit dem TopMost ist eine gute Idee, mache ich bei meinen Visualisierungen für Machinensteuerungen eigentlich auch so.Ich hab schon Version 0.91 in Arbeit, eine Exception beim Disconnect wurde nicht abgefangen. Gruß Michael
EASY Posted November 16, 2014 Posted November 16, 2014 Mallo Michael,ZitatDie englischen Begriffe kommen bei mir automatisch...... dann werde ich mich erst einmal etwas an dem orientieren, was Dir so einfällt (ich tue mich da manchmal etwas schwerer...) ... wobei ich mir nicht ganz vorstellen kann, daß "Zug betritt ein Gleis" in einer Maschienensteuerung vorkommt...GrußEASY
Neo Posted November 16, 2014 Posted November 16, 2014 Hallo Michael,finde ich echt gut dass du einen C#-Client anbietest. Sagt Bescheid wenn er aus deiner Sicht Version 1.0 erreicht hat, dann verlinke ich ihn direkt im Forum/Wiki.Viele Grüße,Neo
Mikel_60 Posted November 16, 2014 Author Posted November 16, 2014 Den Clienten werd ich noch weiter testen und etwas ausbauen. Hier mal eine Version um den Baukran zu animieren. Eigentlich kann man damit alles um seine Z-Achse rotieren lassen, Hauptsache es heist 'Baukran_001' ;). Im Moment ist der Name noch nicht eingebbar, kommt aber bestimmt noch.Minimum und Maximun sind die beiden Winkelpositionen zwischen denen der Kran hin und her schwenkt. (-180 bis 0 und 0 bis 180grd einstellbar) Am jeweiligen Ende macht er eine Pause von 5 sec.Mh, ok die Taktzeit ist nicht x1s sondern aktuell x100ms, die Schrittweite beträgt 0,05Grad, sonst ruckelt der Kran zu sehr.Meine Großbaustelle, fürchte die wird nie fertig.Hoffe es kann jemand gebrauchen und hat noch ein paar Anregungen.Ich hätte da schon was in Vorbereitung, Ein- und Ausschalten von der EV aus. Gruß MichaMbs_baukran.zip
Mikel_60 Posted November 16, 2014 Author Posted November 16, 2014 Hallo Neo,ich werd noch ein paar Versuche machen mit kleinen Projekten. Bin Heute bei dem Baukran auf ein paar Sachen gestoßen, die ich gerne noch ordentlicher einbauen möchte in den Client. Gruß Michael
Mikel_60 Posted November 19, 2014 Author Posted November 19, 2014 Hallo,hab den Client jetzt auf Version 1.0 hochgestuft ;), werd wohl sonst nie fertig damit. Der Client steht zur allgemeinen Verfügung, falls ihr ihn in eigene C# Projekte einbinden möchtet. ich habe ihn so angepasst, das er in meine geplanten Projekte am Besten reinpasst. Wer noch Wünsche oder Fragen dazu hat, darf sich gerne bei mir melden.@Neo, darf ich mir noch ein Event wünschen, das das MBS wirft sobald er beendet wird, bzw. das Projekt geschlossen wird. Event 21 würde sich dazu prima anbieten. 20: Neues Projekt wurde geladen21: Projekt wurde geschlossen LG MichaelC_mbs_client_1.0.zip
Neo Posted November 20, 2014 Posted November 20, 2014 Hallo Michael,ich habe deinen Client mit in die Liste der vorhandenen Vorlagen aufgenommen. Eine kleine Bitte noch: Wenn du deinen Client aktualisierst, dann bearbeite am besten deinen ersten Beitrag und ersetze die Datei direkt dort. Ansonsten müssten die Leute immer erst durch das gesamte Thema durchscrollen um die aktuellste Version zu finden.Das Ereignis 21 werde ich für das nächste Update vorsehen.Viele Grüße,Neo
Mikel_60 Posted November 20, 2014 Author Posted November 20, 2014 Danke Neo,und aktualisiere auch gleich den ersten Beitrag.Viele GrüßeMicha
EASY Posted November 20, 2014 Posted November 20, 2014 Hallo Micha,... da ich neugierig bin und Du geschrieben hast:Zitatich habe ihn so angepasst, das er in meine geplanten Projekte am Besten reinpasst... würde mich natürlich interessieren wo(-rin) Deine "spezielle" Anpassung (be-) steht.Einen kleinen Verbesserungsvorschlag in den Enums hätte ich noch...Zitat GroupTwoObjects = 140, // Verknüpft zwei Objekte (A folgt B) UngroupObject = 141, // Hebt die Verknüpfung eines Objektes auf.... da eine Verknüpfung eine gewisse Funktion hat (A folgt B) sollte sie sich namentlich von einer Gruppe abheben. Mein Vorschlag wäre:LinkTwoObjects = 140 und UnlinkObjekt = 141In der "alten" Schnittstelle (EP13), hatte Neo einen "Befehssatz" vorgegeben... Ich hänge ihn einfach mal mit an... nur als Anregung für Enums (wobei ich Deine Namensgebungen teilweise für besser verständlich halte)... ist aber (wie so vieles) persönliche Ansichtssache...GrußEASYP.S. @alle: .... um Missverständnissen vorzubeugen... Der Befehlssatz in der PDF hat nichts zu tun mit der MBS-Schnittstelle (nur die Funktionen sind teilweise die gleichen...)Ep13-schnittstelle-befehlssatz-2013-04-11.zip
Mikel_60 Posted November 21, 2014 Author Posted November 21, 2014 Hallo EASY,danke für den ep13-schnittstellen-befehlssatz, ich werde meine Übersetzungen nochmal anpassen, falls sich die Funktionen dadurch besser selbst erklären.Jetzt zu deiner Frage mit der Anpassung. Der Client kann als DLL in das Programm eingebunden werden, ähnlich dem EBPControl() aus der ep13-Schnittstelle. In meinen Projekten binde ich den Client dann als externe Abhängigkeit, die zum Erstellen der Software erforderlich ist mit ein. Dazu wird keine Kopie mit eingecheckt sondern Verweise auf Repositorities. (siehe: http://svnbook.red-bean.com/de/1.6/svn-book.html#svn.advanced.externals )Damit kann ich bei Änderungen am Client, diese alle meinen Projekten zur Verfügung stellen, ohne mit Kopieren beginnen zu müssen. Auch Änderungen an der Übersetzung z.Bsp. wären dann in allen Projekten gleich aktualisiert.Die Kommandos kann man später dann auch über die Schnittstelle des Client aufrufen, ohne den Kommandostring selber zusammen bauen zu müssen. Siehe auch hier die EP13-Schnittstelle. Ich werde nicht alle Kommandos sofort einbinden, sondern nach und nach.War das ausreichend als Antwort erstmal?Viele Grüße Michael
EASY Posted November 21, 2014 Posted November 21, 2014 Hallo Michael,Danke ... erstmal ausreichend... als "Hobbyprogramierer" brauchte ich etwas länger, bis ich durch "Analyse" Deiner Version 1.0 zu der Vermutung gelang bin, daß der Client auf eine DLL hinausläuft. Daß Du meine Vermutung bestätigst, freut mich natürlich... Da ich die Idee der Aktualisierung auf diese Weise sehr interessant finde, bin ich etwas "angefressen" und auch wenn ich noch nicht weiß, wie man so etwas in VB umsetzen könnte, sehe ich es mal als kleine Herausforderung für lange Winterabende und (wenn Du nichts dagegen hast), werde ich bei Dir noch etwas "abspicken"...Zu den Enums habe ich mir noch ein Paar Gedanken gemacht.In meiner "Logik" schreibe ich nach "Get" bzw. "Set" nicht das was gemacht wird, sondern mit wem was gemacht wird...Beispiel mit Objekten:Statt...ListNames = 100, // Liefert eine Liste der Namen aller Objekte auf der Anlage zurück.GetTypOfObject = 101, // Gibt den Typ eines Objektes zurück.GetPosOfObject = 102, // Gibt die 3D-Position eines Objektes zurück.SetPosOfObject = 103, // Setzt die 3D-Position eines Objektes.GetAngleOfObject = 104, // Gibt die Rotation eines Objektes um die 3 Achsen zurück.SetAngleOfObject = 105, // Setzt die Rotation eines Objektes.GetScaleOfObject = 106, // Gibt die Skalierung eines Objektes zuzrück.SetScaleOfObject = 107, // Setzt die Skalierung eines Objektes.GetSizeOfObject = 108, // Gibt die Größe eines Objektes zurück.... sieht es bei mir so aus... (halte ich für etwas übersichtlicher wenn beim Programmieren "Eingabevorschläge" gemacht werden...) GetObjectNames = 100 ' Liefert eine Liste der Namen aller Objekte auf der Anlage zurück. GetObjectTyp = 101 ' Gibt den Typ eines Objektes zurück. GetObjectPos = 102 ' Gibt die 3D-Position eines Objektes zurück. SetObjectPos = 103 ' Setzt die 3D-Position eines Objektes. GetObjectAngel = 104 ' Gibt die Rotation eines Objektes um die 3 Achsen zurück. SetObjectAngel = 105 ' Setzt die Rotation eines Objektes. GetObjectScale = 106 ' Gibt die Skalierung eines Objektes zuzrück. SetObjectScale = 107 ' Setzt die Skalierung eines Objektes. GetObjectSize = 108 ' Gibt die Größe eines Objektes zurück.... ich hänge mal meine derzeitige Liste als einfache Textdatei mit an.P.S. Bei mir heißen die Enums "Commands" und "Events", da mir VB den Namen "Event" als "ungültigen Bezeichner" verweigert (gibt es in VB schon...)... Der Link geht überigens nicht... unvollständig?GrußEASYEnums.zip
Mikel_60 Posted November 22, 2014 Author Posted November 22, 2014 Hallo Easy,erstmal auf die Schnelle, mit dem Link war mein Fehler, zeigt auf eine Seite unseres internen Wikis auf Arbeit. Ich korrigiere den Link Oben auf eine deutsche Beschreibung zu SVN.Externals (Dependencies).http://svnbook.red-bean.com/de/1.6/svn-book.html#svn.advanced.externalsDeine Notation für die Enums gefällt mir, ich werde sie bei mir auch so übernehmen. Gruß Micha
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now