PC-Steuerung
PC-Steuerung
Ich hab mit Bewunderung gehört, dass im MiWuLa alle Lichter PC-gesteuert sind. Dazu muss ich ja ein Programm auf dem Rechner laufen haben, das einzelne Pins der seriellen Schnittstelle oder des Druckeranschlusses, o.ä. ansteuern kann.
Weil ich nun eine ähnliche Spielerei mit dem PC vorhabe, würde mich interessieren, mit welchen Programmiersprachen, bzw. über welche API-Funktionen, so etwas möglich ist.
Weil ich nun eine ähnliche Spielerei mit dem PC vorhabe, würde mich interessieren, mit welchen Programmiersprachen, bzw. über welche API-Funktionen, so etwas möglich ist.
- Datterich
- Forumane
- Beiträge: 9775
- Registriert: Montag 9. Februar 2004, 14:21
- Wohnort: 100 km südlich Speicherstadt
Steuerung mit PC
Schau bitte mal ---> hier und benutze ggfs. die Suchen-Funktion. Dieses Thema wurde hier schon sehr ausführlich und detailliert erörtert.
Freundliche Grüße aus Darmstadt
Datterich
_________________
... dem heute ein Licht aufgegangen ist
Freundliche Grüße aus Darmstadt
Datterich
_________________
... dem heute ein Licht aufgegangen ist
-
- Forumane
- Beiträge: 733
- Registriert: Donnerstag 1. Januar 2004, 18:43
edit............
Zuletzt geändert von Christian Schoenwitz am Samstag 22. Januar 2005, 23:22, insgesamt 1-mal geändert.
Hallo,
ich habe mir zum einzelnen Schalten von Lampen und CarSystem Verbrauchern ein eigenes "modulares" System entworfen. Dieses hat 120 Kanäle und wird an die parallele Schnittstelle angeschlossen, momentan geht das nur am SPP Anschluß, da die ECP/EPP keine standart TTL Pegel haben. Benutzt man noch die Steuerausgänge oder einen weiteren Parallelport kann man leicht 960 Verbraucher einzeln schalten.
Ich programmiere das momentan mit Delphi, dafür habe ich auch eine kleine Unit geschrieben, die jede Lampe einzeln ein- und ausschalten kann, es können alle Verbraucher auf einmal angeschaltet werden (Lampentest), oder es kann alles ausgeschaltet werden (NotAus).
Die Hardware dafür kommt mit wenigen standart Bauteilen aus.
An den Parallelport wird eine Platine, auf der zwei ICs sind, angeschlossen. Diese Platine hat dann 15 Ausgänge. An diese Ausgänge werden dann die Schaltplatinen angeschlossen, auf denen sich ein IC befindet und 8 Transistoren zum schalten, oder ein weiteres IC, z.B. ULN 2803.
Die Platinen werden über ein 5adriges Kabel angeschlossen, und können direkt in der nähe der Verbraucher plaziert werden, weitere Platinen können "durchgeschliffen" werden.
Eine Adapterplatine zum Anschließen handelsüblicher Relaiskarten für den parallelport habe ich ebenfalls entworfen.
Das ganze ist sehr preisgünstig, und leicht zu programmieren.
Gruß
Torsten
ich habe mir zum einzelnen Schalten von Lampen und CarSystem Verbrauchern ein eigenes "modulares" System entworfen. Dieses hat 120 Kanäle und wird an die parallele Schnittstelle angeschlossen, momentan geht das nur am SPP Anschluß, da die ECP/EPP keine standart TTL Pegel haben. Benutzt man noch die Steuerausgänge oder einen weiteren Parallelport kann man leicht 960 Verbraucher einzeln schalten.
Ich programmiere das momentan mit Delphi, dafür habe ich auch eine kleine Unit geschrieben, die jede Lampe einzeln ein- und ausschalten kann, es können alle Verbraucher auf einmal angeschaltet werden (Lampentest), oder es kann alles ausgeschaltet werden (NotAus).
Die Hardware dafür kommt mit wenigen standart Bauteilen aus.
An den Parallelport wird eine Platine, auf der zwei ICs sind, angeschlossen. Diese Platine hat dann 15 Ausgänge. An diese Ausgänge werden dann die Schaltplatinen angeschlossen, auf denen sich ein IC befindet und 8 Transistoren zum schalten, oder ein weiteres IC, z.B. ULN 2803.
Die Platinen werden über ein 5adriges Kabel angeschlossen, und können direkt in der nähe der Verbraucher plaziert werden, weitere Platinen können "durchgeschliffen" werden.
Eine Adapterplatine zum Anschließen handelsüblicher Relaiskarten für den parallelport habe ich ebenfalls entworfen.
Das ganze ist sehr preisgünstig, und leicht zu programmieren.
Gruß
Torsten
Ja, das geht in die Richtung, in die ich gehen wollte. Bisher hab ich rausgekriegt, wie ich die serielle Schnittstelle ansteuern kann.
Ich wollte aber nach Möglichkeit nicht Delphi lernen, sondern bei VB bleiben.
Ich geh mal davon aus, dass du in Delphi auch die Windows API für den Zugriff brauchst. Welche Funktionen sind denn das ?
Wenn ich erstmal weiß, mit welchen Funktionen ich den Anschluss steuern kann, kann ich das restliche Programm drumrumstricken und dann schauen, wie die Schaltung passt.
Es ist also weniger ein Elektronikproblem, als ein Programmierproblem. Ich muss eigentlich nur wissen, welche API die Anschlüsse steuern kann. Der Rest is kein Problem (bzw. noch nicht
Ich wollte aber nach Möglichkeit nicht Delphi lernen, sondern bei VB bleiben.
Ich geh mal davon aus, dass du in Delphi auch die Windows API für den Zugriff brauchst. Welche Funktionen sind denn das ?
Wenn ich erstmal weiß, mit welchen Funktionen ich den Anschluss steuern kann, kann ich das restliche Programm drumrumstricken und dann schauen, wie die Schaltung passt.
Es ist also weniger ein Elektronikproblem, als ein Programmierproblem. Ich muss eigentlich nur wissen, welche API die Anschlüsse steuern kann. Der Rest is kein Problem (bzw. noch nicht
Ich arbeite unter Windows 2000, und der eigentliche Zugriff auf die parallele Schnittstelle geht über die IO.dll, die habe ich dort gefunden:
http://www.geekhideout.com/iodll.shtml
Die kann man auch unter anderen Sprachen benutzen, ist auf der Seite alles beschrieben.
Gruß
Torsten
http://www.geekhideout.com/iodll.shtml
Die kann man auch unter anderen Sprachen benutzen, ist auf der Seite alles beschrieben.
Gruß
Torsten
Gut. Ich denke die Frage von eben hat sich geklärt und bei den SSP-Anschlüssen handelt es sich um die beiden SUB-D 25, an die z.B. der Drucker kommt.
Dafür hab ich ne neue Frage. Die Funktionen der DLL wollen Parameter übergeben haben, den Port, den man ansprechen will, und den Bit, den man steuern will, oder die Daten die man senden will. Soweit so klar.
Ist es nun so einfach, das ich der Funktion SetPortBit als Port 1 und als Bit auch 1 übergeben kann und dann der erste Kontaktstift des ersten Steckers high wird. Wenn ich dann sage ClrPortBit(1,1) wird dieser Stift wieder auf low gesetzt.
Oder sind die einzelnen Ports und Bits mit lustigen Hexadezimalzahlen codiert - wenn ja, wie lauten diese ?
Dafür hab ich ne neue Frage. Die Funktionen der DLL wollen Parameter übergeben haben, den Port, den man ansprechen will, und den Bit, den man steuern will, oder die Daten die man senden will. Soweit so klar.
Ist es nun so einfach, das ich der Funktion SetPortBit als Port 1 und als Bit auch 1 übergeben kann und dann der erste Kontaktstift des ersten Steckers high wird. Wenn ich dann sage ClrPortBit(1,1) wird dieser Stift wieder auf low gesetzt.
Oder sind die einzelnen Ports und Bits mit lustigen Hexadezimalzahlen codiert - wenn ja, wie lauten diese ?
Du mußt einmal die Adresse vom Parallelport angeben, der LPT1 ist standartmäßig auf der Hex Adresse 378, das wäre Dezimal 888.
Dann kannst Du die 8Bit setzen, die ein Parallelport als Datenbit hat.
Das wären dann die Werte 1,2,4,8,16,32,64,128. Willst Du z.B. nur das erste Datenbit auf high haben schreibst Du 1.
Es gibt auf der Seite auch einen "Parallel Port Monitor", da kannst Du sehen welches Bit Du gesetzt hast.
Gruß
Torsten
Dann kannst Du die 8Bit setzen, die ein Parallelport als Datenbit hat.
Das wären dann die Werte 1,2,4,8,16,32,64,128. Willst Du z.B. nur das erste Datenbit auf high haben schreibst Du 1.
Es gibt auf der Seite auch einen "Parallel Port Monitor", da kannst Du sehen welches Bit Du gesetzt hast.
Gruß
Torsten
Nobby hat geschrieben: Die Hardware dafür kommt mit wenigen standart Bauteilen aus.
An den Parallelport wird eine Platine, auf der zwei ICs sind, angeschlossen. Diese Platine hat dann 15 Ausgänge. An diese Ausgänge werden dann die Schaltplatinen angeschlossen, auf denen sich ein IC befindet und 8 Transistoren zum schalten, oder ein weiteres IC, z.B. ULN 2803.
Hallo Torsten,
das mit dem programmieren würde ich mir auch zutrauen. Allerdings fehlt mir auf der Elektronikseite noch ein bißchen Know How.
Wie hast du denn deine Platinen aufgebaut? Hast du da einen Schaltplan und/oder eine genauere Erklärung die du mir mitteilen könntest?
Vielen Dank
Flo