The Quanser Stream API, on which QUARC Stream blocks are based, offers a flexible and communication-protocol-indent framework. It allows to carry out standard communication not only between QUARC models, but also between a QUARC model and an external third-party application (e.g. graphical user interface - GUI), or even between two external third-party applications. This feature is of great importance in various research applications where software integration, design and integration of GUI and distributed control are needed.
The Stream API is independent of the development environment and is currently fully implemented in C/C++, .NET languages, MATLAB and LabVIEW. It can be readily extended to other languages and environments as required. This makes any Quanser Stream protocol accessible from and to external applications.
The QUARC communication framework, using the Quanser Stream API, follows the well-established client/server communication mechanism implemented in either a blocking I/O mode (i.e. asynchronous I/O in a separate thread) or non-blocking I/O mode (i.e. synchronous I/O in the model current thread). The Quanser Stream communication framework is open and structured to readily accommodate and integrate new communication protocols as required. At present, the Quanser Stream API has communication protocols available for the operating systems that QUARC can target, such as Windows (32-bit XP and Vista), QNX and Linux ARM (gumstix). The Stream API also allows for switching from one communication protocol to another by only changing the Uniform Resource Identifier (URI) string defining the new protocol to be used. The rest of the blocks or functions used in the communication remain untouched!