Skip to main content

Instructions

1. Download the latest copy of the API DLL for your product

Visit the product page for your product and look for the C# API download, for example for the SMD4, visit the link below, and look for the downloads tab at the bottom of the page. https://arunmicro.com/products/smd4-stepper-motor-drive/

2. Install workloads for Visual Studio

To install a workload, or check what is installed, open Visual Studio and go to 'Tools > Get Tools and Features...'

Install the following workloads:

  • .NET desktop development

  • Desktop development with C++, with the default installation components PLUS the following:

    • C++/CLI support for v143 build tools

Use install or modify as required.

image.png

3. Creating the project 

Start the new project wizard (File > New > Project). Choose one of the following, then proceed to create your project as normal.

  • CLR Empty Project (.NET Framework)

  • CLR Console App(.NET Framework) 

A screenshot of a computer program

Description automatically generated

4. Referencing the API DLL file

The API DLL file needs to be referenced in your project. To do this go to:

  • Solution Explorer
  • Right click on the project, Add > Reference… 
  • Choose ‘browse’ and select the DLL file you downloaded previously (example below shows SMD3 API)

Finally, click OK and the DLL will be added as a reference to your project.

A screenshot of a computer

Description automatically generated 

5. Using the API

Example code (main.cpp), demonstrating connecting and moving the motor.

#include <windows.h>
#include <iostream>
#include <msclr/marshal_cppstd.h> // Include for string conversion

// Include CLR headers
#include <vcclr.h>
#pragma comment(lib, "mscoree.lib")

// Import the mscorlib library
#import "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.tlb" raw_interfaces_only \
    high_property_prefixes("_get","_put","_putref") \
    rename("ReportEvent", "InteropServices_ReportEvent")

using namespace System;
using namespace msclr::interop; // Namespace for string conversion


// Main function to use the DLL in a native C++ application
int main() {
    try {
        // Create a instance of the class SMD3 from SMD3API namespace in the dll
        auto smd3 = gcnew SMD3API::SMD3();
        
        // Connect the SMD3 on COM3
        smd3->Connect("COM3 TEXT");

        // Start motor spinning clockwise
        smd3->MoveVelocity("+");        

        // Wait for user before stopping motor
        std::cout << "Press Enter to stop motor" << std::endl;
        std::cin.get(); 
        smd3->Stop();
    }
    catch (Exception^ ex) {
        // Convert System::String^ to std::string
        std::string errorMessage = marshal_as<std::string>(ex->Message);
        std::cerr << "Exception: " << errorMessage << std::endl;
    }
    return 0;
}