Previous Next        Current Page: NeXtMidas Training / Macros - Part 1 (Basics) / Pipes in a Macro / Data Pipes
back
Start Here   
Background   
Common Midas Concepts   
Getting Started - Part 1   
Getting Started - Part 2   
Working with Files   
Option Trees   
Macros - Part 1 (Basics)   
   + Macro Basics   
   + Loops and Control Structures   
   + Procedures and Subroutines   
   - Pipes in a Macro   
      - Pipe Sections   
         - Command Execution   
      - Data Pipes   
         - Data Flow   
         - Warm Starts   
         - Features   
      - Pipe-Related Commands   
      - Lab 1 - Macro Pipes   
         - Instructions   
         - Solution   
      - Lab 2 - Macro Pipes   
         - Instructions   
         - Solution   
   + Messages in a Macro   
Macros - Part 2 (Graphics)   
NetBeans - Part 1 (Setup)   
NetBeans - Part 2 (GUIs)   
NetBeans - Part 3 (Profiler)   
Eclipse - Part 1 (Setup)   
Eclipse - Part 2 (GUIs)   
Primitives   
WebStart   
Maps & Imagery   
X-Midas Interoperability   
RMIF & Remoting   
Installing NeXtMidas   
Support & Maintenance   
File Handlers   


  • Data pipes:
    • Primitives can use data pipes to share data within a pipe section.
      • To make things simple, data pipes look like files with names that start with an underscore. Examples:
        _wave    _waveb    _out    _mypipe
      • Pipes can be treated as files by most primitives and intrinsics. They can be:
        • STATUSed
        • LISTed
        • PLOTed
    • Each pipe has one writer but can have multiple readers.
    • Pipes allow the output of one primitive to be passed into another primitive.
      Synchronous data flow. (Default)
      No lost data!
      What if the writer to the pipe is faster than the reader?
      • The primitive writing to the pipe will be paused, as needed, to allow the reader to catch up.
      • If this is a frequent problem, primitives are available to "thin" the data down to a reasonable rate.
      Asynchronous data flow. (Optional)
      Used where data loss is not a problem (sacrifices completeness for speed).
      Use of asynchronous pipes is rare and will not be covered in this module.

back