Jump to content

hooovahh

Moderators
  • Posts

    3,392
  • Joined

  • Last visited

  • Days Won

    284

Everything posted by hooovahh

  1. 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
  2. You're welcome to do what you want with your contribution to the community, but I generally recommend code be posted in the Code Repository here on LAVA. This has version tracking, it generates a new thread for submitted code, so user discussion can be linked to the code posted, and a few other benefits like download number tracking, etc. Generally you post it as uncertified then if interest level (and time) permit it is updated to certified. Here's another link on how to submit code. https://lavag.org/topic/10351-how-to-submit-code-to-the-code-repository/ https://lavag.org/topic/10350-how-does-the-code-repository-work/
  3. I think this might be the missing VI, it is in VI.lib and just converts row and column values into strings that the ActiveX function uses to form a cell like A1 <LabVIEW Install Director>\vi.lib\addons\_office\_exclsub.llb\Row Col To Range.vi The other missing VIs just relate to the ActiveX reference, which you can get using the Excel Get ActiveX Reference in the report generation palette.
  4. Yes SCC is a must. In my opinion LabVIEW works best with the Lock, Commit paradigm instead of the Commit Merge. Basically the concept is that you talk to a central server and that server only allows a file to be edited by one user at a time and can't be edited by anyone else until that user is done with that file. SVN for me has been a pretty good fit for that type of work flow, and using tortoiseSVN is the most convenient way of doing that. That being said Perforce, along with a plugin allows for explorer integration. I only used Mercurial once, I was under the impression it was a merge paradigm. After SCC I'd say some kind of code review process. Have your best developer or two champion a pilot program where you run the VI analyzer on someones code, and then discuss the improvements it suggests. These developers should know the difference between perfect code in the eyes of VI Analyzer, and code that is acceptable. By that I mean ignore the errors that can be justified. That will help with some kind of standardization of code, and help train newer engineers with techniques they should be trying to use. After some time you'll notice each user will start to develop their own collection of coding nuggets. VIs they commonly use that do some task well and has been tested on several projects. After you see some ad-hoc code sharing taking place you should think about a formalized reuse library. At first you want to make it as informal as possible to encourage usage and collaboration, while not being so loose that code quality falls. VIPM is a great tool for this and honestly the only way I would want to implement a LabVIEW reuse library. You can do a bunch with the free version but pro might be needed for a few developers, or everyone depending on your usage. Virtual Machines might come next. A sandbox environment that can isolate projects from one another in a way that ensures no accidental saving of a LabVIEW 2009 in in 2015, or using DAQmx 15 on a project that hasn't been tested with those drivers. Just like reuse you can start with a basic setup with just a VM with each version of LabVIEW, or a VM for each project. There are also tons of advanced tools taking snapshots of projects keeping file size to a minimum. VMs are optional of course, but then again so is SCC to some. Depending on your needs you'll want formal documentation, and this may come at any time. A requirements document stating what the software should do, a design document made before coding begins and is updated as the design changes, and possible test documents showing that the code you wrote was what you wanted, and that the software does what it was required to. There's lots of other harder to quantify things like a good mentoring environment, clear leaders in the company like a Chief Software Architect who can plan long term goals, encouraging going to local user groups or other training opportunities, etc.
  5. If this is an NI installer, look at the Setup.ini file in the same directory as the EXE. In there is a section for the Distribution, and in there is a key for Version which is the version of the installer. I have some code that's not quite complete, which performs automatic updates, and it does this by seeing if a version on a server is newer than the installed version. By looking at the registry you can see the version of the installer that was last installed using the GUID found in the installer. Then there's the added work of seeing if an EXE in the installer is currently running, and if it is, don't perform the upgrade automatically but instead wait, or prompt the user to close it.
  6. I'd suggest sticking with one of the other threads where you are getting help already. And in there I'd suggest you make clear requirements on what you want, what you've done, and what isn't working. I've seen several people post examples, and tell you what you need to do, but every time you get an answer it seems you have a new question, which is fine but continuing a thread with new requirements for multiple pages can make for difficult discussion.
  7. Open the XNode in LabVIEW. Yes double click it. You can't do much with the library since it is locked having no license, but you can perform a File >> Save As, where you can rename the library, or make a new copy. Afterwards you click Save All and it will save all the members to use the new library.
  8. I'm pretty sure you could do it without saving. You'd have to get a reference to the VI in memory, and insert that instead of using it by path, but this design is easier to implement and understand, but by name is probably possible.
  9. Hey I didn't see anyone else posting code on this topic. Besides I wanted there to be alot of flexibility. I'm not using any external DLL, just .NET for the image scaling. But even so why should that matter in an XControl? An XControl is just a VI that calls some external interface like any other VI. The image scaling could be done natively but wouldn't support alpha layers which is kinda important for this, and it would be much slower, and the scaled image wouldn't look as good, I've tried.
  10. Well there are tons of other cloud serves that just integrate into explorer. You just copy files to some designated folder and it gets uploaded. Have you tried OneDrive, or Google Drive? Both have some free space. There's also FTP as an option, if you have a server to connect to.
  11. Uh, what additional tabs would you want it to show? It's unlikely to work anyway since these pages are probably very tightly coupled to the control, or front panel object, and even if you were able to say take a tab shown for a string control, and have it show up in the decoration, I doubt things would work right. What are you wanting to add? It might be a good idea to post on the Idea Exchange where you can suggest future features of LabVIEW. http://forums.ni.com/t5/LabVIEW-Idea-Exchange/idb-p/labviewideas
  12. You aren't mixing features, LabVIEW can save and open in XML. Extremely experimental. Don't be surprised if it falls on its face with complicated VIs, mixing libraries, classes, XControls, etc. https://lavag.org/topic/19173-anyone-else-interested-in-low-level-vi-editing-i-found-some-helpful-stuff/ Basically it shouldn't be used but is fun to look at.
  13. Multiple Crossposts going on here, and this one linked in the previous. Discussions seem to be all over the place without ever changing requirements of what OP wants.
  14. I've back saved it to 2011, but it will make the code even uglier than it was already, because I used some of the conditional tunnels, and concatenating tunnels, on for loops. Back saving code that uses these features earlier than 2011, makes functionally equivalent code, but uglies up the block diagram. Making a good XControl is not an easy task. And in this case you need to try to think efficiently. If I update the top tab area with a property node, we need to only redraw that. Same with inserting a new button or group, or tab. Ribbon Interface Test 2011.zip
  15. Crosspost where DataFinder is mentioned.
  16. Crosspost #1 Crosspost #2 (linked in #1) The code isn't doing much. Besides needing 2015 you also need the control and simulation toolkit for some reason. This is a post processing technique with the Simulate Signal being used for now. A while ago I had a need to look at every cycle of a square wave looking for drop outs. Here is my post on NI's forums with a VI at the end which could detect if one cycle was missing. Using a modified version you can look at each cycle of the sine wave. http://forums.ni.com/t5/LabVIEW/Detect-PWM-Drop-Out/td-p/2610921
  17. You mentioned taking multiple screenshots to see it in detail and so I wanted to describe how to share code. But at the same time I wanted to give you the information on how to find the information yourself.
  18. Did you read the Elapsed Timer function? Did you write a test VI? What is unclear about what I described? You may also benefit from some free training. -LabVEW Basics -DAQ Application Tutorials -cRIO Developer's Guide Learn NI Training Resource Videos 3 Hour LabVIEW Introduction 6 Hour LabVIEW Introduction Self Paced training for students Self Paced training beginner to advanced, SSP Required LabVIEW Wiki on Training Send Email On Timer.vi
  19. Posting code on the forums can be done in several ways. Taking screenshots of open windows is not one of them, pictures cannot be debugged or executed. The comparison is you wouldn't take screenshots of notepad and post them on C++ forums. Most people use snippets for small single VIs, which embeds the code in the PNG picture. http://www.ni.com/tutorial/9330/en/ Other ways are zipping the project and all code dependencies outside of standard libraries shipped with LabVIEW, then posting that zip. Drop down the Elapsed Time express VI (timing palette or search the palette), open the Context Help (CTRL+H) then hover over the function. It will describe how to use it and what it can be used to do. Then you could write a simple test VI that demonstrates how it works. Hopefully once you use it, looking at the inputs and outputs, the usage will be clear.
  20. My suggestion is to refactor your code so no one VI takes up more than one screen. Or if it does it scrolls in only one direction. Oh and I'd also run your code through the VI analyzer to get an idea of what things can be improved, like wires going backwards, objects on top of each other, measuring code complexity and finding recommendations for compartmentalizing the code into subVIs, etc. But to your specific question I'd say the simple solution is to used the Elapsed Timer express VI and configure it to tell you if some amount of time has gone by, and your condition has been true this whole time, resetting it if the condition is no longer true. There is an input to the express VI for this.
  21. I believe you only need to have one CLD, or CLA on staff. Here is the page that has some very not concrete requirements, but to become the lowest level of alliance member doesn't look too difficult. http://www.ni.com/alliance/join/
  22. Yup, still down. I don't know who maintains it but I sent Michael an email asking if he knows. I hope it isn't discontinued, while I didn't use it often, some of the information on there was still very relevant, even if some of it was dated.
  23. So maybe a strange question, but what's this conversion do for you? The information is already available in that original variant. All this does it convert it into another data type.
  24. Uh...variant to data the primitive that turns a variant into the data type you want, if you know the data type, which it sounds like you do. The OpenG stuff is most convenient if you don't know what you data type is. This is most common on APIs that are made to be more generic and detect multiple data types and act on them differently, or for things like message communication APIs when the payload can be anything. Oh and if you have a cluster and want to turn it into an array of variants you can use the variant to data here too, telling it to convert into an array of variants. Post your actual data types so we can help more. EDIT: Maybe something like this?
  25. After that does it open and run properly? I really should install some other versions of LabVIEW, for stuff like this.
×
×
  • Create New...

Important Information

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