Jump to content

Francois Normandin

Members
  • Posts

    1,209
  • Joined

  • Last visited

  • Days Won

    47

Posts posted by Francois Normandin

  1. Thank you very much. But I still have some problem you know, my data is a string format , so how can I split it.

    for example, string = "32 22 34 54 31 55 12"

    How can I split it to => 32 and 22 and 34 and 54 and ........ to put it into array[0],array[1],array[2],............

    Best Regards,

    If the separator (space, tab, comma, etc.) is fixed, you can use the primitive "Spreadsheet String to Array" from the string palette.

  2. And here's what I've been playing with over the week-end. ;)

    <object id="scPlayer" width="1024" height="482"> <param name="movie" value="http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/jingh264player.swf"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/jingh264player.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/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/FirstFrame.jpg&containerwidth=1024&containerheight=482&content=http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/drag_n_drop_icons.mp4"></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/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/"></param>'>http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/"></param> <embed src="http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/jingh264player.swf" quality="high" bgcolor="#FFFFFF" width="1024" height="482" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/FirstFrame.jpg&containerwidth=1024&containerheight=482&content=http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/drag_n_drop_icons.mp4" allowFullScreen="true" base="http://content.screencast.com/users/normandinf/folders/Jing/media/5961b00c-fa8b-4d3a-96a9-141f7f42bfdb/" scale="showall"></embed> </object>

    icons_85.vi (LV8.5, should be linked OK)

    (BitMan needed ==> install in user.lib)

    • Like 2
  3. Thank you, François Normandin.

    I have resolved the problem.

    • Can you upload this ICONs? They are so beautiful that I like those.

    You're welcome.

    The icons are available here. It's the Nuvola theme. Free to use, but check out the license especially if you want to use them commercially. It's the base icon theme I've use for UI Tools. (shameless plug)

    I'd also recommend that you take a look at the Bitmap Manipulation tools from Vugie in the code repository. I use it to manipulate images and keeping transparent background with the least effort on my side.

  4. Thank you.

    There three .vi cannot open normally. Can you upload those .vi and the icon?

    And I want to konw if the ICON control support the drag and drop event?

    Just like the above the pictures, the above one is the source tools which can be drag and drop into the below Icon control.

    And how to configure the icon display in the same size and arrange the distance betwwen them? Thank you

    You can manipulate the picture size with the 2D Picture palette. Make a blank icon with the desired size and then superimpose your icon and text in its center. When you add them to the array of icons, they'll look as if you've got spacing between them.

    As for the drag n' drop, you can do it but the Icon array doesn't "support" it per se. You can create events to do it but I'm not sure the picture array is the best format suitable for drag and drop. Perhaps there are other ways of storing your icons that would let you do that easier.

  5. Francois,

    how did you manage to break the linking to user.lib?

    I don't know. It works OK for me and I didn't try anything weird. That doesn't mean I haven't screwed up, I'll have to investigate!

    Perhaps I'll reinstall OpenG. Weirdest (?!?) thing I've done lately was install VIPM 3.0 over a VIPM 2 install. That can't be it.

    **EDIT** Perhaps that was when I backsaved for 8.5.

    **RE-EDIT** Yes, that's it.

    @Angle: replace both missing VI's with the LabVIEW primitives "List Folder" and "Build Path" from the File palette. They'll work in this case.

    The error came when I backsaved the VI for your version.

  6. I am sorry making you confuse. I mean I want to get the value of the control which has been updated. I can index the cluster but I cannot index the control inside that cluster.

    In that case, you can use the OpenG Variant palette to get the data you want, "Cluster to Array of VData" in particular.

    If your cluster's data is all from the same datatype, you can typecast it. If not, then Variant is all you can have.

  7. should i used digital port or analogue port?????

    Digital is for two states: ON-OFF (binary)

    Analog is for signals.

    Think digital if you want to control a valve or a relay (digital output) or to sense if an on-off state (digital input) like an interlock or a limit switch.

    Think analog if you want to generate a signal (analog output) or read a sensor (analog input).

    Now ask yourself what are the sensors and controls you want to activate/read on your tank. Classify them as analog or digital, inputs or outputs. Then see which lines are available on your 6008 to do this. Select one line for each of your inputs/outputs, wire them and use the DAQ assitant to create them in your VI.

    Of course, look also at the link Minh Pham put in his last reply...

    good luck

  8. I am always interested in reading new stuff on LAVA.

    Is this what you mean? :shifty:

    I've got one LabVIEW book and I can't remember when was the last time I found something in there I didn't know. Books tend to start off with the beginning and well, stop whenever the topics get too particular or advanced. These books are probably as good as any for someone getting started with LabVIEW, but for veterans like you, it seems to me that a book you'd get interested in wouldn't sell much because of the reduced audience. By the time books are published, you'll probably have gotten all the good juicy new stuff from reading LAVA assiduously. :69_69:

  9. There is a private property of the LVClassLibrary class called "ParentClass" that lets you set the parent of a given LV Class. I asked the architect of LV Classes about this property, and he said:

    "The ParentClass property should have been public all along. It is public in LV 2010."

    So I see no reason not to share it. Here's a VI saved in 8.6 that contains the applicable property nodes.

    -D

    Great, now I can upgrade the LVClass API in CR to its latest version without infringing some taboo. ;)

  10. As for #2, if that were true, then nobody in Europe would ever be able to surf the web, as all web traffic (HTTP) uses port 80.

    Actually, that happens sometimes when you create a web server on your home computer. My ISP (Montreal) blocks outgoing data on port 80 to prevent me from using it as a web server (without paying big bucks for a commercial access). The workaround is to configure the web server to use a different port (http://www.example:1000) that is not blocked. I guess that's what he's talking about.

  11. The List_Ancestor_class.vi only lists the ancestors of my target class, and the original class I gave as a target.

    Yes, this is expected behavior. Ancestors cannot be children of your intial class.

    If C is child of B, and B is child of A, then:

    1- Wiring A.lvclass as input will give {A.lvclass} (self -> no ancestor class except LabVIEW Object)

    2- Wiring B.lvclass as input will give {B.lvclass ; A.lvclass} (self + parent "A")

    3- Wiring C.lvclass as input will give {C.lvclass; B.lvclass ; A.lvclass} (self + parent "B" + parent of B )

    etc.

    To find Child classes, you can't ask the parent class "Who are your children?". You need to list the directory where your classes reside at runtime and typecast to see if they match the class type of the parent.

    post-10515-127126229075_thumb.png

  12. Hi Jon,

    You'll have to separate this in two approaches: ancestors and descendants.

    For ancestors, there is a private method for getting the ancestor class. Running it recursively will get you all the ancestors. You can cut the chase by installing this API. There are methods found in the installed palette for doing what you want.

    For descendants, the parent doesn't have any record if a class is its descendant. So you've got to typecast the potential child to its alleged parent class and see if it throws you an error.

    post-10515-127125654764_thumb.png

  13. I ended up with 8 clusters, 1 for each column which made the resizing a lot easier. As for detecting the row that the event occurred in a made an event case for each control in a cluster and then searched the clusters[] property for the reference returned by the event to figure out with row (control) actually produced the event and went from there. Thanks for feedback.

    If you expand on what Yair posted, you can get it more easily than what you've described. (Inverse row/column indicator depending on the orientation of your cluster array.)

    post-10515-127118894566_thumb.png

×
×
  • Create New...

Important Information

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