Hallo zusammen!
Ich habe ein Bus-System für eine Modelleisenbahn-Anlage eines bekannten
entwickelt. Diese bekommt ihre Befehle über die serielle Schnittstelle
eines PC. Unter Zeitdruck vor einer Ausstellung habe ich die PC-Software
mit den mir verfügbaren und mir gewohnten Mitteln geschrieben: In PHP
und MySQL.
Es lief reibungslos ohne Zwischenfälle, aber es ist einfach nicht das
Wahre.
Die grundsätzlichen Funktionen waren die Darstellung eines Gleisbildes
und den dazugehörigen Buttons zur Steuerung, sowie eine Datenbank mit
dem aktuellen Status jeder Weiche etc.
Womit programmiert man soetwas "richtig"?
Ich kann nicht viel mehr als C und PHP (inkl MySQL), bin aber gewillt,
mich in dazu benötigte objektorientierte Sprachen (am besten basierend
auf C) einzuarbeiten.
MfG,
Horst
So schwer mir das auch fällt, aber bei den Stichworten "Windows" und
"grafische Oberfläche programmieren" führt meiner Meinung nach
mitlerweile kein Weg mehr an C# vorbei.
Lass dich nicht vom Namen täuschen: C# hat mehr mit Java zu tun als mit
C. Aber so wild sind die Unterschiede auch wieder nicht. An einem
vernünftigem Buch, welches dich durch C# und vor allen Dingen der .Net
Klassenbibliothek leitet führt sowieso kein Weg vorbei.
C# ist in der Hinsicht immer noch besser, als das was Microsoft als
'managed C++' bezeichnet - ein Krüppel der weder C++ noch sonst
irgendeine andere Sprache ist. Und C++ mit der MFC willst du
wahrscheinlich nicht mehr antun.
zu C++ gibt es dann noch einige andere Frameworks, die absolut brauchbar
sind. Zb Qt. Aufwand und lernen muss man aber da wie dort und C# (bzw.
.Net) hat dann halt den Vorteil, dass der ganze graphische Unterbau dort
sauber eingebaut ist und vom Hersteller des graphischen Systems gewartet
wird.
also das ist jetzt "kurios"
also gerade in DIESEM Zusammenhang ist doch eine WEB-basierte Geschichte
ideal
Steuerung der Modelleisenbahn mit z.b. IPad
anzeige von Status der weichen/Ampeln auf einem andere PC (z.b großen
display) für die zuschauer
speichern des ganzen in (MySQL) Datenbank: als LOG (um bei Kollisionen
die Ursache feststellen zu können)
ich kann im ausgangsposting auch nirgends etwas von WINDOWS lesen...
Robert L. schrieb:> ich kann im ausgangsposting auch nirgends etwas von WINDOWS lesen...
Oops, du hast recht.
Da hab ich was gelesen, was gar nicht dort steht.
Karl Heinz Buchegger schrieb:> Lass dich nicht vom Namen täuschen: C# hat mehr mit Java zu tun als mit> C. Aber so wild sind die Unterschiede auch wieder nicht. An einem> vernünftigem Buch, welches dich durch C# und vor allen Dingen der .Net> Klassenbibliothek leitet führt sowieso kein Weg vorbei.
Da ich in der Richtung leider (gottseidank?) noch ziemlich jungfräulich
bin.
Was gibts denn für Empfehlungen hier für .net oder c# Literatur.
Mit Schwerpunkt auf "strukturiert" und "fundiert", nicht Anfänger.
ist halt die frage was einfacher ist
eine (komplett) neue Programmiersprache lernen
oder das was du jetzt hast, "aufpeppen" und z.b. auf html5 mit WebSocket
umbaust (das geht angeblich auch mit PHP)
Hallo Udo,
wenn es Platformunabhängig sein darf, dann nimm doch Java. Das Buch
"Java ist auch eine Insel" bietet eine prima Einführung. Ist auch frei
im Netz einsehbar. Die freie Eclipse IDE ist ebenfalls Klasse und
schreibt den Code fast von alleine.
Gruß,
Arno
Robert L. schrieb:> also gerade in DIESEM Zusammenhang ist doch eine WEB-basierte Geschichte> ideal>> Steuerung der Modelleisenbahn mit z.b. IPad
Dafür bräuchte man erstmal einen Server.
Mit C# dürfted dein Vorhaben deutlich einfacher sein, als mit PHP.
Solang keine aufwändige grafische Animtionen vorkommen, kann man das
auch ganz ohne MDX bzw. XNA machen.
Hast du schonmal an RocRail gedacht? Ist eine freie Modellbahnsteuerung,
geschrieben in C/C++, aufgebaut als Client/Server-Modell, d.h. du hast
einen Steuer-PC als Server und kannst vom Laptop, PC, Smartphone, Tablet
die Anlage steuern. Link: http://wiki.rocrail.net/doku.php
...man muss das Rad ja nicht mehrmals erfinden :-)
Arno schrieb:> Hallo Udo,>> wenn es Platformunabhängig sein darf, dann nimm doch Java. Das Buch> "Java ist auch eine Insel" bietet eine prima Einführung. Ist auch frei> im Netz einsehbar. Die freie Eclipse IDE ist ebenfalls Klasse und> schreibt den Code fast von alleine.
Hallo Arno,
das ist jetzt ein Missverständis. Mit Eclipse und Java verdiene ich mir
inden letzten Jahren meine Brötchen, allerdings Backoffice ohne
Benutzeroberfläche :-)
Mir gings eher drum für .net und c# Tipps für richtig gute Bücher
und/oder Tutorials zu bekommen, und zwar für jemand der programmieren
kann, nur die Sprache und die API noch nicht kennt.
Aber da es hier doch nicht um PC Programmierung geht wollen wir den
Thread nicht kapern.
Trotzdem Danke.
Webbasiert ist in diesem Fall eine wunderbare Lösung gewesen, vor allem
weil auch alle anderen Funktionen (sämtlicher Schnickschnack auf der
Anlage) auch von einem anderen PC aus bedient werden konnten. Basiert
hatte das alles auf easyPHP.
ABER:
-Das senden eines Befehls wurde in einem anderen Frame ausgeführt, was
ein Neuladen des Gleisbildes überflüssig machte. Eine Rückmeldung
(andere grafische Darstellung) musste aber trotzdem irgendwie erfolgen.
-> doch jedesmal neu laden.
-Zeitverzögerung: Ich habe ALLES ausprobiert, aber das laden des
Gleisbildes dauerte einfach zu lange, genauer gesagt nicht das Laden,
sondern es brauchte zu lange bis nach dem Laden und korrektem Anzeigen
der Browser fertig war um einen neuen Befehl entgegen zu nehmen. (alle
üblichen Browser ausprobiert, Rechner 2GHz Core2Duo). Ich rede hier von
Klick > 1sek > Befehl ausgeführt > 1sek > Gleisbild wieder sichtbar >
3-5sek > Browser ist fertig. Das machte ein flüssiges Arbeiten
unmöglich.
-Man ist Grafisch eingeschränkt. Ich habe z.B. mit 3 Ebenen <div>
arbeiten müssen, was ca. 300 Objekte zur Folge hatte. Eine Version mit
Tabelle wurde wegen massiven Schwierigkeiten bei der Positionierung
aufgegeben.
C# hatte man mir auch empfohlen, deshalb mal einige Fragen an Kenner:
-Kann ich Bitmaps an beliebiger Stelle (natürlich in einem begrenzen
Bereich) einfügen?
-Kann ich Punkte/Linien/Polygone/Text frei Positionieren und während der
Laufzeit ändern/löschen?
-Funktionen aufrufen durch Klick auf Punkte/Linien/Polygone/Text?
-Anbindung an Datenbank, um über mehrere Rechner zugreifen zu können?
Verzeiht mir die dümmlich klingenden Fragen, aber vielleicht kann mir
ein Wissender die Fragen beantworten. Ich habe selbst schon im Internet
gesucht, aber als Prä-Neuling ist das Suchen, vor Allem aber das Deuten
der Antworten etwas schwierig.
mit Java habe ich mich noch nicht befasst, dadurch möchte ich die o.g.
Fragen auch für Java stellen.
Fertige Lösungen habe ich mir auch angesehen, allerdings habe ich da
meist Probleme mein eigenes Bus-System einzubinden. Weiterhin sind diese
Programme meist nur auf Fahrbetrieb ausgelegt, ich aber auch zig
Sonderfunktionen habe, die ich nicht ins Gleisbild einbauen kann.
Da könnte man eher an der Clientseite der Webanwendung optimieren...
stichwort AJAX. dAnn musst du dein PHP-Zeug nicht komplett wegwerfen,
solange es halbwegs brauchbar geschrieben ist.
Oder wie gesagt doch schauen ob man RocRail erweitern kann.
Horst schrieb:> C# hatte man mir auch empfohlen, deshalb mal einige Fragen an Kenner:> -Kann ich Bitmaps an beliebiger Stelle (natürlich in einem begrenzen> Bereich) einfügen?
Ja, Zeichnenfunktionen bei allen Steuerelementen vorhanden.
> -Kann ich Punkte/Linien/Polygone/Text frei Positionieren und während der> Laufzeit ändern/löschen?
Man könnte es durch ein gefärbtes Steuerelement realisieren, das ist
aber nicht zu empfehlen. Die Punkte sollten in einer Tabelle gespeichert
werden und beim Refresh neugezeichnet werden.
> -Funktionen aufrufen durch Klick auf Punkte/Linien/Polygone/Text?
Das fällt unter Kollisionserkennung und wirst du selbst machen müssen
(aufgrund von Mausposition).
> -Anbindung an Datenbank, um über mehrere Rechner zugreifen zu können?
Ja, darüber weiß ich aber selbst nichts genaueres.
Der Umfang .Nets ist riesig, selten muss man etwas selbst
implementieren.
Horst schrieb:> -Das senden eines Befehls wurde in einem anderen Frame ausgeführt, was> ein Neuladen des Gleisbildes überflüssig machte. Eine Rückmeldung> (andere grafische Darstellung) musste aber trotzdem irgendwie erfolgen.> -> doch jedesmal neu laden.
Das macht man über JavaScript ("AJAX" wie schon oben gesagt). Frameworks
wie jQuery machen das einfach, sauber und ratzfatzschnell.
> -Zeitverzögerung: Ich habe ALLES ausprobiert, aber das laden des> Gleisbildes dauerte einfach zu lange, genauer gesagt nicht das Laden,> sondern es brauchte zu lange bis nach dem Laden und korrektem Anzeigen
Mit JavaScript je nach Antwort die Seite umzubauen ist sicher viel
flotter.
> -Man ist Grafisch eingeschränkt. Ich habe z.B. mit 3 Ebenen <div>> arbeiten müssen, was ca. 300 Objekte zur Folge hatte. Eine Version mit> Tabelle wurde wegen massiven Schwierigkeiten bei der Positionierung> aufgegeben.
Klar, HTML ist eben nicht dafür gedacht, Grafiken zu zeichnen. Da nimmt
man z.B. SVG oder Canvas und zeichnet das am Client entsprechend um.
Oder nach deiner Methode hätte man das Bild am Server als Bild gerendert
und direkt ausgeliefert.
> C# hatte man mir auch empfohlen, deshalb mal einige Fragen an Kenner:> -Kann ich Bitmaps an beliebiger Stelle (natürlich in einem begrenzen> Bereich) einfügen?> -Kann ich Punkte/Linien/Polygone/Text frei Positionieren und während der> Laufzeit ändern/löschen?> -Funktionen aufrufen durch Klick auf Punkte/Linien/Polygone/Text?> -Anbindung an Datenbank, um über mehrere Rechner zugreifen zu können?
Kann ich dir leider nicht beantworten, aber mit JavaScript + Server geht
das alles recht leicht, sauber und schnell.