The RMP Motion Controller APIs
Helper Functions

This class includes the source code of all our SampleAppsCPP helper functions.

Helper functions were created to reduce code. Please note that if you would like to use this classes on your personal project you will have to replicate this class.

Precondition
This sample code presumes that the user has set the tuning paramters(PID, PIV, etc.) prior to running this program so that the motor can rotate in a stable manner.
Warning
This is a sample program to assist in the integration of the RMP motion controller with your application. It may not contain all of the logic and safety features that your application requires.
#ifndef CPP_HELPER_FUNCTIONS
#define CPP_HELPER_FUNCTIONS
#include "rsi.h" // Import our RapidCode Library.
#include <iostream>
#include <cstdlib>
using namespace std;
using namespace RSI::RapidCode;
{
public:
static void CheckErrors(RapidCodeObject* rsiObject)
{
bool hasErrors = false;
std::string errorStrings("");
while (rsiObject->ErrorLogCountGet() > 0)
{
const RsiError* err = rsiObject->ErrorLogGet();
errorStrings += err->what();
if (!err->isWarning)
{
hasErrors = true;
}
}
if (errorStrings.size() > 0)
{
printf("%s", errorStrings.c_str());
}
if (hasErrors)
{
throw std::exception(errorStrings.c_str());
}
}
static void StartTheNetwork(MotionController* controller)
{
// Initialize the Network
if (controller->NetworkStateGet() != RSINetworkState::RSINetworkStateOPERATIONAL) // Check if network is started already.
{
cout << "Starting Network.." << endl;
controller->NetworkStart(); // If not. Initialize The Network. (This can also be done from RapidSetup Tool)
}
if (controller->NetworkStateGet() != RSINetworkState::RSINetworkStateOPERATIONAL) // Check if network is started again.
{
int messagesToRead = controller->NetworkLogMessageCountGet(); // Some kind of error starting the network, read the network log messages
for (int i = 0; i < messagesToRead; i++)
{
cout << controller->NetworkLogMessageGet(i) << endl; // Print all the messages to help figure out the problem
}
cout << "Expected OPERATIONAL state but the network did not get there." << endl;
//throw new RsiError(); // Uncomment if you want your application to exit when the network isn't operational. (Comment when using phantom axis)
}
else // Else, of network is operational.
{
cout << "Network Started" << endl;
}
}
};
#endif
RSI::RapidCode::RsiError::isWarning
bool isWarning
Whether the error is or is not a warning.
Definition: rsi.h:101
RSI::RapidCode::RsiError
The RsiError object contains information about any RapidCode API object's error/exception.
Definition: rsi.h:92
RSI::RapidCode::MotionController::NetworkStart
void NetworkStart()
Start the network with RSINetworkStartupMethodNORMAL.
RSI::RapidCode
RSI::RapidCode::MotionController::NetworkLogMessageGet
const char *const NetworkLogMessageGet(int32_t messageIndex)
RSI::RapidCode::RapidCodeObject
The RapidCode base class. All non-error objects are derived from this class.
Definition: rsi.h:153
RSI::RapidCode::RapidCodeObject::ErrorLogGet
const RsiError *const ErrorLogGet()
Get the next RsiError in the log.
RSI::RapidCode::MotionController
The MotionController object represents the RMP INtime soft motion controller.
Definition: rsi.h:750
RSI::RapidCode::RsiError::what
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
Definition: rsi.h:139
RSI::RapidCode::RapidCodeObject::ErrorLogCountGet
int32_t ErrorLogCountGet()
Get the number of software errors in the error log.
RSI::RapidCode::MotionController::NetworkLogMessageCountGet
int32_t NetworkLogMessageCountGet()
HelperFunctions
Helper Functions for checking logged creation errors, starting the network, etc.
Definition: HelperFunctions.cs:50
RSI::RapidCode::MotionController::NetworkStateGet
RSINetworkState NetworkStateGet()