Jump to content

hooovahh

Moderators
  • Posts

    3,432
  • Joined

  • Last visited

  • Days Won

    289

Everything posted by hooovahh

  1. Hello all. So NI is trying something new this year for NI Week. Year after year NI gets feedback from those that attend NI Week and one of the most common things people ask for is more technical sessions. We don't care too much for a marketing presentation telling us how your company is awesome, and we don't really need NI to tell us about some new hardware we'll never use. But coming back from NI Week with new technologies that excite me and make my job get done better, makes my boss want to send me next year. So as a way for NI Week to get more technical, NI has dedicated a room at NI Week to advanced users to give presentations on advanced topics, allowing them to make up their own Advanced Users. This track will be in addition to the other tracks NI usually has for various industries, like aerospace, and automotive. These presentations will be given by advanced developers who are LabVIEW Champions and will focus less on marketing and more on being technical, sorta similar to what you'll see at a CLD/CLA Summit. So checkout Room 15 Tuesday and Wednesday for the advanced awesomeness, you should expect lots of hearty frank group discussions. It seems not all of the topics are posted by NI yet, but here are just some of them. And yes for a bit of self promotion I am giving an updated presentation on XNodes that I gave earlier this year.
  2. Thanks for the link Shaun that is a handy thing to have, but the only OpenG package listed is the 2Kb package, telling VIPM to go download and install all the dependent packages from the internet. So that package without the internet is useless, not sure where all the actual OpenG packages are hosted.
  3. I admit I don't use GIFs in my UI's much, and when I do I usually don't care about how fast they run. But I just did a quick test with this GIF cause it was one of the first results on google, and the speed seemed to match the speed of Chrome for the VI when running or not, with the only noticeable hiccup is when running or stopping the VI. This is using LabVIEW 2015 SP1 Windows 7 x64. Is this a GIF you can post to test with? How many frames are in the GIF? You can be a bit hacky and use a picture ring and invoke the image based on how much time has elapsed. Oh and you can also use a .NET picture box, here is some code I posted a while ago showing how to load an image, but for some reason it isn't animated, it could be a setting with the picture box.
  4. Yeah but what if you have more than 100 elements in a cluster...yeah...I'm not saying it won't happen, but if it does you probably have other issues that are more pressing.
  5. Go to a computer that has OpenG already installed. Go to the C:\ProgramData\JKI\VIPM\cache folder, copy all the OpenG package files to the offline computer via USB. Then go to VIPM and go to File >> Open Package File(s) and select all your files then install. If you have VIPM professional you can create package configurations, which is collections of packages and you can choose to include the packages. I use this and end up with a single VIPC file that can be copied to an offline computer and installed in one step in VIPM.
  6. I am, but I can't speak for others who stumble on this thread years later, and actually Mike had an interesting quote regarding locked VIs. Again thank you for any contribution you share.
  7. Yeah this was posted on LAVA before, but I can't seem to find it at the moment, it is a good resource to have.
  8. Yeah but if it's password-ed no one will see it right? Certainly having a non passworded version would benefit the community more, nonetheless, thank you Zou.
  9. Very interesting, please see if you can find a simplified example that can be submitted to NI. Storing a variant in a shift register is something I'm sure I've done plenty of times. Also I don't know if it makes things easier, but I've been moving away from OpenG functions for cluster manipulation, and choose to use the NI functions, and the Variant to Data trick. Attached is an example where a cluster is turned into an array of variants, manipulated, and then turned back into the cluster. Notice that the Get Type Information also returns the data name. Oh and if you update the cluster you need to set the Cluster size in the Array to Cluster to the right number of elements, the wire will be broken if it doesn't match. I made and XNode to do this but didn't want to add another unknown into debugging this. Of course if this is a bug in LabVIEW this won't, help. If this is a bug in LabVIEW, I'd bet adding an Always Copy inside the loop will probably fix it.
  10. Thanks Jeff, I owe you a beer. Redeemable at the LAVA BBQ if you're interested.
  11. Very excited guys, can't wait. It will just me this year.
  12. I can see an argument for hiding the selector some times. I mean what if every primitive had a selector showing you all the options it supported? If the Add function always had a selector, and you to pick U8, U16, U32, U64, I8, I16...etc it would seem like a bunch of wasted space for the selector when most of the time you just want it to automatically pick based on the data type inputs. But there are times when it isn't clear that a function works this way, and it is somewhat tribal knowledge. Where were you when you discovered the Open VI Reference accepted a VI Path, or a VI name? In this case I can see the developer saying, that the use case is going to be both channels 99% of the time so hiding this selector means saving space for 99% of the people, and then irking 1% of them.
  13. I can't think of something right now, but if I do I will be sure to post. Thanks again.
  14. Oh that's too bad, well thanks for the update Darren, the day 2016 was available for download I would be posting here asking where this is. Jeff since you see there is plenty of interests on this topic, would you consider posting this alpha level VIM in August when 2016 is officially released? I think you would get some valuable feedback from the community, and of course it would be made known just like VIMs are today, a use at your own risk technology, and not to come crying to NI if things break just like several other things we already deal with, like private methods. I'm actually presenting on XNodes at NI Week, and I was keeping a slide blank to discuss VIMs, and I was hoping this new feature could be something I could mention. If not I understand and can't wait for some of this R&D stuff to make it to the community.
  15. I hit like on the first post, and subscribed to notification, but that just didn't seem like "Thank You" enough. This is an awesome set of function, but what compliments it in my opinion is the common templates, example finder examples, and the Youtube video. Having worked with databases a little these really helped fill in some of the gaps I had about how to do things. Thanks again.
  16. Okay I've come back with more, sorry about the wall of text. Attached is a new version with most of the core code unchanged but with several new features. Webpages and VIs that are the pages can have spaces in their name Webpage names come from the VI title if there is one Rectangle decorations now work properly Position and size can be updated periodically by using the config Decorations Can Change or using the Force Update (more on that later) Floating text decorations now work using the Text class Position and text can be updated periodically by using the config Decorations Can Change or using the Force Update, size and boldness are sent only on start at the moment Default Refresh Rate can be set with the config Show Border which is the size of the FP can be set with the config, no way of updating this at the moment but I think it should be able to be Synchronous Requests enable the web page to only request new data, once it has received a reply from the last request With this enabled the refresh rate can be set to 1ms without pilling up requests With this enabled if no request comes in once every 5s a reply is automatically sent, this is in case a request is lost and no reply sent, this is per connection Reduce Sent Data can be set with the config This will look at what data was sent for each object and not send it if the data hasn't changed. The code still has to get all the values and attributes but can help in places where there isn't much changing often. There is a separate list of objects, and what is sent, for each unique session. The first request from the web page is for full data in case things have changed since the time the HTML page was made All controls/indicators on the UI support being shown as an image. Controls that don't belong to a specific class will be defaulted to this mode A control that is an image cannot be interacted with in the web page, except for boolean controls When shown as an image, position, size, and visibility are also sent with each request along with the new image value New Value Only mode for all supported control types This will send just the value of the control for each supported type, position visibility and other properties will only be sent using the Force Update New Force Update function This is a VI that can be called from the main VI that will force objects whos references are passed in (or optionally all objects). This means controls can be sent as a Value Only mode in most situations, but then if a property does change on an object, it can be forced to send its new attributes. The example has been updated to have a button which shows and hides controls, and then an Update button that uses this Force Update function All controls support Visibility size and Position attributes which are sent on Force Update, or if the control is not Value Only This also will update any captions or labels on corresponding controls for visibility, position, and value Progress Bar now supports ranges that are negative, and that don't start at 0 Ranges can be updated if the control is not Value Only, or if Force Update is used Ring controls now can have the items in the drop down updated These are not updated if sent as Value Only, unless Force Update is used Picture Ring now supported On start each unique picture that the picture ring can be is stored as a variable in the JS file, and then the value is sent for which to display Code exists to try to detect duplicate Picture Rings, and only create one variable for each unique set of images, this also makes scanning faster Graphs now support up to two scales properly, but there is some kind of bug with multiple graphs not sure what it is yet String class now supports justification, background color including transparent, font color, font size, and boldness as attributes Captions, and Labels should work on controls now with some support for size External IP address can be set on Publish This is necessary if you want the web page to be accessible from somewhere other than localhost Default Control Behavior is available on Publish Here you can specify an array of control names that should default to Image Only, Value Only, or Value and Position This supports control names that start with a common string too Show Config Dialog on Publish If this is true, or if not all controls have been configured, then the dialog pops up to configure the page settings Config location moved into www directory Reorganization and cleanup Things I'd like to see some day, but I don't intend on working on this any time soon More native control support, things like path controls, tables, trees, listboxes, dials, scrollbars, picture boxes, and Combo boxes Support more graph tools like zooming, setting ranges, and changing other graph settings Support for tabs Support for right click menus if possible RT Support I think this one is possible, if the original static page is generated on the host, and the Value Only is used Multiple windows? Maybe by opening new windows with new URLs. Independent pages for each client Right now all clients share the same view of the same VI, it would be nice to be able to use a clone VI and have it generate new URLs and pages for each connection Better dynamic dispatch for creating the objects Right now adding a new control type is a bit of a pain because dynamic dispatch isn’t used for selecting the class type for a GObject. Doing this would mean just making a new class, and having it inherit from the control class Most VIs with no documentation, and some with the default icons, basically more documentation is needed VIPM Package could be made exposing just the 3 VIs needed, Publish, Force Update, and Cleanup FP Publisher Hooovahh Edit 2.zip
  17. I hadn't noticed any difference in the last couple of days, but my work connection is somewhat slow to begin with.
  18. Oh yeah I forgot about that toolkit. I tried it when it first came out, and realized the core of it was the code I already posted and figured I wouldn't need it. Sure the toolkit has other neat features that my code posted above, doesn't do, but for the most part I didn't need them. I remember some kind of quick color selection option where you could have a single image, and then swap selected colors for the other states of the button. Still not having the source code available makes it quite limiting when you want to automate, or pull pieces apart for your own needs. I think this used to be be a paid product but now appears free, I also don't remember the internet requirement when I used this before but maybe it was.
  19. You make some good points, but I don't completely agree: Ever been to a robotics competition? NI is pushing their stuff there for sure. Then there are the engineering colleges that offer LabVIEW courses for those that aren't CS/CE. I'm not blind to changes, but I'd hardly call it a demise, especially in my personal life in the surrounding job market where I got 3 job offers in the last 3 weeks, and I'm not talking about random Linkedin recruiter messages.
  20. There are plenty of online resources both free and paid for learning LabVIEW. NI Learning Center NI Getting Started -Hardware Basics -MyRIO Project Essentials Guide (lots of good simple circuits with links to youtube demonstrations) -LabVEW Basics -DAQ Application Tutorials -cRIO Developer's Guide Learn NI Training Resource Videos 6 Hour LabVIEW IntroductionSelf Paced training for studentsSelf Paced training beginner to advanced, SSP Required NI also periodically offers courses in LabVIEW. But the way I learn best, is to actually do the work. So having some projects that push the limits of your knowledge, and force you to do research is what I recommend. Short of shadowing someone who knows what they are doing.
  21. I have no sources but also have heard R&D mention how IPE for clusters just forces the compiler to do something, where using an unbundle modify bundle, will have the compiler do what it thinks is best, and in simple cases like this the compiler will choose to do the same thing as what the IPE would force it to do. The most recent thing I remember AQ saying is something along the lines of, tell the program what to do, and not how to do it, and the majority of the time you will be better off. There are of course cases where the compiler will choose to do something it thinks is better, but with some testing you can force the compiler to do something more efficient. On topic a bit, I do commend your implementation for not over engineering. Most of these improved error things I've seen involve many layers and layers of objects of objects with so much overhead I can't imagine using it. As others have said the ever growing arrays could be an issue, and I also share the comment that the most important part is the error being logged. In the past I also had a system where the last 4 states of the state machine would also be logged when an error happened, so you could see what states it when to leading up to the error.
  22. Sure thing, I had to clean it up a bit but here it is. Attached is some code that I originally found in this thread showing how to read the contents of a control file, and replace a section with a new PNG. I think one caveat is the PNG that is being replaced needs to be larger (in file size) than the new PNG but in my tests I haven't seen an issue. https://decibel.ni.com/content/thread/4901 Extract the attached code, and run the Replace Button Decals\Create Multiple Controls From PNGs.vi It should set the control values on first run to paths relative to the running VI to use the example images and controls included. It will make a control for each PNG in the directory chosen. This will replace the decal, the VI Icon, change the label, the button text, and VI title so that it can be packaged up with VIPM nicely. I also included a VI to extract images from controls. Create Multiple Controls From PNGs.zip
  23. Well the community thanks you for your effort. In the past I could automate replacing button decals with ones from other PNG files. So I was at one point able to just script out a few hundred system buttons, with glyphs from an open library. This worked out well enough, but I still ended up having to do some manual manipulation of every control.
  24. I did not know that this was a semi-standard, but I think the majority of the time I have used checkboxes it was in this type of UI.
  25. I've had issues with switch controls like these in the past with users who aren't exactly sure what the states of the switch are the first time they use it. I don't want to say it is unintuitive, it is just one of those things you need to some times learn the first time. Don't get me wrong I like the look of the flat controls you've shared and I can see using them, but I can already hear some of my users when they see the switch the first time, and see the text "OFF" they will ask, "Does clicking this turn it off or is it off right now?" As soon as you've seen the two states of the button it is quite clear which is ON and which is OFF As a result I generally try to use system checkboxes, radio buttons (with two states with text for each), or a drop down, like a system enum.
×
×
  • Create New...

Important Information

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