Events der Intellibox mit VB abfangen

Für alle Diskussionen rund um digitale Modellbahntechnik und alles zum Thema Software Modellbahnplanung und Modellbahnsteuerung
Antworten
Michael Klein

Events der Intellibox mit VB abfangen

Beitrag von Michael Klein » Dienstag 6. April 2004, 08:38

Hallo,

ich will in meiner eignen Bahnsteuerung (VB 6), die Events der Intellibox abfangen.
Hat hier jemand Erfahrung und kann mir evtl. Quellcode schicken ? Ich versuche hier schon sehr lange voranzukommen, aber leider bisher ohne Erfolg, auch Uhlenbrock konnte mir hier bisher nicht helfen, das Programm was ich von Ihnen geschickt bekommen habe (QBasic) ist zwar sehr nett, die Umsetzung in VB funktioniert aber nicht so wie ich es mir vorstelle.

Für Eure Hilfe danke ich im voraus.

Gast

Beitrag von Gast » Mittwoch 7. April 2004, 09:12

.. hallo michael ..
solche super fachleute die mit dir mithalten können wirst du hier im forum wohl nicht finden .... :lol:
grüße
CT

Michael Klein

Beitrag von Michael Klein » Mittwoch 7. April 2004, 11:15

Anonymous hat geschrieben:.. hallo michael ..
solche super fachleute die mit dir mithalten können wirst du hier im forum wohl nicht finden .... :lol:
grüße
CT
Super Kommentar - jetzt vielleicht ein paar Menschen, die auch was sinnvolles schreiben wollen.

Grüße
Michael

Gast

Beitrag von Gast » Mittwoch 7. April 2004, 13:29

Ct schreibt immer nur Sch*** :evil: :evil: :evil:

bifi

Beitrag von bifi » Mittwoch 7. April 2004, 13:34

@michael:
was meinst du eigentlich genau mit events?

ich habe als linux-user leider fast keine ahnung von vb. falls sich mit vb jedoch netzwerkverbindungen aufbauen lassen( sockets ), ließe sich da auch was mit dem srcp-projekt machen. man würde dann halt einen fertigen(aus dem internet heruntergeladenen) srcp-server an der intellibox laufen lassen, und diesen über die eigene software ansteuern.

hier gibts nen srcp-server für windows:
http://www.reukauff.de/TrackONE/
infos zu srcp unter:
http://www.der-moba.de/Digital/

Michael Klein

Beitrag von Michael Klein » Mittwoch 7. April 2004, 14:26

Hallo Bifi,

die Intellibox erzeugt, sogenannte Events, wenn z.B. ein Kurzschluß auf der Anlage ist oder wenn irgendetwas nicht so läuft, wie es "normal" ist. Da ich die Rückmeldungen der s88 über die IB laufen lasse, bekomme ich manchmal, bei o.g. Problemen unsinnige Daten gesendet, die dafür sorgen, dass mein Programm unsinn ausgibt.

Mein Problem ist, dass ich die Events nicht richtig eingelesen bekomme bzw. nicht richtig ausgewertet bekomme. Mein Wunsch wäre jetzt, wenn jemand eine Ahnung von diesen "Events" hat und Erfahrungen gesammelt hat, könnte er mir evtl. helfen.

Danke für die Info !

Gruß
Michi

POB

Beitrag von POB » Mittwoch 7. April 2004, 14:26

Hallo Michael,

da ich keine IB besitze kann ich Dir nur allgemeine Tips geben ...

Soweit ich informiert bin, schließt man die IB per serieller Schnittstelle an den PC an.
Microsoft Visual Basic 6.0 bietet ab der Professional Version ein ActiveX mit welchem
man, auf sehr einfache Weise, die serielle Schnittstelle bedienen kann. Dieses ActiveX musst
du über den Menüpunkt Project->Components->Microsoft Comm Control 6.0 (Englisches VB) einfügen.
Wenn Du das ActiveX auf deiner Form platziert hast, kannst Du mit F1 die Hilfe öffnen.
Du solltest dann sofort auf einfache Sourcecodebeispiele treffen ....

Falls Du Dich für die Variante mit dem SRCP-Server entscheidest, kannst Du das Microsoft
Winsock Control 6.0 verwenden. Mit diesem Control kannst Du einfache Socketverbindungen (TCP und UDP)
herstellen. Auch bei diesem Control findest Du gute Sourcecodebeispiele in der MSDN.

