As I said, a buffer could be a shift register or a queue.
Your main program right now has no code to pass data to the subVIs. You can do that with the existing shift register and write to a Set[Variant]/Set[Flattened] method. That means that your subVI would have to have a control to write to. Right now now it doesn't. If you were to use a named queue, the subVI could read the same queue.
The logic of the event structure is also confusing to me. You start a subVI whenever you have value change on any of 5 different controls. An error is generated whenever you select the DSelect or Temp controls.