Make an ARC Skill

Example: Dependencies, Files and Sub Folders

Your plugin may require dependencies, such as images, fonts or other various files.

DLL Files There are two types of DLL files, managed and unmanaged. A managed DLL is the type that can be added as a resource in the .Net project. The unmanaged DLL is a C or C++ library which is used with Interop calls. If you use either of these, you will be aware of which one is being used.

Any managed DLL file that was added as a resource to your project, should be included to be copied as a resource during compile time. Using managed DLL files does not require any path specifications in your code, as the assembly will be loaded when needed. Visual Studio will take care of copying the file, long as it is marked to be copied, during compile, into the root plugin folder. You should not need to worry about managed DLL location, as visual studio will take care of it, but it must be in the same folder as your plugin DLL.

The unmanaged DLL usage is a different story. When your plugin references an unmanaged DLL, it also specifies the path. If the path is not specified in the interop decleration, the default directory of your plugin is assumed. The unmanaged DLL must be added to your project as a content type, and included to be copied when compiled. This is because unmanaged DLL files are not added as resources in .Net Visual Studio projects, and therefore you must take care of specifying the file to be copied yourself, during compile time. This is easy by simply adding the file to the project as content, and selecting Copy Always from it's property settings.

The source code of an Example Project of using both unmanaged and managed DLL files can be found in the Oculus Rift Camera plugin, here: http://www.ez-robot.com/EZ-Builder/Plugins/view/59

Files & Sub Folders If your plugin requires to read files from the plugin folder, here's how you can get the path to the plugin root folder, by combing the guid and windows environment settings for the public path. The location of the plugin folder in the Public Documents is defined by the Windows Operating System. The Public Documents and plugin path is assembled with the method EZ_Builder.Constants.PLUGINS_FOLDER, as seen in code examples below.

This code example combines the user's public ARC plugin folder, that comes from the windows environment settings, the guid and the filename.


using System.IO;

string OculusRift_Fx_File = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "OculusRift.fx");

if (!File.Exists(OculusRift_Fx_File)) {

    MessageBox.Show("Unable to find the OculusRift.fx file that should have installed with this plugin. Cancelling");

    return;
}

So if you have a fonts sub folder in the plugin folder, or some sub in the plugin folder, you can do this...


      string FontFile = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "Fonts",
        "SomeFont.ttf");

Or to read the files from a sub folder of the plug directory...


      using System.IO;

      string fontFolder = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "Fonts");

      foreach (string fontFile in Directory.GetFiles(fontFolder)) {

            Console.WriteLine("File: {0}", fontFile);
      }        


ARC Pro

Upgrade to ARC Pro

Elevate your robot's capabilities to the next level with Synthiam ARC Pro, unlocking a world of possibilities in robot programming.

#9  

Thanks for the quick response.

This what happens when you are working on robotics when its way past your bed time.

You miss the obvious

PRO
Synthiam
#10  

No problem - i get it:D

#11  

User-inserted image

User-inserted image

User-inserted image

User-inserted image

Sorry but can I ask you something why I didn't see the ARC library when I added visual studio even though I set up the C ++. DLL library and there's another way to execute it and send / receive console in out but I don't know how to do it with EZ_builder?

PRO
Synthiam
#12   — Edited

Please follow the tutorial. It’s impossible to know why you’re plug-in isn’t showing up without asking you if you followed each step of the tutorial:). Reviewing your screenshots, it doesn’t appear as if any of the tutorial steps have been followed.

#13   — Edited

Hi i fixed it. thanks

Hello, I am trying the tutorial to get the robot to speak. I am using Visual studio. Currently, the sound is output from the pc instead of the robot. Is there a code I can attach so that the sound comes from the robot speakers instead of the pc?

PRO
Synthiam
#14   — Edited

Look in this tutorial for the step labeled "output audio from ezb". It’s lower down in the list. There’s instruction examples for either playing audio (ie mp3) or text to speech.

#15  

Error: the referenced component" EZ_builder,EZ_B" could not be found, DJ Sure i hope you can help me !

PRO
Synthiam
#16   — Edited

User-inserted image

Joinny, you have to add the referencing by following the instructions in this tutorial. They are outlined with step by step to easily follow. Click add references, and browse to the appropriate files as directed in the tutorial. I can’t write anything clearer in response. The step to add references is incredibly clear but you’re skipping it.