Programmieren von Digital-Steuerungen
Programmieren von Digital-Steuerungen
Hallo!
Ich habe eine Frage zur Programmierung von eigenen Modellbahnsteuerungen. Ich bin dabei, mir mit der Programmiersprache "Visual Basic 6" eine eigene Steuerung meiner Modellbahnanlge zu erstellen. Gesteuert wird die Anlage mit den Digital-Komponenten von MÄRKLIN. Das Ansteuern des Interface und das Senden von Schaltbefehlen ist mir problemlos gelungen. Auch Fahrstraßen, deren Befehle in einfachen Dateien mit fester Satzlänge gespeichert sind, lassen sich stellen. Was ich nicht hinbekomme, ist das Auslesen des S88 Rückmeldebusses. Ich kenne zwar den Befehl zum Auslesen des Busses vom Interface, aber ich bekomme nicht heraus wie ich die Antwort vom Interface so umwandeln kann, das ich das höherwertige & das niederwertige Byte berechnen kann, um die angesteuerten Kontakte des S88 zu erhalten.
Zum Vergleich der Befehl in PowerBasic:
PRINT #schaltnr, Chr$(192+1); ' Lesebefehl senden: 1.Modul
Byte1=ASC(Input$(1,#schaltnr))
Byte2=ASC(Input$(1,#schaltnr))
K1=SGN(Byte1 and 2^7) ' Kontakt 1 an S88_1
Eine Portierung dieses Befehls in VB6 funktioniert nicht!
Ich habe schon nächtelang an meiner "Rechenkiste " gesessen und finde den Weg nicht ( oder bin ich einfach zu blöd?).
Hiiiiiiilfe! Kann mir jemand helfen?
Vielen Dank im voraus.
Bernie-Bärchen
Ich habe eine Frage zur Programmierung von eigenen Modellbahnsteuerungen. Ich bin dabei, mir mit der Programmiersprache "Visual Basic 6" eine eigene Steuerung meiner Modellbahnanlge zu erstellen. Gesteuert wird die Anlage mit den Digital-Komponenten von MÄRKLIN. Das Ansteuern des Interface und das Senden von Schaltbefehlen ist mir problemlos gelungen. Auch Fahrstraßen, deren Befehle in einfachen Dateien mit fester Satzlänge gespeichert sind, lassen sich stellen. Was ich nicht hinbekomme, ist das Auslesen des S88 Rückmeldebusses. Ich kenne zwar den Befehl zum Auslesen des Busses vom Interface, aber ich bekomme nicht heraus wie ich die Antwort vom Interface so umwandeln kann, das ich das höherwertige & das niederwertige Byte berechnen kann, um die angesteuerten Kontakte des S88 zu erhalten.
Zum Vergleich der Befehl in PowerBasic:
PRINT #schaltnr, Chr$(192+1); ' Lesebefehl senden: 1.Modul
Byte1=ASC(Input$(1,#schaltnr))
Byte2=ASC(Input$(1,#schaltnr))
K1=SGN(Byte1 and 2^7) ' Kontakt 1 an S88_1
Eine Portierung dieses Befehls in VB6 funktioniert nicht!
Ich habe schon nächtelang an meiner "Rechenkiste " gesessen und finde den Weg nicht ( oder bin ich einfach zu blöd?).
Hiiiiiiilfe! Kann mir jemand helfen?
Vielen Dank im voraus.
Bernie-Bärchen
edv
oh oh
erstes semester edv
aber .. glaube mir .. ich habe da keine ahnung mehr von
aber mein alter prof..
prof.dr.dr. wetzel
uni münster ...... edv prof. der hat mit sicherheit eine antwort für dich
vielleicht schreibst du ihn einfach mal an
oder schickst eine e-mail
ansonsten
edv -- erfahrung durch versuch
grüße
Cincinnati-Train
Hallo Bernie!
Ich gehe einmal davon aus, dass Dein "Input" ein WORD ist (ich kenne das Format nicht, in dem Du programmieren willst). Normalerweise kommst Du an höherwertige Bytes mit Shift-Operationen heran. Das niedrigste Byte wird durch einfache Zuweisung erhalten, das höherwertige wird dabei abgeschnitten.
Also:
LowByte = (BYTE) Input;
HighByte = (BYTE) ( Input>>8 );
Manchmal gibt es auch fertige Funktionen, wie:
LowByte = LOW (Input);
HighByte = HIGH (Input);
Probier einfach mal aus - wie gesagt, ich komme aus der analogen Ecke und kenne weder die Formate noch Dein spezielles Problem.
Ich gehe einmal davon aus, dass Dein "Input" ein WORD ist (ich kenne das Format nicht, in dem Du programmieren willst). Normalerweise kommst Du an höherwertige Bytes mit Shift-Operationen heran. Das niedrigste Byte wird durch einfache Zuweisung erhalten, das höherwertige wird dabei abgeschnitten.
Also:
LowByte = (BYTE) Input;
HighByte = (BYTE) ( Input>>8 );
Manchmal gibt es auch fertige Funktionen, wie:
LowByte = LOW (Input);
HighByte = HIGH (Input);
Probier einfach mal aus - wie gesagt, ich komme aus der analogen Ecke und kenne weder die Formate noch Dein spezielles Problem.
Hallo Zusammen,
erst einmal recht herzlichen Dank (und das meine ich ehrlich) für die vielen Anregungen und Beispiele, die IHR mir gesendet habt( special Thanks for Michael Klein). Nun werde ich mir wieder einmal eine Nacht um die Ohren hauen, und probieren, probieren, probieren...............
Ich hör schon meine Frau sagen:"Nun hockt er wieder stundenlang vor seiner Kiste und ich hab kalte Füße!"
Hey Cincinnati Train: >learning by doing<
Mein Trost an alle Modellbahner-Ehefrauen und solche, die es werden wollen:
Hast Du einen Modelleisenbahner im Haus,
gehen in der Kneipe früh die Lichter aus!
(Dafür hat der Modellbahner weder Zeit noch Geld)
In diesem Sinne:
Frohes Schaffen und bis bald
Bernie-Bärchen
erst einmal recht herzlichen Dank (und das meine ich ehrlich) für die vielen Anregungen und Beispiele, die IHR mir gesendet habt( special Thanks for Michael Klein). Nun werde ich mir wieder einmal eine Nacht um die Ohren hauen, und probieren, probieren, probieren...............
Ich hör schon meine Frau sagen:"Nun hockt er wieder stundenlang vor seiner Kiste und ich hab kalte Füße!"
Hey Cincinnati Train: >learning by doing<
Mein Trost an alle Modellbahner-Ehefrauen und solche, die es werden wollen:
Hast Du einen Modelleisenbahner im Haus,
gehen in der Kneipe früh die Lichter aus!
(Dafür hat der Modellbahner weder Zeit noch Geld)
In diesem Sinne:
Frohes Schaffen und bis bald
Bernie-Bärchen
Meine Frau ist in dieser Hinsicht Kummer gewohnt.Michael Klein hat geschrieben:Vielen Dank für die Blumen, ist aber sehr gern geschehen, auch wenn ich hoffe die Ehe wird dadurch nicht zu viel leiden
Viel Erfolg für die Entwicklung bei Fragen kannst Du Dich gerne wieder bei mir melden !!!
Gruß
Michael
Ausserdem ist sie ein heimlicher Modellbahnfreak!!!
Gruß Bernie-Bärchen
Hallo Bernie,
nimmst Du das MSCOMM-Control fuer die serielle Schnittstelle (im VB6 professional enthalten) ?
Wenn Du VB6 Standard/Einsteiger Edition hast: da ist es leider nicht drin und VB6 wird von MS nicht mehr hergestellt . Entweder nach Restbestaenden beim Haendler fahnden oder eBay.
Wenn Du das MSCOMM benutzt, liest Du Deine Daten aus dem InputBuffer oder bekommst Du sie im OnComm-Event ?
Im MSCOMM kannst Du die Laenge des InputBuffers einstellen. Bei InputLen bekommst Du nie mehr als ein Byte und musst nicht erst Low- und High-Byte auseinanderfieseln.
Wenn Du mehr Fragen hast, melde Dich ruhig. Deine Erfahrungen interessieren mich auch.
Gruss
HenniNg
nimmst Du das MSCOMM-Control fuer die serielle Schnittstelle (im VB6 professional enthalten) ?
Wenn Du VB6 Standard/Einsteiger Edition hast: da ist es leider nicht drin und VB6 wird von MS nicht mehr hergestellt . Entweder nach Restbestaenden beim Haendler fahnden oder eBay.
Wenn Du das MSCOMM benutzt, liest Du Deine Daten aus dem InputBuffer oder bekommst Du sie im OnComm-Event ?
Im MSCOMM kannst Du die Laenge des InputBuffers einstellen. Bei InputLen bekommst Du nie mehr als ein Byte und musst nicht erst Low- und High-Byte auseinanderfieseln.
Wenn Du mehr Fragen hast, melde Dich ruhig. Deine Erfahrungen interessieren mich auch.
Gruss
HenniNg
Hallo HenniNg,HenniNg hat geschrieben:Hallo Bernie,
nimmst Du das MSCOMM-Control fuer die serielle Schnittstelle (im VB6 professional enthalten) ?
Wenn Du VB6 Standard/Einsteiger Edition hast: da ist es leider nicht drin und VB6 wird von MS nicht mehr hergestellt . Entweder nach Restbestaenden beim Haendler fahnden oder eBay.
Wenn Du das MSCOMM benutzt, liest Du Deine Daten aus dem InputBuffer oder bekommst Du sie im OnComm-Event ?
Im MSCOMM kannst Du die Laenge des InputBuffers einstellen. Bei InputLen bekommst Du nie mehr als ein Byte und musst nicht erst Low- und High-Byte auseinanderfieseln.
Wenn Du mehr Fragen hast, melde Dich ruhig. Deine Erfahrungen interessieren mich auch.
Gruss
HenniNg
genau das ist mein Problem, das ich gerade zu lösen versuche.
Ich benutze das MSComm, da ich Vb6 in der Prof.Edtion besitze.
Ich werde ab nächste Woche wieder "basteln" und werde mich dann bei Dir melden.
mfg
Bernie-Bärchen
- Felix (der erste)
- Forumane
- Beiträge: 1408
- Registriert: Mittwoch 25. Dezember 2002, 19:27
- Wohnort: Lüdenscheid
- Kontaktdaten:
Ich wollte eigentlich mich auch mal näher mit dem Programieren von Digitalsteuerungen beschäftigen. Das wollte ich aber wahrscheinlich mit C++ machen (muss mich da noch einüben ). Hat da schon jemand Erfahrungen mit gemacht? Oder vielleicht auch in Python? Ich weiß es noch nicht genau. Python wirkt auf mich recht einfach. Aber dafür hat man nich eine so schöne Button Aktion Auswertung wie bei C++.
Was meint ihr?
MFG
Felix(der Erste)
Was meint ihr?
MFG
Felix(der Erste)
- Felix (der erste)
- Forumane
- Beiträge: 1408
- Registriert: Mittwoch 25. Dezember 2002, 19:27
- Wohnort: Lüdenscheid
- Kontaktdaten:
- Felix (der erste)
- Forumane
- Beiträge: 1408
- Registriert: Mittwoch 25. Dezember 2002, 19:27
- Wohnort: Lüdenscheid
- Kontaktdaten:
- Felix (der erste)
- Forumane
- Beiträge: 1408
- Registriert: Mittwoch 25. Dezember 2002, 19:27
- Wohnort: Lüdenscheid
- Kontaktdaten:
- Felix (der erste)
- Forumane
- Beiträge: 1408
- Registriert: Mittwoch 25. Dezember 2002, 19:27
- Wohnort: Lüdenscheid
- Kontaktdaten: