Jump to content

All Activity

This stream auto-updates     

  1. Today
  2. I believe a LabVIEW Jupyter kernel is out of the question without NI involvement. And it wouldn't address my use case, as I would want users to work with data in python. Moreover, I would for instance lose access to all the parallel job tools that I have access on my local cluster supporting Jupyter notebooks 🙂
  3. With our built-in controls, the problem is solved at the moment of selection. If the main part is selected (e.g. the LED part of a Boolean control) then all of the related parts are also selected. If a secondary part is selected (e.g. the label of the Boolean control) then only that part is selected. Thereafter, the rules of the selection list work as normal -- when you drag one item in a selection, all selected items move with it. This is what allows you to select the label of several different controls at once.
  4. LV 2019 augments the right-click menus for class wires/terminals to provide a method list you can drop, which should alleviate this issue. I found a way to make the right-click menu plug-in able to add the graphical palette menus and then built a right-click plug-in that builds the method palette on the fly if the class doesn't already have its own default palette.
  5. Something can't be in a peer group and not be in a peer group at the same time. This is how the LV diagram "Group" works. What NI has is a parent-child grouping which is something different. Not saying this couldn't be an interesting idea, just that it's not comparing apples with apples.
  6. Join us at NIWeek 2019! Contributors of labviewwiki.org, (including future contributors), can add to their ribbon collection by finding an admin during NIWeek or at the LAVA BBQ! See you there!
  7. AQ I will try again today and see if i can replicate it.... Dan
  8. Hi, We currently encounter a serious issue in our company because we use some functions of the OpenG Variant Data palette in our own toolkits (Get Cluster Name, Get Cluster Element by Names, Get Cluster Element Names, Get Strings from Enum TD...). After some researches, it seems that it is linked to the new way LabVIEW NXG is encoding strings compared to LabVIEW (unicode instead of ASCII). Therefore, some functions to cast bytes to string or other functions as string length for example cannot be used as before with LabVIEW NXG. See this link for more information : https://forums.ni.com/t5/NI-Blog/Designing-LabVIEW-NXG-How-Unicode-Benefits-You/ba-p/3886228?profile.language=fr So, we think that this palette disappeared because of this but we don't understand why it was still here on LabVIEW NXG 2.0 and not anymore in LabVIEW NXG 3.0. Anyway, how do you think we should handle that? Is there any workarounds about that? Thank you for your help!
  9. So what you want to do is not so straightforward. The thing is that the Jupyer Client code is not interacting with the notebook directly. When you start the Jupyter notebook you are both starting the frontend that runs in a web-browser, but also starting a kernel process in the background that the front end interacts with. What my code does is provide another front end that can talk to the same kernel backend process - so both front ends can change the state of the kernel (i.e. create variables etc) and interrogate the kernel about its state - so in that way the two frontends are aware that 'somebody else' is messing with 'their' kernel. But, the two frontends don't talk to each other - so LabVIEW cannot directly manipulate what the notebook displays. The only exception that I've found with a little minimal playing is that if you invoke the %matplotlib notebook magic in the notebook and then create a new blank figure in the notebook, then you can plot into tat figure from the LabVIEW end i.e. In the notebook I do: from matplotlib.pylab import * x=linspace(-pi,pi,361) y=sin(x) %matplotlib notebook figure() and in the LabVIEW client I do: plot(x,y,'b+') Then I get a plot of the sin function in the notebook - but I think that is more or less an accidental consequence of how the matplotlib notebook backend works. I started wondering what you need is a LabVIEW JuPyter kernel - ie. something that could interact with a a LabVIEW process via a notebook - that would be a fun project, but just not this one. Thinking further, however, I think your use case is actually mix of both kernel and client - use case 3) is pretty much a LabVIEW Jupyter kernel, use case 2) seems to require that the notebook also has access to a Python kernel and is more like having a Python module that knows how to speak to a LabVIEW kernel. Use case 1) is a bit of a mixture.... What this code is best suited for is off-loading processing of LabVIEW data into Python routines, or allowing a LabVIEW front end to interact with a Python based system - e.g. some sort of distributed control system with a Python kernel sitting in it.
  10. IF you want to debug your program, just use labview option "breakpoints". Then program stops/pause in particular place, and you can RUN to continue.
  11. @X___, Sorry, other than what @ShaunR is suggesting, there really isn't a way to group like that at edit time. What I was suggesting was how to control multiple controls in a QControl, which would be run-time behavior.
  12. That is really weird. I haven't tried to replicate... not sure I'll have time for a while... but there's one odd thing to try... after the "Remove VI" call, try adding a "Wait MS" of about 100 milliseconds. I'm trying to come up with hypotheses that would cause this problem, and the only one I can think of is that the subpanel is opening its own reference to hold the panel in memory and that is (for some unknown reason) flagged to show the Save Changes dialog. I'm torn between hoping this works you around the bug and hoping that it has nothing to do with it.
  13. Yesterday
  14. I got a PSE to work on this for a while this week. We couldn’t replicate the issue. It’s a pretty bad bug — wiping out the whole directory. If you have more explicit steps to reproduce, please consider filing a bug report with NI.
  15. Sure. But then you cannot move the elements independently. Unless you ungroup, move, regroup. A modular object (such as a Graph) should be moveable as a whole, but its components should ideally be moveable individually. I have no idea how NI does that with their native controls, but this is obviously feasible. This is for instance something that was completely destroyed in XControls (an XControlled-Graph is frozen solid if I recall my now forgotten attempts to expand Graphs, unless you rebuild the whole independent component grabing and moving, as I was told by NI).
  16. Um. Can't we? If you select the objects on the front panel and press the "Reorder" button in the toolbar. There is a "Group" option. That will group the selected controls and you can move them around as one unit. Maybe I'm just misunderstanding what you are asking.
  17. just forgot to add that my comment about the lack of flexible grouping in LV referred to edit time behavior, which Wiebe's tool doesn't cover. Basically, we need to be able to group objects so as to be able to grab them and move them around as a whole (at edit time), but also be able to grab one inside the group and reposition it (ability which most graphical software provide; not sure about NXG). Essentially what one can do for members of a cluster, without the drawback I was illustrating above.
  18. I thought it might be helpful if I clarified my use case. Most of my development is LV-based, but I can hardly find anyone interested in working with that code (proprietary language, expensive, graphical, etc.) therefore, in order to be able to share and make what I do expandable by others, I need to interface it with something that is exactly the opposite. Jupyter notebooks are that thing today. What I am looking for is: 1) a way to send markdown text and graphing instructions to reproduce plots generated in LV (or plots that can't easily be produced in LV) in the Jupyter Notebook. The goal is to replace a custom-designed Notebook I based on a .NET rich text box control, which works fine, but is not interactive. 2) a way to pass data structures generated in LV (which the user will have extensive documentation about) to the Jupyter Notebook so that the user of the Notebook can do some processing on their own. 3) a way to send instructions (think custom scripting language) and data to LV. Point 3 is to some extent covered by your tool, as long as LV polls the kernel (and knows which variable to look for). Whether or not a better communication protocol (with user events?) can be designed is up. Points 1 and 2 are pretty much the same thing, the only difference being that 2) might involve bi-directional communication (LV sends data that is processed in the Notebook, which then sends back the result (see Point 3). The original use case, however, is merely to provide data for the user to do whatever they want with. A big unknown to me is whether it would make sense to have access to the Notebook structure within LV (cells, history, data).
  19. Last week
  20. For my particular (ultra-simple) application, that would be an overkill, as I already handle that with a custom-made handler. For the general case, that could certainly be a way to handle multi-component objects. But my question is whether what @The Q is describing above is something that can be done within the wizard (picking one of the controls of the multi-component control as the starting class and doing the weight lifting to add the references to the other controls).
  21. Nope, we have explicit, static registrations for controls in our subpanels. Nothing dynamic or using references. We did potentially trace things back to our error logger. We have a subVI that just throws errors in a queue and then a process that flushes the queue every few seconds and logs them. Seems when we aren't logging errors the problem goes away, so I'm not really sure what's going on. Possibly something there blocking our UI thread somehow and events getting missed but the flush and write happens within 100 ms so it definitely still seems a bit strange. Right now it seems the problem may not be happening in the executable and FWIW we are also updating a good amount of controls by reference with defer panel updates set to true. But the VI Analyzer shows this only taking ~50 ms so I'm not convinced that's the issue either.
  22. LogMAN

    LabVIEW Memes

    @Dataflow_G You should revive this topic 😉
  23. Not quite a meme, but my attempt at an NI style April Fools product announcement (a fake fake product announcement?). See links at the bottom of post for a history of NI's real April 1st jokes. A history of NI's April Fools' courtesy of the Wayback Machine: "National Instruments Announces PC-Based Solution for Matrimonially Inept" (1998) "Spousal Acquisition Toolkit Version 2.0 -- Now Featuring Undo!" (1999) "New MXI Interface Kit for Palm Pilot IIIc" (2000) "President Bush Nominates Jeff Kodosky to Cabinet Post" (2001) "New eIeI/O Software Suite Introduces eFarming" (2002) "New PXI Module Transfers Engineering Knowledge into Marketing Brains" (2003) "National Instruments Releases LabVIEW 7 Espresso" (2004) "Use LabVIEW Graphical Programming to Complete Your Tax Return" (2005) "National Instruments Announces Plans for 'Engineer Barbie'" (2006) "National Instruments Re-Releases LabVIEW 2.0" (2007) "Elementary Students Use NI LabVIEW to Model Impact of Simultaneous Trigger of Rapid Flow Events" (2008) "NI LabVIEW R&D Team Responds to Rumors About Performance-Enhancing Substances" (2009) "National Instruments Develops Cybernetic Leadership Team" (2010) "Time Capsule Captures NI Founders' Technology and Cultural Predictions" (2011) "National Instruments Releases King-Sized Products to Address Big Data Challenges" (2013) "NI Announces New Certification Level: Certified LabVIEW Gladiator" (2014) (Wayback Machine didn't have this one archived. NI pulled it pretty quickly supposedly because people seemed to be taking it seriously) "NI drives time travel with stylish new cRIO module" (2017)
  24. On the other hand: What is "too slow". What should "faster" be?
  25. You might want to get in touch with Wiebe for that....
  26. You are setting your offset to 0.001 of a single sample. That's not going to be visible. The top value in your clsuter is your offset (zero X value). The second top value is the time spacing between adjacent data points (not the entire length of the plot). If you need 100 data points before the trigger, try Top: 0.001, Middle 0.00001, Bottom, your data You SHOULD use proper timing data. If your data is recorded at 1MHz, the middle value should be 1/millionth in order to have your X-axis in seconds. Please note this also only changes the DISPLAY of your data, it has nothing to do with the data's ACTUAL position relative to your trigger. You need to set up your acquisition properly in order to guarantee that.
  27. But which bit? Some bits are actually quite tasty..... 🥓
  1. Load more activity
  • Create New...

Important Information

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