Beide Controls verwende ich in meinem SRCP-Client TRAINer!

http://members.aon.at/pkeintze/html/at/ ... enbahn.htm

Ich hoffe ich konnte Dir zu mindestens ein wenig weiterhelfen.

MfG POB

Michael Klein

Beitrag von Michael Klein » Donnerstag 8. April 2004, 07:36

Hallo POB,

danke für Deine Infos, diesen Teil hab ich aber bereits am laufen, mein Problem sind die Fehlerevents. Die s88-Auslesung klappt schon heute hervorragend.

Trotzdem danke, vielleicht hat aber noch jemand Erfahrungen mit der IB ?

Gast

Beitrag von Gast » Donnerstag 8. April 2004, 10:22

sonst lade dir doch mal den quelltext eines srcp-servers herunter, und suche dort nach der fehlerbehandlung. vielleicht hilft dir das dann weiter.

bifi

Beitrag von bifi » Donnerstag 8. April 2004, 16:36

der gast war ich. hab in der uni vergessen mich auch dort einzuloggen

Gast

Beitrag von Gast » Freitag 9. April 2004, 16:19

Hallo Michael,
wenn ich Deinen Beitrag richtig verstehe, dann sendet die IB bei einem auftretenden Fehler während des laufenden Betriebs ein Datenbyte an den Rechner.
Geschieht dies parallel zur Timerabfrage der S88 selbständig oder muss dieses Byte abgerufen werden? Sind damit die Fehlermeldungen gemeint, die im Kapitel 11 auf Seite 61 beschrieben werden?
Ich habe sowohl die IB als auch das Interface der Fa. Märklin und steuere zur Zeit nur das Märklin-Interface an. Die CU von Märklin kann solche Fehlermeldungen nicht über das Interface weiterleiten.

Wenn die „Events“, wie Du sie nennst, sich auf die o.a. Fehlermeldungen beziehen, dann stell ich einfach mal folgende Theorie auf:
Das Abfragen der S88 erfolgt timergesteuert innerhalb einer Sekunde. Wenn nun ein Fehler auftritt, z.B. ein Kurzschluss, dann würde die IB erst ein Signal über die Datenleitung senden und dann auf „Nothalt“ schalten. Dein Programm sendet aber weiterhin Abfragen an die IB zur Auswertung der S88. Diese können nun von der IB nicht mehr verarbeitet werden. Kann hier vielleicht der Knackpunkt für die dann ankommenden unsinnigen Daten liegen?

Könntest Du mir vielleicht den QBasic –Quellcode zukommen lassen?
Da man ja nicht immer veraltete Betriebssysteme entsorgen soll, habe ich noch einen Satz
DOS 5.0 & WIN3.1 Installationsdisketten in der Schublade liegen. Zu diesem Betriebssystem
gehört auch der QBasic-Interpreter. Vielleicht kommen wir so weiter.

Ich habe meine ersten „Gehversuche“ im Programmieren von Modellbahnsteuerungen mit dem guten alten Powerbasic durchgeführt. Als Grundlage dienten mir dabei Demoprogramme, geschrieben in QBasic, die dem Märklin-Interface beilagen. Diese Demos habe ich dann nach PowerBasic portiert und auch später diese Programme von PowerBasic nach VB6 „umgebastelt“.
Wie war das doch gleich mit dem blinden Huhn und dem Schnaps, äääh Korn?
Schaun mer mal.

Viele Grüße
Bernd

Michael Klein

Beitrag von Michael Klein » Freitag 9. April 2004, 17:56

Deine Theorie entspricht genau der Realität, so interpretiere ich auch meinen Fehler, aber leider hab ich es noch nicht hinbekommen, dass zu umgehen. Ich schicke Dir nach Ostern gerne mal die Demo-Programme zu und vielleicht hast Du es ja schnell gelöst.

Danke für Deine Hilfe und schöne Ostern
Michael

Michael Klein

Beitrag von Michael Klein » Freitag 9. April 2004, 17:58

Deine Theorie entspricht genau der Realität, so interpretiere ich auch meinen Fehler, aber leider hab ich es noch nicht hinbekommen, dass zu umgehen. Ich schicke Dir nach Ostern gerne mal die Demo-Programme zu und vielleicht hast Du es ja schnell gelöst.

