Jump to content

Francois Normandin

Members
  • Posts

    1,209
  • Joined

  • Last visited

  • Days Won

    47

Everything posted by Francois Normandin

  1. The owner "IWin32Window" is most probably the Window Handle of your calling VI. That would be my first guess...
  2. Hi Bernd, You can get the Array Size even if I don't know the array type by using the OpenG's "Array Size(s)" that you can find in the Variant palette. I don't think you can do that. You can get the reference to the array element (default value), but it's not the Elements References[] you're looking for. By looking at the class name of that default element reference, you can know what's the array datatype (or you can use OpenG's VIs again). While Ben's method (Nugget) works great with controls, it doesn't scale well with an array of unknown dimensions and sizes. Actually, sizes are not a problem... but dimensions are. If you restrict yourself to a 1D array (or a 2D array), then you can convert it but you'll have to work with Variant data, not references to individual elements. My advice would be to work with a variants in this case. It's heavier than carrying around the references, but overall it might be better to conserve dataflow in your program.
  3. See this link to reproduce bug. It occurs when programmatically setting the text color through a property node as well. Only occurs with System Style and when backgroup is transparent.
  4. <object id="scPlayer" width="582" height="356"> <param name="movie" value="http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/jingswfplayer.swf"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/jingswfplayer.swf"></param> <param name="quality" value="high"></param> <param name="bgcolor" value="#FFFFFF"></param> <param name="flashVars" value="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/FirstFrame.jpg&containerwidth=582&containerheight=356&content=http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/pure%20white%20bug.swf"></param> <param name="allowFullScreen" value="true"></param> <param name="scale" value="showall"></param> <param name="allowScriptAccess" value="always"></param> <param name="base" value="http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/"></param> <embed src="http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="582" height="356" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/FirstFrame.jpg&containerwidth=582&containerheight=356&content=http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/pure%20white%20bug.swf" allowFullScreen="true" base="http://content.screencast.com/users/normandinf/folders/Jing/media/05eb9001-fa99-4657-90ff-8d9fc5f07731/" scale="showall"></embed> </object> In version 1.5 of "Improved Icon Editor", the change log mentions a bug when selecting (255,255,255)... It seems the workaround was to shift it to (254,254,254). That's what I'll do for next version.
  5. I've used OpenG Package builder for these... I think I can have the source code saved for 8.2 and then package them. It should work without having to install 8.2. Give a a few days to find out. For the "pure white", it's not a bug with BitMan because the preview is OK. It's most likely in my ultimate call to create the control. I set the text color in a property node, but for an unknown reason, pure white results in black. I don't want to call it a LV bug yet because I haven't been thorough in my search for an explanation... ** EDIT: Well, it's definitely a LV Bug... No need to do it programmatically, it ends up black when I select (255,255,255) color.
  6. That's on my radar, but I don't have 8.2 installed at home. I'll see when I can find some extra time after work if I can do it. As mentioned somewhere, I don't see any problems backsaving for 8.2. Just didn't have time to do it and test. As for 7.0, I won't. I've added a "Save for Previous" to the control class, but it goes back as far back as 8.2. I promise to take a look. I'd hate that you can't play with it... If someone were to find a tweak on how to create a 7.0 binary from the 8.x control, that would be something.
  7. I have an idea... Can't post in LabVIEW General unless you upload a personal photo?
  8. It's simply an array constant with integer as the datatype. Check out the array palette to get an empty container. Drag your datatype in it to set it to I32 or anything you wish. But yours can parse any file with an arbitrary number of spaces in-between numbers. Mine is limited to fixed-width columns.
  9. Your file seems based on a fixed width for each columns, so you can take advantage of this and scan each line. Though this filetype is limited to 999999 lines.
  10. OpenG's configuration files are your friends... Use "Read/Write Panel to INI" for the values. Use the Read/Write Variant in a for loop for the rest.
  11. It's totally safe to check at work. (just plain text, no insults) http://translate.google.ca/#auto|en|%E0%B8%88%E0%B8%B4%E0%B8%95%E0%B9%83%E0%B8%88%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B9%83%E0%B8%AB%E0%B8%8D%E0%B9%88%E0%B8%A7%E0%B8%B4%E0%B8%9E%E0%B8%B2%E0%B8%81%E0%B8%A9%E0%B9%8C%E0%B8%A7%E0%B8%B4%E0%B8%88%E0%B8%B2%E0%B8%A3%E0%B8%93%E0%B9%8C%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%84%E0%B8%B4%E0%B8%94%20%E0%B8%88%E0%B8%B4%E0%B8%95%E0%B9%83%E0%B8%88%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B1%E0%B8%8D%E0%B8%A7%E0%B8%B4%E0%B8%9E%E0%B8%B2%E0%B8%81%E0%B8%A9%E0%B9%8C%E0%B8%A7%E0%B8%B4%E0%B8%88%E0%B8%B2%E0%B8%A3%E0%B8%93%E0%B9%8C%E0%B9%80%E0%B8%AB%E0%B8%95%E0%B8%B8%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%93%E0%B9%8C%20%E0%B9%81%E0%B8%95%E0%B9%88%E0%B8%88%E0%B8%B4%E0%B8%95%E0%B9%83%E0%B8%88%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%95%E0%B9%88%E0%B8%B3%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%A2%E0%B8%99%E0%B8%B1%E0%B9%89%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B8%88%E0%B8%B2%E0%B8%A3%E0%B8%93%E0%B9%8C%E0%B9%80%E0%B8%9E%E0%B8%B5%E0%B8%A2%E0%B8%87%E0%B8%9C%E0%B8%B9%E0%B9%89%E0%B8%84%E0%B8%99
  12. I'm not a CLD and never took the exam, so take what I'm saying with a grain of salt. Let's start with ameliorations I would suggest: 1- You've put a "Wait Until Next Millisecond" and you use a 75ms timeout on your Get Queue primitive. If you were to remove it altogether, you'd still have the 75ms timeout to slow down your loop, except when you have something waiting in Queue. 2- That gets me to your use of the Queue repetitively for each of your actions. You parse the same string to the queue unless the time is elapsed, in which case you reset and move on. That works OK in this case, but in real life, you'll want to start a process, say "Main Wash" and you can't do that repetitively until it's finished. In fact, you call "Main Wash" a hundred times before it moves to the next action in the list. There are probably ways to salvage your design to make it call each car wash action only once while keeping track of time and position switches. 3- Probably minor, but your Queue wire is bent around a Case Structure for each car wash actions. It would probably be better style to try straightening it. 4- Your Default case executes the same code if your queue reads an empty string (timeout), "Wait" (which I haven't found in your program) and any other command that is not an handled state. You could add an "unhandled state" diagram that would correspond to your Default frame. If the queue is empty, you could use a "Idle" state (or Wait) and put an Event diagram to really wait for the user to take action of one of the switches to change state. With timeout = -1, you wouldn't have to worry about the processor running to fast when Idle and you could wait for an event to happen. As a collateral to using an Event diagram, you would have a more expandable program. For example, take your call for activating a car wash selection: With two choices, it doesn't clog your diagram, but what if you want to add a third one on the fly... or a fourth. You never know what the car wash owner will ask next! 5- I would have added an empty SubVI for each action: Wash, Soap, etc. just to show the routine is being executed in the right frame. To convert your program from example to real-world, only the content of these VIs would have to be filled in. Positive points: 1- Indeed, the code is simple. You make good use of subVIs for repetitive tasks. That definitely shows you've thought about it before starting to code. 2- You've documentation all subVIs (descriptions, tip strips, frames, wires). 3- Code is clean and a lot of space to breathe. Apart from some minor wire bending, the code is easy to read. Finally, if you had some loose time left, I would document with a little more meat and make sure the tip strips are differentiated. All your wash state indicators have the same tip strip... (Do what I say, not what I do... most of the time I don't do that myself, except during exams!!! ) Good luck getting the CLD! Keep us posted.
  13. You cannot create tabs dynamically (at Runtime) because it needs recompiling the code. You can only do it at development time. If in Dev environment, then there is a method for Adding/Removing tabs. Search the forums to find the solutions proposed to get around this problem, it's been asked many times and based on your application, an alternative solution might already be out there waiting...Creating all your tabs beforehand and hiding some based on your different UIs is one of them.
  14. An a small demo. (sorry no sound: couldn't risk waking up the lady:P) <object width="1010" height="578"> <param name="movie" value="http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/jingswfplayer.swf"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/jingswfplayer.swf"></param> <param name="quality" value="high"></param> <param name="bgcolor" value="#FFFFFF"></param> <param name="flashVars" value="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/FirstFrame.jpg&containerwidth=1010&containerheight=578&content=http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/2010-01-23_1652.swf"></param> <param name="allowFullScreen" value="true"></param> <param name="scale" value="showall"></param> <param name="allowScriptAccess" value="always"></param> <param name="base" value="http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/"></param> <embed src="http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="1010" height="578" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/FirstFrame.jpg&containerwidth=1010&containerheight=578&content=http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/2010-01-23_1652.swf" allowFullScreen="true" base="http://content.screencast.com/users/normandinf/folders/Jing/media/56068fce-b3d2-4b2e-933f-960b956a613a/" scale="showall"></embed> </object>
  15. I don't know I qualify for this epitet, but thanks anyway. Indeed, I was a little harsh in my statement to eyal2... Eyal... use this code to enable it programmatically (or right-click on your MCL as Cat mentioned) (Works indeed with 8.2)
  16. Maybe because you didn't even try... <object width="984" height="366"> <param name="movie" value="http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/jingswfplayer.swf"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/jingswfplayer.swf"></param> <param name="quality" value="high"></param> <param name="bgcolor" value="#FFFFFF"></param> <param name="flashVars" value="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/FirstFrame.jpg&containerwidth=984&containerheight=366&content=http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/2010-01-21_1200.swf"></param> <param name="allowFullScreen" value="true"></param> <param name="scale" value="showall"></param> <param name="allowScriptAccess" value="always"></param> <param name="base" value="http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/"></param> <embed src="http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="984" height="366" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/FirstFrame.jpg&containerwidth=984&containerheight=366&content=http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/2010-01-21_1200.swf" allowFullScreen="true" base="http://content.screencast.com/users/normandinf/folders/Jing/media/78b6bdc5-a426-4d64-a0c9-c71cabfa9e6d/" scale="showall"></embed> </object>
  17. I've received a few PMs concerning this. Thanks all for waiting. The last few weeks, I've had less time than I would have wanted to continue this work and I am posting my preliminary work as is. There are a lot of holes in there, especially since I have not yet begun coding for the Spreadsheet Documents (Calc), only for Writer. Furthermore, the utility VIs like "Set Font" and "Save to File" should be much more "intelligent". As of today, use a correct OpenOffice filename with a ODT extension to save your work. Remember that this is preliminary, but it makes use of the NI Report Generation Toolkit that handily comes coded in LVOOP. The "New Report.vi" VI is being replaced by one that can select ooWriter and ooCalc among others. The AODL libraries (DLLs) are installed in the vi.lib\Utility\NIReport.llb\ooWriter\AODL folder. I have not yet touched all the power of playing with Cell contents, which will be necessary for upgrading to ooCalc eventually. From now on, please use the discussion thread that was created with the submission in Code Rep for any comments on code or suggestions. BTW, this is coded in LV 2009... but I don't see a problem in the future to downgrade the code to 8.2. I just don't have time for the moment to test it. (Please bear with me.) Enjoy!
  18. Version 0.2.1.8

    3,776 downloads

    Public Git repo (source code): https://bitbucket.org/normandinf/openofficergt ==================================== Open Office RGT addon v0.2.0 beta Copyright © 2010-2016, François Normandin. All rights reserved. Author:François Normandin Contact Info: Contact via PM on www.lavag.org LabVIEW Versions: Created and tested with LabVIEW 2009 Dependencies: Report Generation toolkit (part of it is included in the base package: Word & Excel require license) Description: This package contains an installer and class to use the AODL (An OpenDocument library) with the Report Generation toolkit from National Instruments. Includes: - ooWriter class - AODL classes (and DLLs) - PreInstall and PreUninstall VIs to backup the only modified NI VI: New Report.vi (in Utility\NIReport.llb) Instructions: After installing package with VIPM, use the NI Report Generation palette as usual. Known Issues: 1- ooWriter: Styles integration is incomplete. Needs to have a real "style" class created that will comply with current standard in RGT. Adding an image is not working correctly: it is embedded in a paragraph instead of being standalone. 2- ooCalc: no integration yet, but rather similar to ooWriter in principle. (All the roadblocks will be cleared by ooWriter) 3- This code has been done with LV2009. I see no problem for using with LV 8.2 and up, it's just a matter of saving for previous version and distribute. This will be done at a later date. Acknowledgements: National Instruments. (NI Report Generation Toolkit) ** LVOOP rocks ** AODL by Sun Microsystems, Inc. Copyright 2007 History: v0.2.0: released on bitbucket (Git) for community v0.1.0: Initial release of the code. (LV2009) License: LabVIEW libraries of OpenOffice for RGT addon are licensed under BSD. AODL us distributed under the LGPL license. (see license files for more detail) Support: If you have any problems with this code or want to suggest features: please go to www.lavag.org and Navigate to the discussion page. Distribution: This code was downloaded from the LAVA Code Repository found at www.lavag.org ============================
  19. Name: Open Office RGT addon Submitter: Francois Normandin Submitted: 18 Jan 2010 Category: LabVIEW IDE LabVIEW Version: 2009License Type: BSD (Most common) Public Git repo (source code): https://bitbucket.org/normandinf/openofficergt ==================================== Open Office RGT addon v0.2.0 beta Copyright © 2010-2016, François Normandin. All rights reserved. Author:François Normandin Contact Info: Contact via PM on www.lavag.org LabVIEW Versions: Created and tested with LabVIEW 2009 Dependencies: Report Generation toolkit (part of it is included in the base package: Word & Excel require license) Description: This package contains an installer and class to use the AODL (An OpenDocument library) with the Report Generation toolkit from National Instruments. Includes: - ooWriter class - AODL classes (and DLLs) - PreInstall and PreUninstall VIs to backup the only modified NI VI: New Report.vi (in Utility\NIReport.llb) Instructions: After installing package with VIPM, use the NI Report Generation palette as usual. Known Issues: 1- ooWriter: Styles integration is incomplete. Needs to have a real "style" class created that will comply with current standard in RGT. Adding an image is not working correctly: it is embedded in a paragraph instead of being standalone. 2- ooCalc: no integration yet, but rather similar to ooWriter in principle. (All the roadblocks will be cleared by ooWriter) 3- This code has been done with LV2009. I see no problem for using with LV 8.2 and up, it's just a matter of saving for previous version and distribute. This will be done at a later date. Acknowledgements: National Instruments. (NI Report Generation Toolkit) ** LVOOP rocks ** AODL by Sun Microsystems, Inc. Copyright 2007 History: v0.2.0: released on bitbucket (Git) for community v0.1.0: Initial release of the code. (LV2009) License: LabVIEW libraries of OpenOffice for RGT addon are licensed under BSD. AODL us distributed under the LGPL license. (see license files for more detail) Support: If you have any problems with this code or want to suggest features: please go to www.lavag.org and Navigate to the discussion page. Distribution: This code was downloaded from the LAVA Code Repository found at www.lavag.org ============================ Click here to download this file
  20. I think you'll have to restrict a little the classes you're looking because refnums are not all the same type. There is no common ancestor between a VI Ref and a Control reference. If you know it's gonna be a VI reference (or other refnum type), then you can do it with OpenG.
  21. You already have everything you need. The average position between terminals is certainly not what you want, but you can get the terminals' position easily from your wire property node.
  22. Use Events and the menu reference created on right-clicking a control.
  23. Just a guess, but perhaps the Default Application Font is not the same on all machine. You can test this assumption by making sure the labview.ini file contains the same appFont value for all your machines.
  24. I've found some bugs on the initialization of the "Create Customized Controls" from the Tools menu. 1- I should have removed the config.ini file before I created the package... now you'll be swapped to an inexistant directory the first time you use it. 2- The VI won't close itself after you're done. 3- Batch processing doesn't work. 4- Save to an existing control palette not yet implemented. 5- Some problems with "Drop on existing FP", especially within a project. 6- Text color should not be "pure white" (FFFFFF) or it will appear black (don't know why yet). Use a slightly off-white (FFFFFE) for example. Thing you should know: a) you would have to populate the <lvdata>\Icon Source directory with your own set of icons. I've placed the Nuvola icons set in there on my computer. Otherwise, you can use the <lvdata>\glyphs icons, but those are not transparent (background). b) Not saving control to disk will save it to a temporary folder. (thus saving it to disk before adding it to a front panel) On the roadmap: 1- Add a "Save for previous version" option when creating the controls. 2- ...
×
×
  • Create New...

Important Information

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