Jump to content

Neil Pate

Members
  • Posts

    1,155
  • Joined

  • Last visited

  • Days Won

    102

Everything posted by Neil Pate

  1. Totally off-topic, why would you "re-set" the session reference?
  2. I still use a few OpenG VIs in most of my projects. Things like fit to decoration, some array stuff, INI file stuff. I consider the library to be mature, not dead, but do not really expect any more updates on current gen.
  3. Amazing, thank you for the tip. Certainly easier than the way I do it using VI server when I accidentally hide an element of a cluster! Has this been in LabVIEW all along and I just never knew about it?
  4. OK, signed in and out a few times and everything seems normal. Thanks for the upgrade Michael, I like the new look ?
  5. Using the normal login, not Facebook. Just doing this now from my android phone and it did not show any error. I will try your suggestion when I get back to my PC.
  6. I spoke a bit too soon, now when I log on I get greeted with this. Seems I can still access the site though.
  7. I think NI is quite a bit better these days at keeping behaviour consistent between versions, except when there is clearly "buggy" behaviour. Given the focus on NXG I suspect it is pretty safe to say not too much is going to change in current gen LabVIEW going forwards.
  8. Ah yes thanks for the reminder. I have actually done this myself in the past to dynamically register FP controls but wanted to do it "inside" the event structure, so I registered the event outside (of course) and then had a different event to populate with actual refs inside. This was actually my first introduction to User Events and totally did not understand why I needed to do this!
  9. OK, figured it out. Turns out the actor I thought was Creating the User Event was not actually doing it. In my code the first time the reference is requested it is Created and then reused from that point onwards. Due to some clever stupid logic my second actor (the one using the data) was actually running before the producer of the data actor, so when the consumer shutdown the reference went stale.
  10. I have some behaviour in an application I cannot understand and wonder if anybody can share some light. I can't really post an example as its part of quite a large framework, but I think I can discuss the issue reasonably succinctly. There is an "actor" that generates some data on a User Event. The main loop VI of that "actor" is the bit of code that also creates and "owns" the actual User Event, and it never stops running so should never go out of scope. There is a second "actor" that registers for this User Event and receives the data. This VI gets dynamically loaded into and out of a subpanel. This is all working well and is a technique I have used successfully for a long time. When I insert a different VI into the subpanel (or rather as soon as I remove the first VI and stop the loop) the Generate User Event in (1.) errors out with Error 1 and if I validate the User Event reference it transitions to Not A Reference at the same time. What I do not understand is why a consumer of the User Event (i.e. registered for it) can cause the underlying User Event to become invalid. Edit 1:Even weirder, if I try and Register again using this same User Event (exactly the same refnum number) there is no error (yet if I test for Not A Reference at the exact same place I am registering it gives True), see picture. Edit 2: Today I learned that the Register Event node does not seem to do any checking on the input refnum, as can be seen in the second picture you can register a NULL reference which seems strange to me. As I said I have used this technique many times in the past and cannot recall seeing this behaviour. Any ideas? Using LV2015 SP1 on Win 10
  11. You cannot directly access the parent class from a child, you have to use accessor methods of the parent. Regarding your second question, why do you need to know the parent?
  12. LogMan, I have tried your 2017 version and I get the same issue you reported. Starting a fresh VI in 2015 and dropping down a random .net constructor I am also able to wire up to those invisible terminals. Curiouser and Couriouser!
  13. Any chance we can get a Machine Learning / AI group created? I am starting to implement various algorithms in Octave and LabVIEW and would be interested to discuss these ideas here,
  14. Hi Jon, Thanks for your comments. It is nice to know our concerns are being taken seriously. I attempted to create a video of the behaviour I originally posted about, but cannot recreate it at the moment. I have just tested 2013, 15, 17 and 18 and all drag operations seem quite smooth (LiveDrag=False in my LabVIEW.ini file for '17 and '18), but these are for very simple test VIs not in a project. I have definitely seen the issue in '18 in the last month or so though. I currently use '15 for all serious projects and only tinker with '18 for personal projects. The grey selection rectangle introduced after 2015 does feel a bit sluggish though. One thing I did notice in my comparison tests is that the toolbar seems to refresh much more often in '17 and '18. Try this experiment: create a VI and drop down a single For Loop. Now resize this loop and take a look at the toolbar. In '13 and '15 nothing noticeable changes in the toolbar however in '17 and '18 the toolbar seems to refresh/redraw (flickers) regularly. If I see the other issues again I will try and take a video of it in action. 2018-08-28 23-26-24.flv
  15. Some interesting reading for those who have not seen it yet. Turn off Automatic Error Handling :-) An End to Brainless LabVIEW Programming.pptx
  16. Speaking of classes and style... http://www.walkingthewires.com/2016/02/15/just-passing-through/
  17. I generally prefer to lay out my block diagrams with the error cluster in a straight line. It provides a nice datum for aligning code and is the wire most common across diagrams. Having this datum on the diagram results in fewer wire bends which to me "feels right". I found in the past that if I did not use the error cluster there was generally a slightly messier feel to the diagrams. Completely personal preference though.
  18. I love the comment in the CRC calculation VI But seriously I would way rather have a not perfect, but functional, implementation any day over password protected stuff. In particular when I was new to modbus and trying to understand which end was actually the tcpip server and how data was persisted this would have been great to have.
  19. Certainly what you are trying to do is possible, however SubPanels can sometimes be a bit tricky to get working nicely. Now I have all my SubPanel code abstracted away using some nice classes, but in the beginning when I was trying to get it to work properly I found it very useful to try and create as simple an example as possible. Trying to debug these kinds of things while running your whole application can be very tricky. If you create some simple examples of how your code does not work out we can probably help you figure our what is going on much quicker. Are you sure your "Update Run Ticket.vi" is actually runnable (i.e. not broken for some reason) when you insert it into the SubPanel? One thing to note, be careful when comparing references if you are dealing with clones. Two clones will return exactly the same reference even though they are running totally independently! In my current framework I pass the SubPanel reference into my VI when I am "initialising" it before running it dynamically, and then I have a method to allow a VI to insert itself into the SubPanel, this allows me to deal with clones as you need the actual reference of the running instance. Also note that with SubPanels I don't think you need to worry about closing FPs before inserting them. As I said in the first paragraph try and create the most simple example you can (just two VIs!).
  20. Sure, I do this all the time too for my free-running processes/actors, but for the situation as simple as a custom dialogue box it makes much more sense (to me at least) to call it as a regular sub-VI instead of convoluting the code with a dynamic call (just to get the FP not removed). Inevitably what happens is I forget to change the settings in the build, however it is pretty simple to just re-build with the corrected settings. Edit: I actually do it slightly differently, preferring to use the VI path rather than the name. Probably does not make much of a difference though.
  21. You should not need the VI in the build directory, all you need to do is change the Source File Setting for the particular VI (Build-->Source File Settings-->Remove front panel, make sure this is unticked).
  22. Hello all, We are an Automation Engineering company based in South Africa looking for project/contract/consultancy work that can mostly be done remotely. Our team has significant experience developing virtually all aspects of the NI toolchain including PC, RT and FPGA and PLC based systems. NI Certifications: CLA, CLED and CPI Systems development and responsible for everything from architecture to final goodbye handshakes and everything in-between Excellent experience with interfacing with hardware (sensors, DAQ, comms, cameras etc) Excellent debugging skills Been practicing modular based design and development for > 10 years Excellent LVOOP skills Good exposure to interfacing with other hardware components via technologies like Modbus or OPC-UA Good GUI/UX development skills (making LabVIEW look not like LabVIEW) Good exposure to DBs and SQL Complementary skills include PLC systems design and development work. If you have any need for LabVIEW/PLC support please do not hesitate to get in touch with me to discuss your individual requirements. Kind regards Neil
  23. I still do not really understand the 4 us requirement. Are you expecting to do something, i.e. react to some signal, in 4 us? Can you not just accept that some portion of the signal processing may lag a bit and then have some sort of buffering mechanism? If you are just storing to disk or memory then as long as you have enough buffer to capture the required sampling history does it really matter if you are not doing the FFT at exactly the same rate? I did some work with a FlexRIO on a system with approx 1000 frames / second rate and we just buffered to RAM on the FPGA card and then spooled it out at a more sensible rate to be processed by the host.
×
×
  • Create New...

Important Information

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