I am developing a real-time application, and am utilizing an object oriented approach. The design pattern is similar to the Actor framework, but custom built. The class structure is setup to support several different subsystems, with the highest class being a "subsystem" class. Currently, I have only one motion sub-class just to verify inheritance, but my problem is with the subsystem class.
Each subsystem object has a few parameters, one of them being an "Execution Queue". It is a queue of 1D string arrays which tell the subsystem what to do on the next trigger. Each subsystem is launched in a manner similar to the actor framework (I used "Launch Actor Core.vi" as a guide, so this means using an Asynchronous Call By Reference (ACBR). I simplified it for my purposes and also closed out the reference which the actor vi does not do (I had problems even when was leaving the reference open), see below image.
![Launch Subsystem.PNG Launch Subsystem.PNG]()
The "SETUP" VI you see in the image is where the queue is initialized, I won't include that code as it's pretty straightforward. I have verified that the queue is created properly. None of my downstream code from the launch modifies the queue, it only accesses the queue. When I try to perform any operations on the queue after the launch VI, I receive the following: "Get Queue Status in Subsystem.lvclass:Message Handler.vi:640018->Subsystem.lvclass:Controller.vi:4750017->Subsystem.lvclass:Controller.vi.ACBRProxyCaller.A84000DB".
I receive similar messages for any queue operations I attempt to perform. I have also verified that - for the operations where I receive an error - I have the same reference that was created during setup where my queue operations performed successfully. The only difference between the setup VI's and my problem VI's is that the problem VI's are within the VI that I call through the ACBR.
Any help you could provide to me as to what I'm doing wrong or if I'm attempting to do something that can't be done would be greatly appreciated!
Thanks,
Ben