-
Posts
720 -
Joined
-
Last visited
-
Days Won
81
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by LogMAN
-
messenger library Instructional videos on YouTube
LogMAN replied to drjdpowell's topic in Application Design & Architecture
You probably got it from this KB article (also includes VIs for other platforms): https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019NZfSAM -
If memory serves right, this is because LabVIEW does not take Windows themes into account. Essentially, the window drawn by LabVIEW gets surrounded by a border that is provided by Windows. You should see different results if you change your theme to one that has smaller or no borders. Also, Window Bounds does not include the window border. It is implicitly mentioned in the context help: "The four elements in the cluster are the top, left, bottom, and right values of the front panel window, which includes the interior region, scroll bars, title bar, menu bar, and toolbar." Your best bet is to use Window Bounds and subtract the border size manually. Unfortunately, it will break again if the user changes themes.
-
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
This is what happens when you change the UI scaling while NXG launches (because what else is there to do?) And icons can be a little frustrating at times... Icons make me happy.mp4 -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
One thing I absolutely like about NXG is the fact that it goes to extreme levels for absolutely no reason. What could possibly go wrong? Yes, this is a single VI. NXG 4.0 has a terminal limit of 128x126x126x128. Yay, no more clusters -
I'm putting this out here in case anyone missed it. NI has made all of their online training courses available for free to the global engineering community. The period was just extended to at least May 31, 2020 (previously April 30, 2020). Those who are new to LabVIEW and want to start with LabVIEW Community Edition should take a look at Getting Started with LabVIEW Community Edition. For further reading, check out NI’s Response to the Evolving COVID-19 Situation.
-
- 1
-
-
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
-
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
This works for me: https://www.ni.com/en-us/support/software-technology-preview.html And I always thought the only way was via the beta program: https://www.ni.com/support/beta-program/ -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
-
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
That is even better, haven't thought about it. Is there any chance of this changing? It would also be really great to have an idea exchange for NXG to discuss things like this. I want to support the effort, but sending out one-way tickets is very frustrating Thanks for reminding me, this is something I'm very excited for (and almost forgot about 😅)! You are right, those icons make it super easy to distinguish. Kudos for spending time on this -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
(Un)fortunately only someone who actually worked with CG is able to tell the difference, which makes NXG easier to sell to new customers than existing ones. Just a few clicks and you get your shiny graphs, overviews or packages. @Aristos Queue mentioned before, that NI lost business opportunities because of the old fashioned UI of CG. I'm pretty sure we are not the target audience of NXG at this point. Maybe in the future. Until then we can still spend our money on CG. Really, there is no incentive for NI to listen to our complains right now and I don't expect them to. Nevertheless, I'll keep an eye on NXG and on how it evolves in the future. Until then we can share our experience and ideas here and prevent each other from regretting horrible decisions 😉 -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
Yes, the execution system hasn't changed but the appearance did, at least from a users perspective. LabVIEW CG has a clear distinction between the two, which doesn't exist in NXG. Classes and typedefs are both represented by the same kind of object (G Type). Although their abilities and representation is different, they are represented as the same kind of thing. If you take a control in LabVIEW CG and turn it into a class, you choose "Convert Contents of Control into class" and it becomes an entirely new type. In NXG, however, you can simply add class functionality. Now, unless a typedef is a class in secret, there is no way to simply add class functionality without converting it into a class first. Maybe I'm reading too much into it, but this is how it appears to me. Yes, the amount of types and what they represent didn't change and I understand the technical reasons for how they are implemented, but why use the same file extension? I work with engineers who don't know the difference between a class and a struct (and they don't care). What I'm afraid will happen is this: Here is the same thing in CG For all I care, the file contents of a typedef can be equivalent to a class. I don't even mind if a typedef was a class in secret, as long as they are easily distinguishable by the end user (i.e. me). That is currently not the case. That is good news. Maybe it was addressed in 5.0, can't wait to try it out. Need to wait for the VM to finish though. -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
You mean the same committee that works with Visual Studio all the time? I wonder where they get their ideas... Yes, that is a bummer. Actually, the thing they call "G Type" serves as a strict typedef, but it is really just a class that doesn't inherit from gObject (it inherits from Void). Since classes cannot be nested in LabVIEW CG/NXG, the only way is to put both of them inside a common library. Now, where have I seen this concept before... -
NXG, I am trying to love you but you are making it so difficult
LogMAN replied to Neil Pate's topic in LabVIEW General
@Neil Pate Thank you so much for sharing your thoughts. I have also been playing with NXG (working through the NI online courses) for the past few days and my impression is very similar to yours. NXG has a lot of interesting and useful features that I really want to use as soon as possible but at the same time there are so many little things that either don't work, are missing or very annoying to use. At this point I'm still interested in learning about all the features of NXG, without any intention to use it for any serious application in the foreseeable future (3-5 years). Nevertheless, this is a chance for me to give feedback to NI on all those little things. With NXG 5.0 around the corner I hope they address many of the "obvious" problems in 4.0. In any case, I intend to treat it as an early-access platform rather than a released product. In my mind NXG 4.0 is really NXG 0.4. One thing that really frustrates me is that there is no platform to suggest ideas and vote on them. The feedback system in NXG is a one-way ticket. You can do it from an open ended wire branch, which is one of those annoying things not intended by NI. Create an open ended wire branch, right click on the end of that wire and create the primitive you desire. You can see in the screenshot that the menu allows you to access the array palette. Not very user friendly imo, but still better than surfing the palettes on the left. -
This class control (or constant) is permanently broken
LogMAN replied to pawhan11's topic in LabVIEW General
You should include a link to make it easier for others to find: https://forums.ni.com/t5/LabVIEW/This-class-control-or-constant-is-permanently-broken/m-p/4040676 No, this is the first time. However, I used the LabVIEW Resource Editor to look at the default data of those controls and they expect the class library inside a project library ("BBP Database Processor.lvlib"). <DefaultData>"%00%00%00%011%1CBBP Database Processor.lvlib%12Operations.lvclass%00%00%00%00%00%00%00%00%00%00%00"</DefaultData> You probably moved the class out of the library without saving its members (not sure about the exact steps, actually). You should revert your code to the last known good state. Hopefully you have version control in place. Alternatively you could try moving the class library back inside the project library. That might fix the VIs. -
Need way in G to get monitor size minus taskbar, OS independent
LogMAN replied to Aristos Queue's topic in User Interface
I don't know of a way to do this OS independent. Here is a VI that gets the monitor and workspace area for any monitor, given a screen coordinate. Of course, this only works on Windows. Workspace.vi -
Cross post: https://forums.ni.com/t5/LabVIEW/Data-Variable-Toolkit/td-p/4032397
-
Add menu to LabVIEW Options Window
LogMAN replied to Nicolas Bats's topic in Development Environment (IDE)
Not that I have ever done it, but the sources are located at <labview>\resource\dialog\PreferencesDialog. There is even a page template, so it might be possible somehow: <labview>\resource\dialog\PreferencesDialog\PreferencePages\pageTemplate.vit -
Reusable Events Between Parent and Child Classes
LogMAN replied to GregFreeman's topic in Object-Oriented Programming
Indeed, there is (to my knowledge) no way to achieve what you want with pure dataflow. You could put your string in a DVR and make it part of the parent state. As long as you keep the DVR contained inside the class, its behavior is well defined and can be documented. Of course, anyone who uses the class needs to be aware of the caveats. -
Reusable Events Between Parent and Child Classes
LogMAN replied to GregFreeman's topic in Object-Oriented Programming
Yes you can. Have a dynamic dispatch EventHandler.vi that handles the events from Parent in Parent:EventHandler.vi and a Child:EventHandler.vi for every child. Use Call Parent Method in Child:EventHandler.vi parallel to the event loop of the child. Only the Stop event needs to be handled by each child. Here is an example I put together (saved for LabVIEW 2013): Reusable Events 13.0.zip -
Actually, if you turn your cluster back into JSON you can compare it to the original JSON string to see if there are any differences. The string is empty if every element is defined in the source string. Try this: Extract Parameters.vi Notice the "Differences" string, which lists all differences (missing elements) in your source JSON string.
-
@ThomasGutzler here is a version that does most of what you describe. The order of elements inside Parameters doesn't matter. You can use enums. It doesn't matter if the JSON string has additional elements (no error) However, you don't get an error if an element is missing ("two" in your example). That would require something like a "strict" mode, which I don't think is supported by JSONtext. Unfortunately code is removed from VI snippets on LAVA, so here is the VI. Extract Parameters.vi