Jump to content

PJM_labview

Members
  • Posts

    784
  • Joined

  • Last visited

  • Days Won

    10

Posts posted by PJM_labview

  1. Pierre,

    We do have a customer application with similar statistic (6000+ VIs but only around 100+ classes) and the build does take about 15 hours. Like you we have a lot of problems with the build (it is very easy to brake it for no obvious reason and when it take so long to do a rebuild this can very quickly eat weeks of your time).

    Here is some info that might help you.

    • We notice that adding xcontrol can brake our build (ex: adding the 3dsurface plot xcontrol did that [took us 2 weeks to find that this was the issue]).
    • Make sure your build output is as close as possible to the root folder (ex: C\build) so you wont hit the "path too long" issue that plague windows OS.
    • Build that fail do sometime succeed when we do a control+shit+run arrow (re-compiles everything in memory) and a resave.
    • Build that do fail on "regular" 32-bit OS do sometime succeed on 64-bit OS.
    • Sometime adding more memory to the build machine helps.
    • When none of the above succeed we have to try to figure out what was change since the last successful build. Note: we try very hard to do build very frequently to alleviate these issues.
    • We have several machine (for instance Virtual Machine) where we can try several builds in parallel to speed up the debugging.

    So my first suggestion would be to let the build go until you get an error as it can take a very long time. Also, if you have not done so, make sure you can try the build on several machines (using VMs [Virtual Machine] is really ideal for this tasks).

    I feel your pain, and I wish you the best of luck. Please report back here when you found out what was the issue.

    PJM

    • Like 2
  2. Unfortunately I have seen this a lot as well. I think I saw this first around LabVIEW 8.0 (for sure I never saw this in LV 7.1 or earlier). I don't have a fix, but I have a work around that sometimes help get better number.

    • Before your application run, start the "profiler"
    • Click on the snapshot button a couple of time (<- this is the trick that do sometimes help)
    • Start your app

    Hopefully this will be useful in your situation.

    PJM

  3. If you change the cRIO IP address using MAX, does your cRIO executable code stop working? If this is the case, you might want to consider the following (although at this time this might be too much work for your project).

    Instead of using "naked" share variable, use the share variable API (Function>>Data Communication>>Share Variable).

    post-121-0-17952200-1315415334.png

    By using this palette function you are able to use string "path" reference (NI Call this this string the "Share Variable reference In") to address the share variable.

    post-121-0-98986300-1315416573.png

    This string path reference look like this: ni.var.psp://IP Address/Mod#/IOName.

    So for instance:

    • For code running in the cRIO, the IP address will be 127.0.0.1. For code running in the laptop the IP address will be the cRIO IP [ex: 192.168.10.125].
    • Mod# is the module number (ex: Mod2).
    • IOName is the name that you gave that specific IO on that specific module (ex: External Interlock Status)

    Withe the above parameters:

    • in the cRIO the SV path reference is: ni.var.psp://127.0.0.1/Mod2/External Interlock Status
    • in the laptop this would be: ni.var.psp://192.168.10.125/Mod2/External Interlock Status

    If you do something like this, you can the store the cRIO share variable configuration string path reference in ini files (possibly one for the cRIO itself and one for the laptop).

    Now when you change your cRIO IP Address, you just need to change your IP address in your laptop ini file and everything will work fine.

    I am using this method on a shipping instrument that can have various IP address and this method works great.

    I Hope that this help.

    PJM

    Note: Now, the crazy/cool thing with that approach is depending on what is in your cRIO code, you could potentially run part (or all) of the cRIO code directly into the laptop by replacing the cRIO IP Address from 127.0.0.1 to its "real" one (ex: 192.168.10.15).

    • Like 1
  4. I am assuming that you don't want to do that (change the IP Address) in MAX.

    Please note that the IP address is not defined in the executable per say (as far as I recall) but somewhere else on the RT target. If you feel adventurous look at the "Automated LabVIEW Real-Time Deployment (RTAD) Reference Application". This tool does more than just changing the IP Address of an RT device, but if you look at the code I think you will probably find what change is required to change the target IP address (most of the code is not pwd protected). I did use that code to create a simple utility for one of my customer to do just that (change the IP address of the image).

    On a side note, if you have instruments with an embedded cRIO controller, I will strongly advise considering using the above mentioned tool to avoid future driver set upgrade/downgrade issues when trying to deploy your exe. The above utility take a complete image of the entire cRIO device (OS, driver set, executable [everything]) and allow an image to be created and deploy to target(s).

    Good luck

    PJM

  5. And I guess you've packed this in a nice lvclass :-)

    Actually, I don't. This is one of my pet peeve about using class in this instance because the class "pkg" become completely incompatible with existing native NI image manipulation VIs. Case in point: the icon editor has some interesting code (it use its own set of classes), Vugie also has a great image manipulation tool (but this is using its own class). Now because of this it is impossible to go a grab one reuse tool from one toolkit to extend another. You have to get all or nothing (or you have to be willing to reconvert all the stuff that you want out of the classes [and this can require substantial amount of work]).

    Does anyone have a solution for the above behavior given that i'm using the ring picture control?

    (Besides playing with the order and placing some sort of background image that stencils the picture control out of the front panel?)

    Thanks for the continued help :)

    Erik

    I am afraid that I am not following. What is the problem exactly? Is it an issue with the circle having different center?

    PJM

  6. Hi Guys

    I think you have forgotten something...anything can be done in LabVIEW.

    post-941-0-25705400-1311120698_thumb.png

    AlphaCircleInSydney.vi

    BTW, right now I'm developing with my colleges (in OO training purpose) an on-line Multi Player battle game using LabVIEW and the awesome Picture Control.

    We're thinking of releasing the source code here on LAVA when we're done.

    Cheers,

    Mike

    Mike,

    Nope I did not forgot anything this time :P

    This is essentially the manual alpha blending method I mention earlier. I have some VIs that do something similar (generic alpha blending). My method is somewhat different. I add the alpha data in the image [ ] in the form AlphaRGB and then I have a modified "Draw flatten pixmap (with alpha).vi" that know how to handle the transparency (using the same trick that you have of inspecting the image behind the alpha pixels).

    I do agree that the picture control is awesome and that everything can be done using it. Now, if NI would ever add hardware acceleration support in rendering image in the 2d picture control, this would make the picture control even more awesome.

    Cheers.

  7. Okay, so really I will have to have a singular transparent picture indicator that i can transfer my current mouse gestures onto. However, I don't know how to get the behavior of 'Graphics & Sound\Picture Functions\Draw Grayed Out Rect.vi' (i.e. the partial transparency) for a circle...

    I'm looking for documentation for the opcodes... 15 appears to be 'greyed out rectangle'...

    Thanks,

    Erik

    Ah, I did not notice that the circle was filled with alpha (partially transparent) pixels. This is going to be significantly harder to do. As far as I know, except for "draw grayed out rectangle", you can not have alpha pixel in a picture control. You can simulate this behavior though by:

    1. preserving alpha information in your image once loaded into LV (LV tend to strip this).
    2. inspect the pixel behind the alpha pixels and blend them with the alpha one yourself.

    Doing the alpha yourself will works fine, but you will need to invest some time to get it going.

    Based on all I (now) know of your requirements, I will recommend another approach. Have a set of different sized circle (use png images to have alpha pixel) and load each png image in a pic ring (your alpha pixel will be preserved). You can then select the right size and move the pic ring as needed. This would be the quickest and most efficient approach. What you loose in flexibility (only a few sized circle available) you gain in performance and coding time.

    PJM

  8. Thanks, I had no idea what that 'T' was. I'm utilizing the panel updates, but there's a fair amount of image transformation and updating to reflect mouse pressing and other updates to the system. I'll try it out and see what the performance is like :).

    Use another "floating" picture control just to do that "Google map like indicator" and move the transparent floating picture control on top of your other control as needed.

    PJM

  9. I'm not exactly sure where the transparency can be set in the picture control, but I'll check it out. That might be my best option, though everything I add keeps slowing it down!

    Just use the "set color" tool and "paint" it transparent.

    post-121-0-30509600-1311018541_thumb.png

    About performance, I am pretty positive that if you have no anti-alias that you should not notice any performance issues. Just make sure the you are redrawing only what needs to and only when need to. Additionally, defer panel update could be used if needed.

    PJM

  10. Like mje says, you can use a transparent picture control and just draw the circles in it. For such simple thing the performance will be fine. Now, if you want to implement the "blur" (aka anti-alias) this will definitively requires a lot of effort (and result in performance penalty but it should still be fast enough).

    Note: If you thing NI should have the anti-alias native in the picture control, go vote for this idea: Add Antialias support in picture control

  11. Not exactly what you are asking for, but if I understand your description of the configuration, I don't see why you need the DLL in the first place. Just buy one of the various USB to RS232 converter (I personally use Keyspan) then use VISA from LabVIEW to communicate (over RS232) with the DUT. I realize that this is probably not an option at that stage, but I though that I would mention it.

    PJM

  12. I did not noticed all these new post.

    "show terminal": you are right there is a situation where it works the reverse that it should.

    "fast typing": As far as I can recall this issue was always there (before I even made the customization). If there was a bug fix for it by NI, I missed it.

    "not installing in 2010": I could change that easily but since I do not know what was improved / fixed from 2009 to 2010 by NI, installing this version will not benefit from these potential improvement / fixes.

    "eraser": I also noticed the need for repeat click. I am not sure if this is something that I did (could be). Was this working in 1.6?

    PJM

  13. Version Affected:

    This bug affect (at least) LabVIEW 2010 and LabVIEW 2009 (I did not test it on any more version)

    Platform:

    Windows (XP and 2007)

    Description:

    If you have a tree control with filter event case for "Edit Cell?", "Item Open? and "Item Close?" then clicking the node expand/collapse glyph (the"+" or "-") while editing another column will result with the text entered be applied to the node column (the first column) instead of the column that was being edited.

    More info:

    See attached video and attached example VI (treebug.vi).

    <object id="scPlayer" class="embeddedObject" type="application/x-shockwave-flash" data="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/jingswfplayer.swf" height="471" width="587"><object id="scPlayer" class="embeddedObject" width="587" height="471" type="application/x-shockwave-flash" data="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/jingswfplayer.swf" >

    <param name="movie" value="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/jingswfplayer.swf" />

    <param name="quality" value="high" />

    <param name="bgcolor" value="#FFFFFF" />

    <param name="flashVars" value="thumb=http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/FirstFrame.jpg&containerwidth=587&containerheight=471&content=http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/2010-08-05_0849.swf&blurover=false" />

    <param name="allowFullScreen" value="true" />

    <param name="scale" value="showall" />

    <param name="allowScriptAccess" value="always" />

    <param name="base" value="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/" />

    </object>

    treebug.viLabVIEW 2010

    <param name="movie" value="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/jingswfplayer.swf">

    <param name="quality" value="high">

    <param name="bgcolor" value="#FFFFFF">

    <param name="flashVars" value="thumb=http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/FirstFrame.jpg&containerwidth=587&containerheight=471&content=http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/2010-08-05_0849.swf&blurover=false">

    <param name="allowFullScreen" value="true">

    <param name="scale" value="showall">

    <param name="allowScriptAccess" value="always">

    <param name="base" value="http://content.screencast.com/users/pjm_jki/folders/Jing/media/392e8fc4-8f7f-4bc8-9574-b1abc6f1eb22/">

    </object>

  14. Why do all of my JKI RCF plugins have duplicate menu items? For instance the Insert Type Conversion plugin has two identical menu items- Insert Conversion Node. The first line works as expected. The second one deletes the wire. A few other ones do similar bad things with the second entry. Others will do the same thing for both entries. What's going on?

    George

    This is probably because in the option window you pointed the "plugin development source dir" to the installed plugin location (hence resulting in 2 instance of each plugin). This should point only to your source plugin dir (the one you are working on). This dir (plugin development source dir) is typically different than the installed dir (and should remain empty if you don't have source plugin).

    post-121-076953100 1276795068_thumb.png

    PJM

  15. Does your theme editor maintain the inherited icon layer behavior? You might already know this but I figure it is worth mentioning...

    Suppose class Parent has a template icon that is 32x12 (aligned top).

    If you give the Child a template icon that is 16x12 (aligned top right), then when you add a new VI to the child, the resulting VI icon will use the Parent icon for the left half and the Child icon for the right half. This gives you a way of having a theme in the parent class with each child class adding a glyph to that original theme and then you only have to update the parent class if you want to change the theme across your whole hierarchy.

    I did notice this feature and I have to confess that I am not too found of it. For instance if I have a dark banner on my children class and I use a white font for the banner text I end up having the parent banner color "leak" through (which does sometimes makes the text unreadable).

    PJM

  16. Hi

    Sometimes the response time when editing a large VI gets soooo long.

    I can easily see it on the mouse cursor when I move to different object and would expect the cursor to change, but it takes 3-5 second.

    Am I the only person to experience this?

    I have a powerful PC, so that’s not the bottle neck.

    It’s like LV decides to recompile the whole VI and do a complete Error Check of all code in the project.

    If I restart LabVIEW it looks like it becomes faster for a short while, then it’s back to be frustrating slow.

    So I tried to open my main VI direct, not using the project, and then the response was fast.

    I do use lots of classes.

    Any ideas?

    Have you experienced the same?

    Cheers,

    Mikael

    I am seeing something very similar in my project as well (although restarting LV do NOT help me at all). Thankfully in my case I do not (yet) have to wait 3-5s but more like 1-2s.

    I also use a lot of classes (both by val and by ref) and there are over 3K VIs in that project.

    When I have this project open and I do an edit in a VI I see the hour class between each edit.

    Like you I also have a fast computer.

    My workaround, at the moment, is to no longer use my full project (unless I have to) but to only open the class I want to edit (resulting in less stuff in memory) and this way everything is back to normal.

    When LV gets slow, then often the open windows rearrange their Z-order in the middle of an editing operation, which is very frustrating. Switching from front panel to diagram or changing windows and some editing operations will cause this. On my laptop it can take more than a minute to regain control of LabVIEW, though other applications are not affected (thankfully).

    I am also seeing this as well. It does sometimes resolve itself (meaning I regain control of LabVIEW) but not always. I have situation where I try to drop a node from a palette or create a property nodes and LV get in that mode and it never recover (no matter how long I wait). I then have to restart LV, open the project, create a blank VI, create the nodes I want in the blank VI and then copy then from the blank VI to the VI I want them to be (if I try again directly in the target VI, LV hangs again). Pretty painful.

    Oh, and another things I am seeing is LV crashing when probing wire with large cluster (like the one you got in a large state machine).

    Note: I do not have any network drive involve in this.

    Note: All of this happen with LV 2009 f2.

    PJM

×
×
  • Create New...

Important Information

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