hmmm, ob man mit ASM oder C/C++ da ran geht, dürfte kein so großer Unterschied sein. Ich denk schon, daß man unter Windows/Linux sinnvoll mit Hardware arbeiten kann. Softwareseitig braucht man ne API, durch die man auf die Regsister/Schnittstelle greifen kann. Teilweise verbietet einem Windows das, und man muss spezielle Treiber installieren wie giveio.sys, spezielle Funktionen benutzen. Unter java+Windows geht's mit der javax.comm.
Wenn man bestimme Zeiten einhalten muss, sieht's natürlich trübe aus. Wenn der eigene Thread/Prozess geschedult wird und erst mal andere Sachen an die Reihe kommen, kann das wie gesagt dauern. Unter Java das auf ner VM läuft ist das nochmals verschärft. Ich würd mich auch wundern, wenn irgendwo Maximalzeiten angegeben/dokumentiert/spezifiziert wären, nach denen der eigene Task spätestens fortgesetzt wird.
Ich erinner mich da an ne namhafte Firma, die ihre Kransteuerung per Python-Skript realisiert hatte und sich wunderte, daß das "alles irgendwie nicht funktioniert".
Doch zurück zum Thema. Bei der von oben Problemstellung liegt die Lösung ja nahe, wie skizziert. Man bekommt zwar kein besseres Echtzeitverhalten, aber immerhin sind die Ausgänge einer solchen Schaltung *immer* konsistent. Und das bei 256 Lines, das schafft kein Controller!
Wenn die Software für 8 Lines schnell genug ist, sollte es auch mit 256 machbar sein, zumal hinten Relais hängen, wo es auf 100ms früher oder später nicht ankommt. Wird nur etwas Bit-Gefummel. Evtl kann man auch alle 8 Data-Ports verwenden und das Raustakten über Steuerleitungen machen. Dann hätte man nicht 4*8 Schiebegegister, sondern 8*4 und wäre doppelt so schnell.
Lesezeichen