Development and Deployment Practices

cancel
Showing results for 
Search instead for 
Did you mean: 

Configuration Editor Framework (CEF)

Please submit questions, feedback and suggestions for the Configuration Editor Framework in this thread.

 

Install Toolkit - This link will launch VI Package Manager and install the latest CEF package.


Alternative Download - If you require a direct download, you can access the VIP file from our FTP directory. We recommend the VIP file with the highest version number or most recently modified date.

authored by
Christian L, CLA
Applications Engineering Senior Manager - Data Acquisition, Control, and Real-Time Test
National Instruments - Austin, TX

  
Message 1 of 60
(8,866 Views)

I thought this framework would work well for a new project I'm working on. This is really my first time working with Dynamic Dispatch and DVR style GOOP, so a lot of new stuff for me.

 

Couple things I've noticed in the default project that gets built from the New Project Wizard.

  • The "CEF Overview" document and the comments in the code say the file is saved to the GXML format when they are actually saved to a binary format. Not a big deal as either works and it's easily changed to use the GXML format. (which I did)
  • For the second one, if you 'Duplicate' a Group, "Copy" is appended to the Group name you duplicated. I see where that's done in the "Duplicate.vi" in the Group class. When you Duplicate a Voltage or Current channel, the "Copy" is not appended to the channel name, so you end up with a duplicate name. Since neither the "Channel", "Voltage" or "Current" classes have a "Duplicate.vi", the "Duplicate.vi" from the parent Node class runs which does not add the "Copy" text.
    • I added a Duplicate.vi to the Channel class to fix this. 


Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 2 of 60
(8,135 Views)
Highlighted
What would cause no data to make it into the repo?

I've modified the framework to match the data I need. Everything seems to run just fine. I can build up the tree with all the options, but when I save it, but the XML file just has a single empty data structure.

Looking at the Save VI, the cluster array from the repo is empty.

The class hierarchy looks correct. One repo class inheriting from the main repo class and the rest all inherit from the Node class.

What am I missing?


Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 3 of 60
(8,112 Views)

PING



Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 4 of 60
(8,062 Views)

I finally figured out my issue. 

 

I had some problems in the "ToRepo" and FromRepo" methods.

 

All is well (for now). I have one more level to add to the tree that is a bit complex so we'll see how it goes.



Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 5 of 60
(8,048 Views)

Hi EdDickens, sorry for the delay i was not suscribed to this thread.

 

It’s good you are using the framework. Also we have now the source code in github:

https://github.com/NISystemsEngineering/CEF

For your questions you are right now we are saving it to a binary file, previous versions used GXML, but I got some feedback about removing dependencies, specially because it was just an example. I have to update the documentation on that.

For your second question you are right that is sort of the intended behavior. The classes in the example are just examples of things that can be done with the framework. And the duplicate.vi is an override to specify what behavior you want when a tree node is duplicated. In some cases you might want to add a number instead of copy, or in this case I was allowing the channels to have the same name as they were in different groups. For example if you have as group’s machine 1 and machine 2, you might want to have a temperature channel in both machines. And the purpose of the VI is to modify that behavior.

 

Can you save and load your configuration? The main reason the repo could be empty is that the To Repo Vis are having an issue. Did you modify them? Did you removed the call to parent (I have heard some feedback that I need more documentation on that part.

If you have more questions let me know and if you foudn bugs you can report them in the github page.

Best Regards

Benjamin C
Principal Systems Engineer // CLA // CLED
0 Kudos
Message 6 of 60
(8,044 Views)

Hi,

 

I tried to build an executable from this project, but the program gives me an error when it tries to load the classes and glyphs.

I also tried to copy both folders to the executable directory, but then the ui.vi's from group and channel give an error saying that the vi is broken.

How i can avoid this problems?

 

Regards,

Pedro

ENDIPREV Lda
0 Kudos
Message 7 of 60
(7,962 Views)

HI ENDIPREV

  The problem you are having is the link for both the Glyphs and the classes is dynamic and LabVIEW will not include them in the build by default. I will add this as aditional documentation to the framework and add a build to the sample project.

 So what you need to do is add the glyphs and Classes folders in Always include

 

AlwaysInclude.PNG

Create a destination with the Path of the folder of the aplication

Destinations.PNG

 

And set the Folders to be placed there as a folder in Source File settings

Source File Settings.PNG

 

Aditionally you should remove "remove unused members in project libraries" that is selected by default in aditional exlusions

 

exclusions.PNG

 

If you have any other questions let me know.

Best Regards

Benjamin C
Principal Systems Engineer // CLA // CLED
Message 8 of 60
(7,955 Views)

Hi BeCeGa,

Thank you for your reply, it was very elucidative and solved my problem.

Best Regards,
Pedro

ENDIPREV Lda
0 Kudos
Message 9 of 60
(7,946 Views)

I'm likely missing something obvious here but...

 

I'd like to grab the name (Text) of a Parent item and pass it into the Initialize functions of certian child functions so the Parents name can be appended to the Childs name.

 

The "AddNode" VI has both the Parent Node ID and the Parents DVR that could be passed into the Initialize VI through the "parameters" control. I can't seem to figure out how to get the Parents "Text" from either of those values.



Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 10 of 60
(7,663 Views)