Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by martin_g

  1. Ah ok - thanks for pointing this out. I tried something trivial with it a few years back, haven't been keeping up to date with it & had thought it would have gotten out of prototype stage by now.
  2. Hmmm, that's interesting, I'll search out some of your other posts on UI's. That sounds like a better longer term approach. Yeah, I meant the WebVI's bit that has survived. But tbh will probably skip that and just do the html/js. Good to know, I'll keep this as a plan B. Thanks, Martin
  3. Thanks all for the feedback! I think the consensus is to look for an HTML/Javascript toolkit. Is it a request we should implement? I've gone back & forth on this - as it seems like a nice to have feature. But we do get requests from major customers, they tell me it takes them a lot of time switching tools when using an external image editor. Also most of our competitors have an embedded image editor, so I'd like to have it as an option. Functionality - the bit that I struggle with & I don't think LV is well suited for is building composite images (sorry that wasn't clear in my first post) - they want to import several images, then crop, resize and reposition them. Javascript editor in an embedded browser. Yeah that may be the way to go, we tried this about 18 months ago, and struggled when using IE within the WebBrowser - as most JS toolkits are geared up for a modern chromium browser, they don't work well with IE. I do actually have a prototype that uses Edge within the WebBrowser now - so maybe it's time to revisit that. Is it NXG? No, it's a hybrid monster! LV15 mixed with the embedded WebBrowser displaying html & js for parts of the UI we can't do in pure LV. It started in pure LV with a more basic UI, then has grown & grown. It's getting refactored & split into multiple projects, I'm aiming to split of one of those smaller projects into NXG.
  4. Hi - I have a large application which enables our users to create their own test sequences, as part of that, they create visual instructions and we've added in a very basic image editor (sub MS paint). I've attached a couple of example screenshots. We've been getting some negative feedback on the image editing capabilities, and we've suggested they use an external tool but we're still getting requests for a decent image editor within the app. As it's not a core part of our application, I don't want to develop one & I don't think LV is best suited to this task. So - has anyone any recommendations of a paid for image editing toolkit within their LV project? I'm thinking a .net / winforms package that we could easily call and integrate into our project. Thanks, Martin
  5. Fixed the issue, but that was frustrating! Fixed it by removing the offending vi 'Get Default Class.vi' from the class & project, then re-adding it. Builds fine now, no idea why! Hope this helps someone. Martin
  6. Hi, Today I started getting a Load Warning Summary when running my .exe build specification - no idea why, and it is causing the generated .exe to be broken. I think it's basically saying in the Load and Save Warning List message box attached that LabVIEW is loading DataStorage.lvclass from within the .exe, when it was expecting it to be within the source code. The build completes, but with a broken arrow as the .exe can't find DataStorage.lvclass All I've done today is add some functions to the class, but nothing major. I've tried multiple things to fix it, including a Mass Compile but to no avail. My next step is to revert back a couple of versions to find a version that will build so I can track down what I did to break it. The other thing to say is that this error message appears when about 50% of the way through running the build (during Compile), so it's like when LabVIEW tries to load the class from the vi during the build it's loading it from the .exe rather than source code !? Any ideas would be appreciated if you've seen a problem like this before. Thanks, Martin
  7. Just started using this tool, thanks for sharing this, great work! So far it has made me much better at keeping VI descriptions up to date.
  8. I tried adding the .lvproj file within the project but got an error message that 'An item with this path already exists in the project.' Shaun's suggestion is very simple, which I like, so I'll try a post build VI to copy the .lvproj. Why I want to do it is a bit complicated, but briefly; deployment has been done with an .exe. There is now a requirement to share the entire source code for the project and I want to protect some IP within the project.
  9. Thanks jcarmody, hoovah. I'll try modifying that VI as my goal is to protect my IP - so removing the block diagram is my preference. Ensengre - you do get all of those options when creating a source distribution, which is great. But you cannot include .lvproj information in a source distribution. I've got a compactRIO setup in my project, and I need to include that in the distribution that I create.
  10. Hi, I've got an RT project which I need to distribute the source code, My .lvproj contains multiple .lvlibs + deployment info for a cRIO. I'd ideally like to create a distribution that includes the .lvproj file and also removes the block diagram of certain VI's in this distribution, if I can't do that I'd at least like to password protect some key VI's. Options I've tried: - ZIP file - this includes the .lvproj and all the RT info I need, but there is no way to add passwords or remove a block diagram. - Source distribution - I can remove block diagrams, but I can't include the .lvproj file with my RT info. I could go in and add passwords to every VI in my hierarchy that needs protection, but that will take a while, and I don't require the passwords in my development copy, just in the distribution. Is there a way to do what I want? Cheers Martin
  11. Generally, I'd approach this by having a top level sequence with sub sequences that define the high level tests. Then use pre conditions on tests & sub sequences to decide whether or not is should run. This let's you create generic top level sequences that execute specific tests for products at run time. I'd push all of the model / part number identification code into the sequence model ( by creating a custom model) and maybe even put Pre Step actions in there to do checks before each test step. My starting point would be to map out the tests required and look for commonality of tests. That would tell me what my sub sequences should be. Have a look at the Test Stand advanced architectures PDFs & Test Stand 2 training course - that's good for custom sequences & architectures.
  12. Thanks for the info. The MSDN OS licenses do look good value for what I'm going to be doing.
  13. Apologies for resurrecting a way old thread, but I noticed a few posts lately mentioning the use of VM's to manage multiple versions of LabVIEW. At the moment, I'm trying to support many applications from 7.1 to 2014 and all in between. So I'm wanting to switch to VM's to make this a bit easier than multiple laptop's and complex re-configurations. I'm a bit confused on the best way to do Windows licensing though, as I may end up with a lot of VM's if I have one for each LV version. I've googled it a bit including this and I think I need a Windows Volume license + Software assurance. Is that right? And if you're running multiple VM's with Windows what's your experience? Thanks, Martin
  14. Great question, and Peopleware is a great book. For me, once my low level Maslow needs are met its all about fulfilling work that makes me feel like I'm growing and making a valuable contribution. I'm an avid reader, I enjoyed Peopleware. I'd say the definitive book on this in recent years is Drive by Dan Pink, well worth a read if motivation at work interests you. Martin
  15. If you open up one of the Excel Report Toolkit VIs, you'll see the .NET functions being used.
  16. You need to use a relay that can switch thst voltage & current. The NI 9478 is good for switching solenoids, some of my clients have used it to switch 2 million cycles without any problems. Cheaper option: NI did a USB solid state relay card that couls switch 24v up to 0.5a - USB6525 Alternatively use a TTL output device and pick some relays that will switch the load
  17. Thanks for the suggestion Mike, yes that would be a more elegant solution. Thanks for the tip!
  18. Hi Mike, I create the DVR ref at startup, bundle up all my references and pass them throughout the application. Yeah, it is a bit like a global, but I think I need a kind of global functionality. I can potentially change state of the application from many different places, but I want to keep one copy of the overall application state. Handling write access is a good idea though, At the moment anything anywhere can write to it, I've created accessors to write one element of the application state on each call. I can maybe move those around into private scope of a library. i.e. add the write 'Logging' function as private scope within my 'Logging' library.
  19. So I managed to get back to this issue this week, and implement a solution. I created an 'application state' cluster and used a DVR to access it, I update the DVR in event structures that are registered for the User Event, when it's appropriate to update state. At the moment, it's a pretty basic structure with booleans for 'Test Running' 'Logging' and a few others, but I think it solves my problem. When I launch a new UI in a sub-panel, I read from the DVR the current application state, and then format my UI accordingly. On this project, I didn't have time to separate 'Event' and 'State' messages, but next project, I think I may combine this method with the DVR. Then it would be clear that all 'State' messages should be updating the DVR, but no 'Event' messages should update it.
  20. Thanks Paul & James I'm not looking for a quick fix, so my preference would be to not leave them running.I'll play around with some of the options you both suggested for storing 'State' messages. The network published shared variable property is very interesting, I'll definately take a look at that, but its probably not appropriate for all applications with needing the DSC toolkit.
  21. I've been using sub panels to replace tabbed UI's. In applications with lots of information to display, rather than having a UI with tabs splitting the various views - I have used a sub panel, and various UI's that are loaded when a user chooses. I have User Events passing UI update messages from various parts of the application, and each of the VI's that run in the subpanel are registered for these events - when they are running. The problem I've found is maintaining state in the UI - if a user switches back and forth between different UI views - opening & closing various VI's in the sub panel - depending when the User Event messages are sent, some UI information may be different to when the user closed the UI. To get around this I've started sending query messages to the application when each UI starts - but this seems to be getting a bit complicated, and I'm not sure if the benefits of the subpanel outweigh the hassle of getting the latest values each time a subpanel UI starts. Just wondering how others handle maintaining state with subpanels? Thanks, Martin
  22. I had a similar permissions problem on a previous project (can't remember the exact details) but basically I was creating a count file, and LV would write to it every 10 seconds or so. I was plagued with permissions errors. The native 'Set Permissions' function sorted out my problem. LV help says use an octal value of '200' for write permissions, '700' for read, write & delete. 200 worked ok for me with Windows 7. Martin
  23. The best way to do barcode scanning at the start of a test sequence, is within the sequence model. Test Stand comes with some default models that have this functionality e.g. Sequential Model. If the default models don't meet your needs, you can customise them. Look in the Test Stand examples for different model demos. This is a slightly advanced Test Stand topic, but I think would be a better solution.
  24. Use the Dialog using Events template and use the Timeout case of the Event Structure to stop the vi. Set the timeout value to 2000 (ms) for a 2 second display of the vi. The front panel will close when the vi stops.
  25. OK, thanks for all of your input, I'll stick to using the shift register, and look for another use to try out Feedback Nodes! Cheers, Martin
  • Create New...

Important Information

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