Danke für Deine Hilfe und schöne Ostern
Michael

Gast

Beitrag von Gast » Samstag 10. April 2004, 17:40

Hallo Michael,
versuchen wir es einmal, Versuch macht klug.

Frohe Ostern
Bernd

bifi

Beitrag von bifi » Samstag 10. April 2004, 17:57

andere möglichkeit, wenn dich diese "events" behindern:
es gibt die möglichkeit in der intellibox den erweiterten befehlssatz abzuschalten, so dass sich diese wie ein märklin-interface verhält. vielleicht funktioniert dein programm dann. habs aber selbst noch nicht ausprobiert.

Gast

Beitrag von Gast » Sonntag 11. April 2004, 14:07

Das Abschalten des erweiterten Befehlssatzes löst das Problem nicht:
Wenn man seine eigene Steuerung erstellen kann, dann will man auch alle Möglichkeiten der Programmierung ausnutzen. Ergo beißt man sich an diesem Problem fest und will es lösen. Manchmal ist dann so, dass du fast an der Lösung dran bist, aber eben nur fast und du hast den Ehrgeiz, dieses Problem vollständig zu lösen.
Programmierer-Ergeiz würde ich es nennen.

Bernie-Bärchen

TheHunter

Beitrag von TheHunter » Sonntag 11. April 2004, 14:11

@Michael
Es gibt auf der Seite von Uhlenbrock eine Dokumentation zum erweiterten Befehlssatz der Intellibox. Den kann man auch abschalten, dann sendet die Intellibox nur noch die Events vom S88. Ist aber eigentlich langweilig, denn so Events wie Nothalt oder Kurzschluss sollte ein gutes Programm auch berücksichtigen. Gerade wenn man ein Programm mit Automatik schreibt, sind solche Events unverzichtbar.
Auf der Seite gibt es zusätzlich auch ein Beispielprogramm in Basic in dem die Eventbehandlung gut zu erkennen ist: http://www.uhlenbrock.de/3/0/2/0/ICD689 ... d/P50X.zip. Wenn du die Eventunterscheidung aus dem Beispielprogramm einfach in deine Abfrage der S88-Events mit einbaust, dann dürften die störenden Events eigentlich keine Probleme mehr bereiten.

Ciao
Martin, leider keine Intellibox zum ausprobieren habend...

Gast

Beitrag von Gast » Mittwoch 21. April 2004, 20:51

Um die Events auslesen zu können, wird die IB als "Random-Datei" geöffnet und mit den entsprechenden Befehlen ausgelesen.

Um nun timergesteuert diese Prozedur hinzubekommen, müßte ein Timer regelmäßig die Daten aus der "Datei" auslesen. Damit habe ich, zumindest im Moment, so meine Probleme zumal zeitgleich ja auch die Rückmelder ausgewertet müssen.

Bernie-Bärchen

Michael Klein

Beitrag von Michael Klein » Mittwoch 21. April 2004, 20:53

ich denke, wir sind am gleichen problem "kleben" geblieben - aber vielleicht schaffen wir es zusammen.

danke für deine hilfe !!!

Gast

Beitrag von Gast » Freitag 23. April 2004, 20:21

Eine Sprache, drei Dialekte.
Ich bin jetzt dabei die IB im Dialekt "PowerBasic" anzusteuern, da hier die Syntax der Befehle viel näher an QBasic liegt als an VB6.
Das Öffnen als Random-Datei ist ja nun nicht das Problem, das richtige Umsetzen des ausgelesenen "Datensatzes" in Verbindung mit der timergesteuerten Abfrage und Schaltbefehlen ist, noch, kritisch.
Kann es sein, dass das Problem nur dann auftritt, wenn die IB mit CHR-Befehlen versorgt wird?
Das Ansteuern von Befehlen im DCC-Modus ist mir noch nicht erschlossen, ich vermute daher einen Zusammenhang zwischen diesen beiden unterschiedlichen Varianten der Befehlsabgabe.
In diesem Zusammenhang ist mir aufgefallen, dass die IB trotz "Nothalt" weiterhin die Rückmelder abfragen kann. Vielleicht liegt darin ein Teil des Problems.

Bis demnächst
Bernd

Antworten