Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/03/2016 in all areas

  1. It's only been a day since you posted the code, but that being said I opened it... Please don't take this the wrong way but some refactoring looks in order. If you have to scroll in more than one direction, then your code is probably not modular, scaleable, reusable, or extensible enough. It is difficult to follow and understand, and therefor difficult to troubleshoot and recommend a fix.
    1 point
  2. This thread is not a question, I just wanted to share the experienced I gained today by troubleshooting our application: Symptom: Engine A encounters an error (expected, so no problem so far) and display it to the user. Engine B, which is totally unrelated to engine A, freezes, and only comes back to like after the user acknowledges the error message from engine A. Consequence: The software engineer (aka me) is pulling his hair and yelling "what the h*** is going on in here?" Then he does some diligent troubleshooting and finds the culprit. Explanation: Engine A calls the "Simple Error Handler" VI, which itself calls the "General Error Handler" VI. This VI analyzes the error and opens a pop-up when there is an error to display. Engine B calls a subvi which calls a subvi...........which calls a subvi which calls "General Error Handler". This subvi doesn't have any error, but still calls "General Error Handler" because it knows that if there is no error, "General Error Handler" will simply return without doing anything. Problem: "General Error Handler" is not reentrant, meaning while it's busy waiting for the pop-up it called to be closed, it can't be used by the sub-sub...subvi of engine B. Therefore engine B is in a frozen state. Conclusion: Those error handlers are a great quick tool for creating super basic application, but not appropriate at all for large, professional applications. I'm pretty sure some of you will think "Well duh, we've been knowing that since LabVIEW 1.0!".
    1 point
  3. We deprecated those VIs in LabVIEW 2015 and created new ones that use error in/error out instead of embedded error handlers:
    1 point
  4. For those more curious here is an article talking about the root loop and how the one button dialog can block an open VI reference call. http://www.labviewcraftsmen.com/blog/the-root-loop
    1 point
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.