


Semaphore->P(); // Process waits here
// if any other process accesses
// critical section
ADC1->EnableRead(0); // Critical section:
Crate->WaitX(); // using shared resource of apparatus
Semaphore->V(); // Semaphore released
The MOON Lab - new software developed at the Moscow Meson Factory - is considered as an object-oriented replacement for LabVIEW. It can serve as a RAD tool of better performance and more wide range of control and data acquisition applications.
("MOON stands for "Multitasking Object-Oriented Network)
MOON Lab is also an environment for running measurement and monitoring applications on a local area network or a single computer. These MOON Lab-specific applications can be developed with a easy-to-use interface library supplied.
MOON Lab introduces several novelties of programming
technology.
Registered controlled variables (process parameters) can be modified via the user interface asynchronously relative to the process.
{ Example of registering the controlled variable
(Volterra model for population dinamics in ecology)
}
NewControlledFlt(
x0, { reference to variable }
'hares 0', { label in the pick list }
'initial population of hares', { legend }
0, { minimum valid value }
2000 { maximum valid value }
);

Registered variables appear in the user-accessible lists (for monitored and controlled variables)
{ exception handling block: }
if Catch(ml^.PushException^)<>0 then begin
case ml^.GetExceptionID of
1:;
5: MessageBeep(0);
4: ml^.Raise(5);
else ml^.reraise;
end {case};
ml^.PopException; exit;
end {exception};
{ protected fragment of code follows ... }
Layer structure of MOON Lab:
1 - OS layer
2 - MOON Lab layer:
ML API 1.0 - MOON Lab API v. 1.0
ML API 2.0 - MOON Lab API v. 2.0
ML 1.0 - instance of MOON Lab Shell (presentation server) v. 1.0
ML 2.0 - instance of MOON Lab Shell v. 2.0
ND - MOON Lab network dispatcher (presently under development)
Dr - instrumental hardware driver
3 - application layer:
a1 - WIN16 MOON Lab application (User Process for v. 1.0 of the API, .DLL)
a2 - WIN32 MOON Lab application (for v. 2.0, .EXE)
app - other
Windows applications.
|
| MOON Lab 1.0: Event-driven user interface and sequential code of the User Process
|
| MOON Lab 2.0:
Inter-task
|