The RMP Motion Controller APIs
ControllerInterrupts.cpp
#include "rsi.h" // Import our RapidCode Library.
#include "HelperFunctionsCpp.h" // Import our SampleApp helper functions.
using namespace RSI::RapidCode;
void controllerInterruptsMain()
{
const int TIMEOUT = (5000); //ms
RSIEventType interruptType;
// Initialize Controller, enable interrupts
MotionController *controller = MotionController::CreateFromSoftware();
controller->InterruptEnableSet(true);
try
{
HelperFunctionsCpp::StartTheNetwork(controller); // [Helper Function] Initialize the network.
while (controller->OS->KeyGet((int32_t)RSIWait::RSIWaitPOLL) < 0)
{
// add code here to generate interrupts (move axes, etc.)
// wait for an interrupt
interruptType = controller->InterruptWait(TIMEOUT);
if (interruptType != RSIEventType::RSIEventTypeTIMEOUT)
{
printf("IRQ %ld\n", interruptType);
printf("%s\n", controller->InterruptNameGet());
printf("InterruptSourceNumber = %ld\n", controller->InterruptSourceNumberGet());
printf("InterruptSampleTimer = %ld\n", controller->InterruptSampleTimeGet());
printf("\n");
}
else
{
printf("Timeout waiting for interrupts...\n");
}
}
}
catch (RsiError const& err)
{
printf("\n%s\n", err.text);
}
controller->Delete(); // Delete the controller as the program exits to ensure memory is deallocated in the correct order.
system("pause"); // Allow time to read Console.
}
static void CheckErrors(RapidCodeObject *rsiObject)
Checks for errors in the given RapidCodeObject and throws an exception if any non-warning errors are ...
static void StartTheNetwork(MotionController *controller)
Starts the network communication for the given MotionController.
void Delete(void)
Delete the MotionController and all its objects.
void InterruptEnableSet(bool enable)
Control interrupts for this class.
Represents the RMP soft motion controller. This class provides an interface to general controller con...
Definition rsi.h:762
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3736
int32_t InterruptSourceNumberGet()
Get the number (or index) of the object (Axis, Motor, etc) that generated the interrupt.
int32_t InterruptSampleTimeGet()
Get the sample timer value when the last interrupt was generated.
const char *const InterruptNameGet()
Get the text name of an interrupt type.
RSIEventType InterruptWait(int32_t milliseconds)
Suspend the current thread until an interrupt arrives from the controller.
int32_t KeyGet(int32_t milliseconds)
Wait for a key to be pressed and return its value.
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
Definition rsi.h:105
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:911