Jump to content

MikaelH

Members
  • Posts

    835
  • Joined

  • Last visited

  • Days Won

    49

Everything posted by MikaelH

  1. If anybody have time to update it and make it better and more fun/addictive to use, please feel free to share. I thought about adding it in the Project Secondary provider start-up VI, so the users have to get X of Y correct QD placements within z seconds, before it lets then continue using LabVIEW. Maybe depending on their score, they'll need to do it more often So suddenly when they do a LabVIEW2012-folder update, they get this function installed automatically.
  2. Yes, I do have a repository for every LV version :-) Also every time I release/build an exectutable, I tag both the Project Folder (e.g. MyTestSystem-PN:123546-Rev:C12-2012-05-03) and also my LabVIEW repository (LabVIEW2012-2012-05-03-MyTestSystem-PN:123546-Rev:C12), that way I can alwasy get back to the environment I had when I did the build. In case you don't have an internet connection, I would go with a VIPM package. For the LabVIEW.ini file, we only update shortcuts to use a company defined shourcut list, but the VI we run to update the LabVIEW.ini file also updates all your prefered settings. So the user selects his name in a drop down list and then it will configure all his LabVEIW.ini files to his taste. Yes I did mean all, this is how my LV folder looks like.
  3. I use SVN :-) It's so easy. We have a shared LabVIEW 2012 repository, that all the companies LV computer check out into their LV 2012 folder. TortortoiseSVN will of course complain that there are files in the folder, but that's fine. In this repository I've not added all files under the LabVIEW folder, but most stuff under user.lib (where we have the companies common VIs, and of course OpenG) and instr.lib (where we all the shared instrument drivers, more than 100 lvclasses) But I've also checked in all RCF files needed, the QD plugins and of course GOOP Development Suite. To update the LabVIEW.ini file with QD shortcuts, we have a VI in the repository that updates the shortcut so everyone gets the same. I found this way easier than vipm, to make sure all development system uses the right sets of VIs. I suggest you try this, it's so easy, and has been working really good. //Mike
  4. My job is to make sure my team works faster and more efficient, and also have more fun, I just need to add some high scores as well then we can have a competition :-)
  5. We all know that Quick Drop is a good tool to make you faster, and in combination with shortcuts, you’ll be even faster. To get all LV developer in my team to use the same shortcuts, I push the same shortcuts to everyone, but how do you remember all the different shortcuts? To solve that I made a small Quick Drop Practice application, feel free to play and modify it so it suites you. And if you have time to improve it, upload your version :-) How it works: It reads your current QD BD Shortcuts, and adds them to an array. It then opens an empty VI BD and asks you to drop a VI (e.g. Build Array), on the BD. If you haven’t figured out the shortcut within 5 seconds, it shows the shortcut so you can memorize it. After it find the right VI on the BD, it deletes it and moves to the next shortcut. Have fun. QD-Practice.vi
  6. Just Create a method called "HasGUI" and let anybody override it and return True, if they want you to call it.
  7. Thanks, I have both 32 and 64 bit versions for 2013b2 and I can test it this week.
  8. I tried it the two projects and as soon as I run the Server Example all classes becomes locked as expected in that projects I then Run the Client-Server Examples and all classes gets locked in that Project just like it should. I did press some buttons on the client, and then closed the Client-Server VI, and all classes got unlocked. Then I close the Server Example VI and all classes in that project also got unlocked. So I can’t reproduce your problem, sorry.
  9. It could be that a reference has been opened in Project Provider Application Instance. Are you using and Project Providers, such as G#, GDS?
  10. I'll definitley put this is a Q-Drop shutcut-VI, just have to find an avaiable Ctrl-<key> combination. First version Ctrl-F Norms version (slightly modified) Ctrl-Shift-F AQ's Version For Loop pass Through-SwapTerminals.zip
  11. Try the links to the right of this URL: http://www.symbio.com/services/qa-testing#goop Symbio has moved around and cleaned up there web pages, but not got it working properly yet. I've contacted them. //Mike
  12. I have a very simple written an example app taken from the Head First's design Pattern book. Look at the Command patterns here: https://decibel.ni.com/content/message/35117#35117 But basically you have to (not maybe have to, but if you want it scalable and reusable) use the Command Design pattern, (and together with the memento pattern to get a very scalable solution). This is just one link that descripbes it. http://www.codeproject.com/Articles/33384/Multilevel-Undo-and-Redo-Implementation-in-C-Part Cheers, Mike
  13. You should not need to call the base ancestor's implementation, if there is a sub class you inherit from that overrides a base class method you should call that. If you don't think that is right, you should not inherit from the sub class but instead inherit from the base class.
  14. This way every DUT owns/has a Message Class in its attribute. A message class type (e.g. Type A) could be used by DUT Type A,B and C, and Message Type B, could be shared between DUT Type D,E,F Look at the example to see how I implemented it. I don't know your requirements, but this is one design I could think of.
  15. I’m sure we’ll get interface sooner or later to LabVIEW, in the mean time we have to implement it ourselves in different ways. Here a thread and one example I use: http://lavag.org/topic/10621-interface/ I’ve not documented the Interface class template and how to use it, that comes with GDS. But here is a quick instruction, this design only makes sense to Referenced Objects. Add Interface Methods Create a Normal class that should implement the interface Add a design pattern: Interface This is what gets created Interface.zip Cheers, Mike
  16. You’re right the interface isn't created, and that's because LabVIEW don't support Interface natively. Maybe a normal inheritance association will work for you. If not, there are ways of creating interfaces. I have a Design pattern, add-on you can add to a class to let it Implement an Interface class. But in your case just normal Inheritance might work just fine. Let me know how it goes. Cheers, Mike
  17. It's easy to do this, just using these property nodes. I use it to show the new connector layout I'll suggest.
  18. Are the 3 VIs running on 3 different computers and you like to synchronize them? I would use one master VI/state machine, which sends simple requests to the three server-VIs. The Server VIs would create a TCP-listener and wait for commands and execute them.
  19. I did ask them, but of course they wouldn't tell me, but it would be good to know in what sections I missed out in. Maybe something like this: Software Development Process: 3/5 Testing techniques: 1/3 OO programming 5/5 (of course) X-Controls 2/3 BTW, I've not asked my company to send me to the CLA Summit yet, what do you think I should say to convince them to send me there?
  20. The beauty of using good OO design in your application is the ease of modifying the software, so I almost always use the extreme programming approach. And of course with a help of some tools It’s easy to modify the design. ...or... Result:
  21. My rule is that if the data in the attribute is huge, I use Reference based objects, just like NI does for the NI-IMAQ VIs. It helps the user not to accidentally use too much memory. Or sometime I use a GDS design pattern “Add reference variable to class” to a normal ByValue class. ..and sometimes I even spell ...Aray... with 2 Rs
  22. I use my own OCR function to read the text from the icon and I use the VI invoke node to write it. So yes there is a way, but the text for the icon is not saved as text just as an image.
  23. Why not. This will help you access the same object even if you branch the HAL Wire. Also it helps you locking the resource. Memory Wise, I think it could be an advantage, if the Aggregated Object Contains Huge amount of data. By replacing that with a 4byte DVR reference value, the HAL-Wire don't become so heavy. So e.g. if you branch the Hal-wire, or when you go into many SubVIs, those SubVIs has to allocate memory for this Huge amount of data. But should you ever branch a ByValue Wire? If you want to run things in parallel and accessing one object, you have to go with the Actor approach, or...just use ObjectByReference. //Mike
×
×
  • Create New...

Important Information

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