Jump to content

hooovahh

Moderators
  • Posts

    3,388
  • Joined

  • Last visited

  • Days Won

    283

Everything posted by hooovahh

  1. Okay so here is the VI I came up with which is similar to the one jdunham posted earlier but this has a few improvements. It finds the local decimal separator (discussion here). It only allows one decimal separator. It only allows white space in the beginning or the end. I feel a space between numbers is no longer a number because the String to Number conversions don't work right if there is. I added support for Hex or Decimal strings. Oh and this version supports things like ".1" where the one posted by buckidge would not work correctly. It does not use regular expression but generally regular expression is slower than custom code. I could be wrong so post a version that does this with regular expression and we can compare. Saved in 2013. EDIT: It now support negative numbers as well. Is String A Number.vi
  2. This is nice and all, but I feel like not many users are going to have a need for this. The RCF was a great innovation and I thank JKI for what they did. But as far as I know the RCF hasn't worked in something like the last 4 years of new LabVIEW releases. I might be wrong but I think 2010 was the last version it worked in. Please correct me if I'm mistaken. And while I feel the RCF had a relatively large user base, I'm not aware of many developers using LVS daily. But again I want to state that I both support and like LVS and RCF, I just don't use them, and would rather stick with the native solution of QD, even if it has many limitations that the other alternatives don't. So what versions of LabVIEW do you use? and how much do you use RCF and LVS? Oh and as a possible improvement could you have your tool auto detect what QD plugins are installed and have a drop down of them to choose from, in addition to the VI path control you already have.
  3. It was a very painful thing to watch. We were actually at a movie theater waiting for the show to start and he pulls out his phone and starts coding. The slowest coding you've ever seen.
  4. This is true but I have seen developers remote into a PC from a phone and then write code from their phone. Of course that would drive me more crazy than having to use a touch pad for programming but I've seen it done.
  5. Your second link doesn't work by the way. Yeah it is odd to have a new feature in a SP1 but it looks neat and I hope can help make tracking down those pesky memory issues easier.
  6. I sure hope not. Have you used XNodes? They have all the functionality of generics and a ton more. Heck I'm sure the original question could be solved with a simple XNode. I want type adaption that is better than polymorphics. But I also want custom help, icons, growable nodes, custom right click menus, and edit time scripting. The good news is this technology has been developed and used by NI for quite some time. The bad news is they aren't ready to support it as a product. When scripting was official I was ecstatic. If / When XNodes are supported as a product I will likely drop all other work I'm doing and focus my work on supporting and releasing tools that I've wanted to write and make official for years. Few things could NI do today that would make me happier.
  7. Please don't generalize. The testers I use, are I think the feeling around here, is test systems can fall apart for any number of seemingly insignificant reasons. And if my tester blue screens after a Windows update, I'm going to blame the update. And if my program was working fine on F1 patch and then it auto updates to an F2 patch and all of the sudden things stop working, my boss and customer aren't going to give a hoot what cause the problem they just want it to not happen again. Having as much control over that environment as possible helps me ensure I can do my job. I see automatic Windows updates, automatic driver updates, automatic patches, anti-virus, and firewall programs and ways of me loosing control over my environment.
  8. There are several discussions on LAVA about what references should and shouldn't be closed. The statement that I think holds true about 90% of the time is "If I did something to open a reference in my code, then I need to close that reference". Did I use OpenVI reference? Then I need to close it. Did I use a reference tied to a control? Or the ThisVI reference? Then I don't need to. It starts to get a little confusing with things like an invoke node that can give you a reference to an already open thing. But throwing close references around shouldn't cause any problems. LabVIEW will try to close that reference, and realize it can't for some reason, like the VI that owns a control is still in memory and it won't do anything. I've often wrote a simple VI that is just a while loop that runs forever, which will perform some kind of operation that I think might be making new references, over and over without closing. Then I'll look at the memory usage in the Task Manager. If it doesn't go up, then that reference doesn't need to be closed, if it does then I need to close it.
  9. This isn't too difficult. Once you have the read data as an array, go into an auto indexing for loop and process each row one at a time. Then concatenate the sum to the end, and rebuild your 2D array before writing it again. Attach the code you've tried.
  10. Thanks for this, I always assumed it was NI just putting resources into making something that users didn't want. Now I actually know it is the users fault for asking for something that they shouldn't need.
  11. Are you talking about the NI Service Updater thing? Yeah I have never used that to update any PC, and never will. I have a hard time trying to convince it to stop bothering me. I don't upgrade software, drivers, operating systems or anything in the PC ecosystem unless there is a good reason. It just adds new risk changing the environment from what you've been using. So unless you are in an academic environment, or just playing around and not making production level applications, why would I ever want you updating a thing?
  12. So the app.allcontext property node is a private method. It is something NI uses, but doesn't fully document, doesn't support, and I'm sure they'd prefer if no one other than NI used it due to it's possible non-completeness. You see if NI is playing around with some new property nodes that are private, they can change the behavior between LabVIEW versions without needing to update the public, or worry about backwards compatibility. Because they should be the only ones using it. But if us pee-ons start using these functions, and then they change how they work between versions, now all the sudden users of LabVIEW complain to NI about how some obscure private method broke their production code. That being said many private methods have useful functions, that appear more or less stable. Over the years NI has tried opening up more private functions, to be public and to that I thank them. But I'm not sure this function will be made public any time soon. With it you can screw around with the inner workings of LabVIEW. But if you are the adventurous type, you can enable these private methods. Here is a thread where I made a tool for enabling and disabling these methods. https://lavag.org/topic/16612-enabledisable-private-methods/ But please be aware that code that uses private methods can be dangerous, can change functionality at any time, is undocumented, and can break things. You also won't get the support you might want from NI.
  13. I quite like SVN. Yeah I know there are times when it has problems and you need to do some manual fixing, but those are generally times when I screwed up. So I just try to not do what I just did again. The problem comes when every person using SVN needs to learn those lessons one at a time. You can say "Don't create orphan locks" but until you learn it and fight to fix some SVN screw up you won't remember it. I could probably get used to some other SCC but it does what I need.
  14. Some have asked for the Variant Repository VIs to be available as non-XNodes. So I wrote some scripting code to make polymorphic instances, edit VI icons, and make the polymorphic VIs. But what I hope this illustrates is just how useful XNodes are. The Non-XNodes version is 252 VIs and one control. That's a lot of VIs to have to load into memory when using these polymorphic instances. That's 60 normal VIs inside each of the 4 polymorphic VIs. And it doesn't even support all of the features the XNode counter parts do. From a reusability stand point polymorphic VIs have many things that make using and maintaining them difficult. From the number of files loaded, to custom help, icons, and terminals from each instance, along with supporting more types than the polymorphic could. Don't get me started on when a bug is found and it isn't something you can easily fix with scripting. So then you need to open up each of the polymorphic types and make changes to each one. Oh and ever try to use the polymorphic editor with 60 instances? Yeah I've stopped trying and use a combination of tools so I never need to. Some day, hopefully NI will be able to invest the time needed to make XNodes an official feature. But until then I'll likely need to support many polymorphic types, when XNodes aren't trusted. Variant Repository Non-XNode.zip
  15. Is there a reason you are re-inventing the wheel? If there is a good reason like trying to understand how to communicate with a DLL then go right ahead. But if you are doing this for some fear of using NI-VISA I'd highly recommend you confront your fear.
  16. Topic moved. Also have you contacted NI about this? If this is a real problem they will want to make a CAR for it so it can be fixed.
  17. No problem. I know the stigma around express VIs very well. To be honest I only use two express VIs in a very large amount of my own code. The Elapsed Timer, and the File Dialog. When I do use them, I try to always view them as a normal subVI and remove the label. Still for these two functions, the simple stuff just works. Sure it doesn't have a pause resume feature, but when I need that I'll start with the Express VI, convert it to a normal VI, and then add that funcion. I try to use the native functions first, then OpenG, then other 3rd party tools, then I'll write my own if none of these options fit my needs. I'm sure others prefer similar chain of tools. There are goofy times that maybe the native solution works, but only for half the cases in which I need to remember what ones work in what cases and what ones don't. Like it is nice that there is now a native "Get File Extension" under File I/O. Too bad it only supports the path data type, and not the string like OpenG. In this case a path to string conversion can fix it but there are several examples of this type of partial overlap in functionality.
  18. Oh yes that is a nice little trick to use. Be sure and share that nugget when you find others that don't know that is how it works.
  19. So I know this is a few years old, but I wanted to update it. I stumbled across Altenbach's post here, about converting a 2D to a 1D array. So I combined his code to the code in this post and made two polymorphic VIs that support a few more features. From the 2D to 1D it has several more polymorphic types, and supports concatenating by rows or columns. From the 1D to 2D it has several more polymorphic types, supports specifying the number of rows, or number of columns to make, and supports iterating over rows, or columns when splitting. I wanted to make individual icons for each polymorphic type but didn't get around to it. I also pulled these out of the LLB but admittedly that was just so it was easier to work on, on disk. 1D to 2D Array.zip 2D to 1D Array.zip
  20. Is there a reason you are using this function and not the native "Elapsed Timer" express VI? I've never used the OpenG function and wasn't sure where one would be better suited than the other.
  21. Here is a quick solution that just looks at the value change seeing if the string changed value and if it did read the value of the boolean. A better solution might be to look at the Mouse Down event, and find which index the mouse has entered then read the boolean value and do something else like force key focus off of that control so the user has no way of even entering a string. The way it is right now is sorta strange where you are allowed to enter text in the control, and then it revers back. I feel like a better user experience would be to prevent them from entering the control in the first place. EDIT: Okay another quick and dirty solution, poll the key focus of the string and if it is true then read the value of the boolean, and if it is false, then remove the key focus. I did it this way because with the mouse down event you could still tab into the control, and edit the string control. This way is less efficient because you are checking for key focus but it prevents this edge case. Editable Disable Array.vi Editable Disable Array Poll Keyfocus.vi
  22. I understood some of those words...okay no I didn't.
  23. Your sentence doesn't make sense. That being said no one in the beta program is allowed to confirm or deny the existence of new features due to the agreement with NI. There is no need to spread rumors about what is or isn't in the beta. However, having a discussion about what things you'd like to see in the next version of LabVIEW is fine.
  24. You should really attach your whole build log. That being said the FPGA compiler has gotten much better of the years and can help pin point where in your code the problem is. I'd expect 2013 to give you more debug information. Also if possible post your code.
  25. So my company has site licensing for Windows products. So for me I'll make a new VM (right now I prefer VM Player). When making a new VM you provide the ISO and Windows license and it will do the rest. Then I activate Windows the normal way, if it didn't do it automatically. Then I setup my VM the way I like with various utilities, .NET installs etc. Then I'll shutdown the VM and copy away the virtual hard drive as a clean OS. Then I'll make multiple VMs using a copy of my clean OS multiple times. In each VM I'll install the one version of LabVIEW, along with the appropriate drivers and libraries for that project. When I have a new project I'll make a new VM using that clean OS I backed up. Each VM is then using the same site license of Windows, and each is already activated. Getting major updates can be a bit of a pain, but I just try to keep whatever VM I'm using frequently up to date. Windows 7 also comes with XP Mode which essentially means you get Windows XP in a VM for free. So licensing there is taken care of. I would just make the clean OS in the same way I mentioned before. This means being restricted to XP 32-bit, which is too limiting right now which is one reason I go with VM Player which supports 64 bit guest OSs, and multi-core support.
×
×
  • Create New...

Important Information

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