Hallo erstmal,
Ich hätt' da mal ein Problem...
Ein VisualBasic (Ja VisualBasic, leider!) liest zyklisch Daten aus einer Siemens S7-SPS über die MPI-Schnittstelle in eine Lesedatei (Treiber für Turbo Pascal gibt es wohl nicht). Aus einer Schreibdatei erhält dieses Programm Daten-Schreibaufträge an die S7.
Diese Schreibaufträge kommen von einem Turbo Pascal Programm, welches auch Daten aus der Lesedatei entgegennimmt.
VisualBasic- und Turbo Pascal Programm arbeiten unter Win95/98 im quasi Multitasking. Meines Wissens nach handelt es sich hier nicht um ein echtes zeitscheibenverwaltetes Multitasking, sondern um ein sogenanntes
'preamtives'-Multitasking, welches einer wartenden Task nur dann Systemresourcen zur Verfügung stellt, wenn die momentan aktive Task dies erlaubt, sich also freiwillig schlafen legt.
Und hier sind wir auch schon bei dem Problem, die Turbo Pascal Task scheint nicht sehr müde zu sein, sie gibt offenbar dem VisualBasic-Programm kaum Gelegenheit seinen Job zu erfüllen.
Mit Ausgaben auf dem Bildschirm über 'write(...);' geht das offensichtlich, ich blende dann in der oberen linken Ecke des Bildschirms ein 'Drehkreuz' ein, damit ich irgendwas ausgeben kann und der Bediener was zum staunen hat. Das läuft allerdings nur sehr holprig und es taucht sehr oft, vorallem beim Zugriff auf die Lesedatei der Fehler 150 'Disk write protected' auf, weil offensichtlich das VisualBasic-Programm auch gerade auf diese Datei zugreift.
Gibt es einen Befehl unter Pascal, oder eine Assembler Zusatzroutine zum einbinden, wodurch das Pascal-Programm für eine definierte Zeit veranlaßt wird mal Pause zu machen und andere (VisualBasic-Programm) arbeiten zu lassen?
Wenn jemand eine Idee hat, vielen Dank im Voraus
Gruß
Hasko
Ich hätt' da mal ein Problem...
Ein VisualBasic (Ja VisualBasic, leider!) liest zyklisch Daten aus einer Siemens S7-SPS über die MPI-Schnittstelle in eine Lesedatei (Treiber für Turbo Pascal gibt es wohl nicht). Aus einer Schreibdatei erhält dieses Programm Daten-Schreibaufträge an die S7.
Diese Schreibaufträge kommen von einem Turbo Pascal Programm, welches auch Daten aus der Lesedatei entgegennimmt.
VisualBasic- und Turbo Pascal Programm arbeiten unter Win95/98 im quasi Multitasking. Meines Wissens nach handelt es sich hier nicht um ein echtes zeitscheibenverwaltetes Multitasking, sondern um ein sogenanntes
'preamtives'-Multitasking, welches einer wartenden Task nur dann Systemresourcen zur Verfügung stellt, wenn die momentan aktive Task dies erlaubt, sich also freiwillig schlafen legt.
Und hier sind wir auch schon bei dem Problem, die Turbo Pascal Task scheint nicht sehr müde zu sein, sie gibt offenbar dem VisualBasic-Programm kaum Gelegenheit seinen Job zu erfüllen.
Mit Ausgaben auf dem Bildschirm über 'write(...);' geht das offensichtlich, ich blende dann in der oberen linken Ecke des Bildschirms ein 'Drehkreuz' ein, damit ich irgendwas ausgeben kann und der Bediener was zum staunen hat. Das läuft allerdings nur sehr holprig und es taucht sehr oft, vorallem beim Zugriff auf die Lesedatei der Fehler 150 'Disk write protected' auf, weil offensichtlich das VisualBasic-Programm auch gerade auf diese Datei zugreift.
Gibt es einen Befehl unter Pascal, oder eine Assembler Zusatzroutine zum einbinden, wodurch das Pascal-Programm für eine definierte Zeit veranlaßt wird mal Pause zu machen und andere (VisualBasic-Programm) arbeiten zu lassen?
Wenn jemand eine Idee hat, vielen Dank im Voraus
Gruß
Hasko
Comment