ARC Pro

Upgrade to ARC Pro

Synthiam ARC Pro is a cool new tool that will help unleash your creativity with programming robots in just seconds!

ARC Classes, Methods & Events

This outlines the ARC API which has Events, Methods, and Fields. You can search for any of those with the browser using CTRL-F to find all events, for example. You will find many classes and respective methods that may not be documented here because they are less commonly used. These are the most common API calls for robot skills.


Jump To...

InterfaceBuilder

Method: ARC.InterfaceBuilder.UC.ISimulateMouseEvent.SimulateMouseEvent( System.Windows.Input.MouseButtonState, System.Drawing.Point )


Simulates a mouse event and sends the event point relative to the control's Location

Method: ARC.InterfaceBuilder.UC.ISimulateMouseEvent.ReleaseMouseEvent


Releases any mouse events that may have been sent. IE restores the control to a mouse unclicked state

Type: ARC.InterfaceBuilder.ResourceImages


A strongly-typed resource class, for looking up localized strings, etc.

Type: ARC.InterfaceBuilder.ResourceTemplates


A strongly-typed resource class, for looking up localized strings, etc.


MessagingService

Type: ARC.MessagingService.MessagingService


The messaging framework which allows controls to broadcast data to all other controls which are listening for relevant data.

Event: ARC.MessagingService.MessagingService.OnMessageReceived


Subscribe to receive messages sent from other controls that may contain relevant data for your control.

Method: ARC.MessagingService.MessagingService.BroadcastMessage( System.String, System.Object )


Broadcast data to all controls that are listening for relevant data

Event: ARC.MessagingService.Navigation2DV1.Messenger.OnNewLocationPointScanPoints


Combined navigation (positioning) and scanning data event.
This is ideal if you're requiring both data groups for your navigation/mapping solution.
The event is fired on every navigation update. All scanning data is collected between the last navigation update and this one.

Event: ARC.MessagingService.Navigation2DV1.Messenger.OnNewScan


When new scan points are received by a level #3 Group #1 sensor.
If you are creating a navigator, it is recommended to use teh OnNewLocationPointScanPoints becaue it contains both the combined location and scan points in one event

Event: ARC.MessagingService.Navigation2DV1.Messenger.OnNewLocation


When a new location is updated by a Lavel #3 Group #2 sensor.
If you are creating a navigator, it is recommended to use teh OnNewLocationPointScanPoints becaue it contains both the combined location and scan points in one event

Event: ARC.MessagingService.Navigation2DV1.Messenger.OnNavigationStatusChanged


When a Level #3 Group #1 sensor wishes to alert the navigator that it sould pause or continue navigating based on obstacles

Field: ARC.MessagingService.Navigation2DV1.Messenger._scanPoints


Stores the scan points if someone has subscribed to the OnNewLocationPointScanPoints event

Field: ARC.MessagingService.Navigation2DV1.Messenger.Location


The last reported position of the robot relative to the starting position

Field: ARC.MessagingService.Navigation2DV1.Messenger.DegreesHeading


The last reported heading degree the robot is facing relative to the starting degrees

Method: ARC.MessagingService.Navigation2DV1.Messenger.Clear


Clear the stored scanpoints

Method: ARC.MessagingService.Navigation2DV1.Messenger.ChangeNavigationStatus( ARC.MessagingService.Navigation2DV1.Messenger.NavigationStatusEnum )


Change the navigation status for the navigator (level #1) if we should be navigating or not

Method: ARC.MessagingService.Navigation2DV1.Messenger.UpdateLocation( ARC.MessagingService.Navigation2DV1.LocationPoint )


Update the location of the robot.
The navPoint is an offset from the starting position (0, 0) in cm

Method: ARC.MessagingService.Navigation2DV1.Messenger.UpdateLocation( System.Single, System.Single, System.Byte, System.Single )


Update the location of the robot.
The navPoint is an offset from the starting position (0, 0) in cm

Method: ARC.MessagingService.Navigation2DV1.Messenger.UpdateScan( ARC.MessagingService.Navigation2DV1.ScanPoint[] )


Update the scan of the current location with a list of scan points
Each scan point is a different degree of the scan with a distance in cm of the deteced object.
If no object detected, a distance of 0 cm is specified

Method: ARC.MessagingService.Navigation2DV1.Messenger.UpdateScan( ARC.MessagingService.Navigation2DV1.ScanPoint )


Update the scan of the current location with a list of scan points
*Performance note: If you are updating with many scan points of many degrees, do not use this override. Use the array override
Each scan point is a different degree of the scan with a distance in cm of the deteced object.
If no object detected, a distance of 0 cm is specified

Method: ARC.MessagingService.Navigation2DV1.Messenger.UpdateScan( System.Single, System.Byte, System.Single )


Update the scan of the current location with a list of scan points
*Performance note: If you are updating with many scan points of many degrees, do not use this override. Use the array override
Each scan point is a different degree of the scan with a distance in cm of the deteced object.
If no object detected, a distance of 0 cm is specified

Field: ARC.MessagingService.Navigation2DV1.LocationPointScanPoints.LocationPoint


The nav point

Field: ARC.MessagingService.Navigation2DV1.LocationPointScanPoints.ScanPoints


A list of scan points

Field: ARC.MessagingService.Navigation2DV1.ScanPoint.Distance


The distance in cm of any detected object from the center of the robot, otherwise 0

Field: ARC.MessagingService.Navigation2DV1.ScanPoint.Confidence


Confidence of the detected object (0 = not confident, 255 = very confident)

Field: ARC.MessagingService.Navigation2DV1.ScanPoint.Degree


The degree of where the object was detected

Field: ARC.MessagingService.Navigation2DV1.LocationPoint.X


The distance in CM from the originating X position since tracking began

Field: ARC.MessagingService.Navigation2DV1.LocationPoint.Y


The distance in CM from the originating Y position since tracking began

Field: ARC.MessagingService.Navigation2DV1.LocationPoint.DegreesHeading


When initialized, the robot is determined to be facing 0 degrees.
This is the degrees the robot is currently facing relative to the initialization reference angle
If a robot were to strafe, this angle doesn't change.
If a robot rotates left, the angle begins to increase

Field: ARC.MessagingService.Navigation2DV1.LocationPoint.Confidence


Confidence of the location (0 = not confident, 255 = very confident)

Method: ARC.MessagingService.Navigation2DV1.LocationPoint.ToPoint


Returns the X/Y cordinate as a point object

Method: ARC.MessagingService.Navigation2DV1.LocationPoint.ToPoint( System.Single )


Returns the X/Y cordinate as a point object and increases by the offset value

Method: ARC.MessagingService.Navigation2DV1.LocationPoint.ToPoint( System.Single, System.Single )


Returns the X/Y cordinate as a point object and increases by the offset value

Method: ARC.MessagingService.Navigation2DV1.LocationPoint.Equals( System.Object )


Determines if the current object cordinates equal the specified object cordinates


MovementManager

Event: ARC.MovementManager.OnMovement


Event risen when for movement action

Event: ARC.MovementManager.OnMovement2


Event risen when for movement action with speed

Event: ARC.MovementManager.OnSpeedChanged


Event risen when for speed changed

Field: ARC.MovementManager.LocomotionStyle


The type of locomotion that this robot uses to move in physical space

Type: ARC.MovementManager.LocomotionStyleEnum


List of locomotion styles

Field: ARC.MovementManager.LocomotionStyleEnum.Undefined


Locomotion type has not been specified by the movement panel, or a movement panel doesn't exist
Check the EZBManager.MovementPanel to see if it is null. If it is null, a movement panel doesn't exist
If it is not null, then the movement panel did not specify a locomotion type

Field: ARC.MovementManager.LocomotionStyleEnum.Wheeled_Steering


The robot has 2 wheels in the front that steer like an automobile

Field: ARC.MovementManager.LocomotionStyleEnum.Wheeled_Tracked


The robot has tracks like a tank for steering

Field: ARC.MovementManager.LocomotionStyleEnum.Drone


The robot flies like a drone with 4 or more blades

Field: ARC.MovementManager.LocomotionStyleEnum.GAIT


The robot walks with a GAIT like a hexapod or humanoid

Field: ARC.MovementManager.LocomotionStyleEnum.Helicopter


The robot flies like a helicopter (similar to a drone but not)

Field: ARC.MovementManager.LocomotionStyleEnum.Plane


The robot is a plane and flies with wings

Field: ARC.MovementManager.LocomotionStyleEnum.Rocket


The robot is a jet propelled rocket

Field: ARC.MovementManager.LocomotionStyleEnum.Submarine


The robot is a submarine

Field: ARC.MovementManager.LocomotionStyleEnum.Boat


The robot is a boat with a rudder, steerable jet or steerable motor

Type: ARC.MovementManager.MovementDirectionEnum


directions supported by movement manager

Field: ARC.MovementManager.MovementDirectionEnum.Stop


The robot is stopping

Field: ARC.MovementManager.MovementDirectionEnum.Forward


The robot is moving forward

Field: ARC.MovementManager.MovementDirectionEnum.Reverse


The robot is reversing

Field: ARC.MovementManager.MovementDirectionEnum.Left


The robot is turning left

Field: ARC.MovementManager.MovementDirectionEnum.Right


The robot is turning right

Field: ARC.MovementManager.MovementDirectionEnum.Up


The robot is moving up

Field: ARC.MovementManager.MovementDirectionEnum.Down


The robot is moving down

Field: ARC.MovementManager.MovementDirectionEnum.RollRight


The robot is rolling right

Field: ARC.MovementManager.MovementDirectionEnum.RollLeft


The robot is rolling left

Field: ARC.MovementManager.MovementDirectionEnum.Takeoff


Takeoff the robot (if flying)

Field: ARC.MovementManager.MovementDirectionEnum.Land


Land the robot (if flying)

Field: ARC.MovementManager.MovementDirectionEnum.Emergency


Handle an emergency situation where the robot needs to stop everything

Field: ARC.MovementManager.MovementDirectionEnum.Custom


A custom movement was specified
Check the GetCustomMovementID to see what custom movement you specified and react accordingly

Method: ARC.MovementManager.GetSpeed


Get the global speed

Method: ARC.MovementManager.GetSpeedLeft


Get the global speed for Left wheel

Method: ARC.MovementManager.GetSpeedRight


Get the global speed for Right wheel

Method: ARC.MovementManager.SetSpeed( System.Byte )


Set the speed for both wheels to be the same value

Method: ARC.MovementManager.SetSpeed( System.Byte, System.Byte )


Set the speed for each wheel

Method: ARC.MovementManager.SetSpeedLeft( System.Byte )


Set the left wheel speed

Method: ARC.MovementManager.SetSpeedRight( System.Byte )


Set the left wheel speed

Method: ARC.MovementManager.GoStop


Stops the robot if moving

Method: ARC.MovementManager.GoForward( System.Byte )


Moves robot forward at specified speed

Method: ARC.MovementManager.GoForward


Moves robot forward

Method: ARC.MovementManager.GoForward( System.Byte, System.Byte )


Moves robot forward

Method: ARC.MovementManager.GoReverse( System.Byte )


Moves robot backward at specified speed

Method: ARC.MovementManager.GoReverse


Moves robot backward

Method: ARC.MovementManager.GoReverse( System.Byte, System.Byte )


Moves robot backward
If FORCE=TRUE then the command will be set again even though the movement may already be the same direction.
Also, FORCE=TRUE will not raise the OnMovement event

Method: ARC.MovementManager.GoLeft( System.Byte )


Turns robot left at specified speed

Method: ARC.MovementManager.GoLeft


Turns robot left

Method: ARC.MovementManager.GoLeft( System.Byte, System.Byte )


Turns robot left

Method: ARC.MovementManager.GoRight( System.Byte )


Turns robot right at specified speed

Method: ARC.MovementManager.GoRight


Turns robot right at specified speed

Method: ARC.MovementManager.GoRight( System.Byte, System.Byte )


Turns robot right

Method: ARC.MovementManager.Takeoff


Robot Takes off (Flying robots)

Method: ARC.MovementManager.Land


Robot Lands (Flying robots)

Method: ARC.MovementManager.GoUp


Robot Goes Up (Drone flying robots)

Method: ARC.MovementManager.GoDown


Robot Goes Down (Drone flying robots)

Method: ARC.MovementManager.GoRollRight


Robot Rolls Right (Drone flying robots)

Method: ARC.MovementManager.GoRollLeft


Robot Rolls Left (Drone flying robots)

Method: ARC.MovementManager.GoEmergency


Instruct robot to execute the emergency mode (if supported)
For example, in a drone this will shut off the motors (EAK!)

Method: ARC.MovementManager.GoCustom( System.String, System.Byte, System.Byte )


To use a custom movement with your own Movement ID
The movement ID from the OnMovement events can be read with GetCustomMovementId
This is if you wanted to have your own movement handled by the movement manager

Method: ARC.MovementManager.GoCustom( System.String, System.Byte )


To use a custom movement with your own Movement ID
The movement ID from the OnMovement events can be read with GetCustomMovementId
This is if you wanted to have your own movement handled by the movement manager

Method: ARC.MovementManager.GoCustom( System.String )


To use a custom movement with your own Movement ID
The movement ID from the OnMovement events can be read with GetCustomMovementId
This is if you wanted to have your own movement handled by the movement manager


Scripting

Event: ARC.Scripting.JavaScript.JavascriptEngine.OnSetValues


Event to set custom values, methods, etc to the JavaScript engine

Event: ARC.Scripting.JavaScript.JavascriptEngine.OnUnsetValues


Event to remove custom values, methods, etc from the JavaScript engine

Method: ARC.Scripting.JavaScript.JavascriptEngine.GetMethodsFromReflectionForIntellisense( System.String )


Get all intellisense

Method: ARC.Scripting.ParseUtilities.ToBoolean( System.Object )


Checks if the inObj is a boolean.
Looks for "true", "false", "0", or "1"
This is useful when parsing parameters for the ControlCommand (i.e. SendCommand override)

Method: ARC.Scripting.Python.PythonEngine.GetMethodsFromReflectionForIntellisense( System.String )


Get all intellisense

Event: ARC.Scripting.ScriptEngineBase.OnStart


Event executed when a script has been started

Event: ARC.Scripting.ScriptEngineBase.OnDone


Event executed when the script has completed executing

Event: ARC.Scripting.ScriptEngineBase.OnResult


Event executed for the output of the script. For example the PRINT() statement

Event: ARC.Scripting.ScriptEngineBase.OnError


Event executed when a script has been started

Method: ARC.Scripting.EZScript.ScriptEngineEZScript.StartScriptASync( System.String )


Start the script in the background

Method: ARC.Scripting.EZScript.ScriptEngineEZScript.StartScriptBlocking( System.String )


Execute the script and block until it has completed

Event: ARC.Scripting.ScriptManager.OnAdded


Event raised when a new executor is created

Event: ARC.Scripting.ScriptManager.OnRemoved


Event raised when an executor is removed.
The executor is disposed after this event.

Method: ARC.Scripting.ScriptManager.AddCompiler( ARC.Scripting.Executor )


Add an executor to the collection manually

Method: ARC.Scripting.ScriptManager.DoesExecutorExist( System.String )


Returns true/false if the executor name exists in the collection

Method: ARC.Scripting.ScriptManager.GetExecutor( System.String )


Gets a reference to the executor specified by name, otherwise creates a new one and adds to the collection

Method: ARC.Scripting.ScriptManager.ClearAllExecutors


Stops scripts, clears all executors in the collection and disposes them

Method: ARC.Scripting.ScriptManager.RemoveExecutor( ARC.Scripting.Executor )


Removes the executor from the collection and disposes it

Method: ARC.Scripting.ScriptManager.RemoveExecutor( System.String )


Removes the executor from the collection and disposes it

Type: ARC.Scripting.VariableManager


Variable Manager is a static instance which stores all variables in the environment.

Variables come in two types:
1) Normal variable (i.e. $x = 1)
2) Array (i.e. $x[2] = 1)

Variables accept two data types for values:
1) String ("hello world")
2) Numeric (-2.31)

When storing a string variable value, never specify start/end quotes on the string. This module will take care of that for you.

Variable values may contain escape characters:
1) \r
2) \n
3) \"

Event: ARC.Scripting.VariableManager.OnVariableChanged


Event raised when a value of a variable has been changed.
If the variable is an array, the index will be populated with a value greater than 0
If the variable is not an array, the index will be -1
If you want the variable type, use the OnVariableChanged2 event

Event: ARC.Scripting.VariableManager.OnVariableChanged2


Event raised when a value of a variable has been changed.
If the variable is an array, the index will be populated with a value greater than 0
If the variable is not an array, the index will be -1

Type: ARC.Scripting.VariableManager.VariableTypeCls


This is a variable entry, which contains the variable name and the value.
The value can either be String or Numeric, which is determined inside of SetValue().
SetValue() will check to see if the value is a number, if so, it will be stored as such and no quotes will be wrapped around it
If the value is a string, the SetValue() will automatically wrap quotes around it.
*Note: Do not ever wrap your own strings in quotes!

Method: ARC.Scripting.VariableManager.VariableTypeCls.SetValue( System.Object )


*Note: Never wrap the value in quotes. This function will wrap the string in quotes for you.
Also note that your string must have escaped characters (\r, \n, \")

Method: ARC.Scripting.VariableManager.SubsituteWithValues( System.Object )


If you pass a string into here, it will replace all instances of known $variables with their appropiate value

Method: ARC.Scripting.VariableManager.GetVariable( System.String )


Get the value of a variable

Method: ARC.Scripting.VariableManager.GetVariable( System.String, System.Int32 )


Get the value of a variable array by the specified index

Method: ARC.Scripting.VariableManager.SetVariable( System.String, System.Boolean )


Set the value of a variable

Method: ARC.Scripting.VariableManager.IsVariableReservedWord( System.String )


Throws an esception if the variableName is a reserved word (i.e. $date, $month, $year, etc)
This will also throw an exception if the variable does not start with a $

Method: ARC.Scripting.VariableManager.DoesVariableExist( System.String )


Check if a variable has been defined in memory

Method: ARC.Scripting.VariableManager.IsVariableArray( System.String )


Is the variable an array?

Method: ARC.Scripting.VariableManager.SetVariable( System.String, System.Object )


Set the value of a variable

Method: ARC.Scripting.VariableManager.CreateVariableArray( System.String, System.Int32 )


Create an array with empty values in every position of Size

Method: ARC.Scripting.VariableManager.CreateVariableArray( System.String, System.Object, System.Int32 )


Create an array with default value in every position of Size

Method: ARC.Scripting.VariableManager.CreateVariableArray``1( System.String, ``0[] )


Create an array with specified data

Method: ARC.Scripting.VariableManager.FillVariableArray( System.String, System.Object )


Fill an entire array with the specified value

Method: ARC.Scripting.VariableManager.GetArraySize( System.String )


Returns the length of an array

Method: ARC.Scripting.VariableManager.AppendToVariableArray( System.String, System.Object )


Grows the size of an array by 1 and adds this value to it.
You will need to CreateArray() before this can be used

Method: ARC.Scripting.VariableManager.SetVariable( System.String, System.Object, System.Int32 )


Set the value of a variable within an array at the specified index
You will need to CreateArray before this can be called on a variable

Method: ARC.Scripting.VariableManager.DumpVariablesToString


Write all variables to a string for debugging purposes

Method: ARC.Scripting.VariableManager.ClearVariable( System.String )


Clear specified variable and value from memory

Method: ARC.Scripting.VariableManager.ClearVariables


Clears all variables and associated values from memory
Sets the default variables (i.e. movement, ezbsound, navigation status)

Method: ARC.Scripting.VariableManager.IsVariableValid( System.String )


Throws an exception with the formatting error of a variable name

Field: ARC.Scripting.Executor._textBox


For logging

Event: ARC.Scripting.Executor.OnStart


Event executed when a script has been started

Event: ARC.Scripting.Executor.OnDone


Event executed when the script has completed executing

Event: ARC.Scripting.Executor.OnResult


Event executed for the output of the script. For example the PRINT() statement

Event: ARC.Scripting.Executor.OnError


Event executed when a script has been started

Method: ARC.Scripting.Executor.BindOutputToTextBox( System.Windows.Forms.TextBox )


Binds the output (debug, errors, start, end, result) to a textbox


Renderer

Method: ARC.Renderer.ThemeRenderer.ApplyTheme( System.Drawing.Color, System.Windows.Forms.Control[] )


Apply the theme to the control. This can only be called once.
There's no need for you to call this, because it's called by the ARC control manager automatically.
You can provide a list of controls to ignore, and the theme won't be added to them
You can also add SkipTheme to the TAG element of any WinForms control to skip theming of that control and children.

Method: ARC.Renderer.ThemeRenderer.ApplyTheme( System.Windows.Forms.Control[] )


Apply the theme to the control. This can only be called once.
There's no need for you to call this, because it's called by the ARC control manager automatically.
You can provide a list of controls to ignore, and the theme won't be added to them
You can also add SkipTheme to the TAG element of any WinForms control to skip theming of that control and children.

Method: ARC.Renderer.ThemeRenderer.ApplyTheme


Apply the theme to the control/form using the default settings of the registry theme.

Method: ARC.Renderer.ThemeRenderer.ApplyTheme( System.Drawing.Color )


Apply the theme to the control. This can only be called once.
There's no need for you to call this, because it's called by the ARC control manager automatically.
You can also add SkipTheme to the TAG element of any WinForms control to skip theming of that control and children.


Services

Type: ARC.Services.AutoPosition.AutoPositionService


This is auto position engine which the Auto Position control uses. You can define servos, frames and actions for this.
This will run the auto position action in a background thread.

Event: ARC.Services.AutoPosition.AutoPositionService.OnComplete


Event risen when movement is complete

Event: ARC.Services.AutoPosition.AutoPositionService.OnStartAction


Event risen when an action is started

Event: ARC.Services.AutoPosition.AutoPositionService.OnStartFrame


Event risen when a frame is started

Field: ARC.Services.AutoPosition.AutoPositionService.Config


Set/Get the current configuration of Frames and Actions

Field: ARC.Services.AutoPosition.AutoPositionService.Name


Unique name for this auto position instance

Method: ARC.Services.AutoPosition.AutoPositionService.SetSpeed( System.Byte )


Value between 0-255 (0=slow, 255=fast)

Method: ARC.Services.AutoPosition.AutoPositionService.RequireInit


Set the require init flag so that the next time a transition is requested, it initializes the servos first.

Method: ARC.Services.AutoPosition.AutoPositionService.Stop


Stops the current movement. Blocks until stop is successful.

Method: ARC.Services.AutoPosition.AutoPositionService.MoveImmediate( System.String )


Move to the specified frame

Method: ARC.Services.AutoPosition.AutoPositionService.MoveToFrame( ARC.Services.AutoPosition.AutoPositionActionFrame )


Move into the selected position from the current position

Method: ARC.Services.AutoPosition.AutoPositionService.MoveToFrame( System.String, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32 )


Move into the selected position from the current position

Method: ARC.Services.AutoPosition.AutoPositionService.ExecAction( System.String )


Execute the Action

Method: ARC.Services.AutoPosition.AutoPositionService.ExecAction( ARC.Services.AutoPosition.AutoPositionAction.ActionTypeEnum )


Execute the Action

Method: ARC.Services.AutoPosition.AutoPositionService.AddPauseToNewAction( System.String, System.Int32 )


Add a pause frame to the specified action title with the number of milliscond delay.
If the action doesn't exist, it will be created for you.
This returns new action if it was created, or the old action that matched the name.

Method: ARC.Services.AutoPosition.AutoPositionService.AddAllServoPositionsToNewAction( System.String )


Read all of the servo positions that are defined in this auto position and add those positions to a new action as a new frame.
This returns the new action or the existing action that matched the title.

Method: ARC.Services.AutoPosition.AutoPositionService.AddAllServoPositionsToNewAction( System.String, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32 )


Read all of the servo positions that are defined in this auto position and add those positions to a new action as a new frame.
This returns the new action or the existing action that matched the title.

Method: ARC.Services.AutoPosition.AutoPositionAction.ToString


Returns the title of this action as a string

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddFrame( ARC.Services.AutoPosition.AutoPositionFrame )


Add a frame to the list of frames. Returns the GUID of the frame

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddFrame( System.String )


Add a frame to the list of frames. Returns the GUID of the frame

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddFrame( System.String, System.String )


Add a frame to the list of frames. Returns the GUID of the frame

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddFrame( System.String, System.String, System.Int32[] )


Add a frame to the list of frames. Returns the GUID of the frame

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddFrame( System.String, System.Int32[] )


Add a frame to the list of frames. Returns the GUID of the frame

Method: ARC.Services.AutoPosition.AutoPositionConfig.GetUniqueFrameTitle( System.String )


Get a unique frame title by adding a number to the end

Method: ARC.Services.AutoPosition.AutoPositionConfig.AddAction( ARC.Services.AutoPosition.AutoPositionAction )


Add an action to the list of actions. Returns the GUID of the action


TimerSmart

Event: ARC.TimerSmart.Elapsed


Synthiam smart timer
- only allow once execution of an elapsed event at one time
- offers an IsEventRunning to know if an evnet is currently being executed from another thread
- offers IsTimerActive to know if the timer is actively running

Method: ARC.TimerSmart.Start


Starts the timer. If timer is already running, it will not run another.
This will gracefully exit if a timer is already running.


Common

Method: ARC.Common.SerializeObjectString( System.Object )


Serialize the object to an xml string

Method: ARC.Common.SerializeObjectString( System.Object, System.Type )


Serialize object to an xml string

Method: ARC.Common.SerializeObjectCompressed( System.Object )


Serialize object to an xml string compressed with gzipStream

Method: ARC.Common.SerializeObjectCompressed( System.Object, System.Type )


Serialize object to an xml string compressed with gzipStream

Method: ARC.Common.SerializeObjectCompressed( System.String, System.Object )


Serialize object to an xml file compressed with gzipStream

Method: ARC.Common.SerializeObjectFile( System.String, System.Object )


Serialize object to an xml file compressed with gzipStream

Method: ARC.Common.DeserializeObjectFile( System.String, System.Type )


Return the specified type of object deserialized from a file containing xml string

Method: ARC.Common.DeserializeObjectCompressed( System.String, System.Type )


Return the specified type of object deserialized from a gzip file containing xml string

Method: ARC.Common.DeserializeObjectCompressed( System.Byte[], System.Type )


Return the specified type of object deserialized from a gzip byte array

Method: ARC.Common.DeserializeObjectString( System.String, System.Type )


Deserialize xml string to specified object type

Method: ARC.Common.IsAlpha( System.Object )


Is the value a string by containing letters or anything other than digits

Method: ARC.Common.IsNumeric( System.Object )


Is the value a number

Method: ARC.Common.IsApplicationAlreadyRunning


Check if ARC is already running

Method: ARC.Common.GetNumbersFromString( System.String )


Get only the numbers from a string
Returns 0 if no numbers are detected

Method: ARC.Common.GetNumbersFromString( System.String, System.Int32 )


Get only the numbers from a string
Returns default if no numbers are detected

Method: ARC.Common.GetDecimalFromString( System.String )


Extract the decimal value from a string

Method: ARC.Common.GetListFromArray( System.String[] )


Joins the inArray strings into a comma separated string

Method: ARC.Common.IsUpdateAvailable( System.String )


Compares the newVersion against the current version of the software and returns whether they're the same

Method: ARC.Common.IsUpdateAvailable


Checks the synthiam.com server to see if there is a newer version of software available.

Method: ARC.Common.LatestUpdateVersion


Returns the most recent software version available from the synthiam.com website.

Method: ARC.Common.StrRemoveToEnd( System.String, System.Char, System.Boolean )


Removes all characters from the last instance of the specified string in the input string to the end of input string

Method: ARC.Common.StrRemoveToStart( System.String, System.Char, System.Boolean )


Removes all characters from the first instance of the specified character in the input string to the beginning of the input string

Method: ARC.Common.StartsWithAlphaCharacter( System.String )


Returns true if the first character of the input data is an alphabet character (i.e. A-Z or a-z)

Method: ARC.Common.StrStartsWithWord( System.String, System.String )


Returns true if the string starts with the specified word. Checks for Word by checking if the next character after the word are valid characters

Method: ARC.Common.RenameRegistrySubKey( Microsoft.Win32.RegistryKey, System.String, System.String )


Renames a subkey of the passed in registry key since
the Framework totally forgot to include such a handy feature.

Method: ARC.Common.CopyRegistryKey( Microsoft.Win32.RegistryKey, System.String, System.String )


Copy a registry key. The parentKey must be writeable.

Method: ARC.Common.RegistryRecurseCopyKey( Microsoft.Win32.RegistryKey, Microsoft.Win32.RegistryKey )


Copy a key and it's children to another key recursively

Method: ARC.Common.BitmapClone( System.Drawing.Bitmap )


Makes a deep clone of the bitmap image

Method: ARC.Common.BitmapGetFromByteArray( System.Byte[], System.Boolean )


Convert an array of bytes into a bitmap image.
The conversion is done with a memorystream. You can specify to dispose of that stream.
If you dispose of the stream, bewarned of the issues it will cause.
The original stream should stay with the lifetime of the bitmap.

Type: ARC.Common.WebResponseCls


Response from the v2 instances of Common.GetWebResponseV2 and Async version

Field: ARC.Common.WebResponseCls.Response


The response from the server

Field: ARC.Common.WebResponseCls.Message


Message the describes the error exception (if one exists)

Field: ARC.Common.WebResponseCls.Status


The status of the response

Method: ARC.Common.GetWebResponseAsyncV2( System.String )


Get the data from a web request using default ARC timeout

Method: ARC.Common.GetWebResponseAsyncV2( System.String, System.Int32 )


Get the data from a web request

Method: ARC.Common.GetWebResponseAsync( System.String )


Get the data from a web request using default ARC timeout

Method: ARC.Common.GetWebResponseAsync( System.String, System.Int32 )


Get the data from a web request

Method: ARC.Common.GetWebResponseV2( System.String )


Get the data from a web request using ARC default timeout

Method: ARC.Common.GetWebResponseV2( System.String, System.Int32 )


Get the data from a web request

Method: ARC.Common.GetWebResponse( System.String )


Get the data from a web request

Method: ARC.Common.GetWebResponse( System.String, System.Int32 )


Get the data from a web request

Method: ARC.Common.PostWebResponse( System.String, System.String )


Post data to a web url as content type application/x-www-form-urlencoded

Method: ARC.Common.PostWebResponse( System.String, System.String, System.Int32 )


Post data to a web url as content type application/x-www-form-urlencoded

Method: ARC.Common.PostWebResponse( System.String, System.String, System.Int32, System.String[], System.String[] )


Post data to a web url as content type application/x-www-form-urlencoded

Method: ARC.Common.IsInternetConnected


Check if there is a valid connection to the synthiam website

Method: ARC.Common.IsInternetConnectedAsync


Check if there is a valid connection to the synthiam website

Method: ARC.Common.GetRemoteIPAddress


Query the web service to get the ip address of this machine

Method: ARC.Common.SplitOnlyOnce( System.String, System.Char )


Splits only the first instance of the character

Method: ARC.Common.GetTextBetween( System.String, System.String@, System.Char, System.Char )


Returns the text between the start and end token

Method: ARC.Common.Min( System.Double[] )


Returns the minimal value of the list

Method: ARC.Common.MaxOrDefault( System.Object, System.Int32 )


Returns the higher of the two values
Returns the default value if InVal is invalid type of INT
You don't need to cast the inVal, it'll be done within this method
So you can pass a string and it'll parse it (or try to)
If it can't parse it, it'll return the defaultVal

Method: ARC.Common.Max( System.Double[] )


Returns the maximum value of the list

Method: ARC.Common.DecompressToStr( System.Byte[] )


decompress array of bytes to string

Method: ARC.Common.DecompressToFile( System.Byte[], System.String )


decompress array of bytes

Method: ARC.Common.Decompress( System.Byte[] )


decompress array of bytes

Method: ARC.Common.CompressToFile( System.IO.Stream, System.String )


compress array of bytes

Method: ARC.Common.CompressFromFile( System.String )


compress array of bytes

Method: ARC.Common.Compress( System.Byte[] )


compress array of bytes

Method: ARC.Common.Compress( System.IO.Stream )


compress array of bytes

Method: ARC.Common.GetEnumeratorTypeFromString( System.Type, System.String )


Returns the enumerator type that matches the string

Method: ARC.Common.GetBytes( System.String )


Converts a string into a byte array. The sytem.encoding will remove any bytes above 127, this will not

Method: ARC.Common.GetString( System.Byte[] )


Converts an array of bytes into a string - but uses extended ascii (8 bit) instead of 7 bit

Method: ARC.Common.GetTextUntilOrEmpty( System.String, System.String, System.Boolean )


Get text from beginning of string up until the stopAt character/string
Returns empty string if the character is not found

Method: ARC.Common.GetValueFromHexString( System.String )


Returns the byte value of the hex string (ie 0xa0), or numeric. Size if of byte

Method: ARC.Common.GetInvertedColorToGreyScale( System.Drawing.Color, System.Int32, System.Int32 )


Return the invert of the specified color
minBrightness and maxBrightness are between 0-255 and that's the hard limit for the returned value

Method: ARC.Common.GetInvertedColorToGreyScale( System.Drawing.Color, System.Boolean, System.Int32, System.Int32 )


Return the invert of the specified color
If absolute is specified, the value will be either black or white but no transisition
minBrightness and maxBrightness are between 0-255 and that's the hard limit for the returned value

Method: ARC.Common.ChangeColorBrightness( System.Drawing.Color, System.Single )


Brighten the color by percentage (-1 to 0 to +1)
Negative value is darker, positive value is lighter

Method: ARC.Common.ChangeControlsRecursiveColor( System.Windows.Forms.Control, System.Drawing.Color, System.Drawing.Color, System.Windows.Forms.Control[] )


Recursive change the top control and all children controls of the specified topControl to the specified colors.
If you do not wish to set a color, set it to null and it will be skipped
This will not suspend the layout

Method: ARC.Common.ChangeChildrenControlsRecursiveColor( System.Windows.Forms.Control, System.Drawing.Color, System.Drawing.Color, System.Windows.Forms.Control[] )


Recursive change only children controls of the specified topControl to the specified colors.
This does not change the color of the topControl, only the children.
If you do not wish to set a color, set it to null and it will be skipped
This will not suspend the layout

Method: ARC.Common.ChangeColorBrightness2( System.Drawing.Color, System.Single )


Brighten the color by percentage (-1 to 0 to +1)
Negative value is darker, positive value is lighter

Method: ARC.Common.Quote( System.Object )


Quote the input value if it's a string. Keep it alone if it's a number
Internal quotes are escaped
If there are starting and ending quotes, additional quoting will be ignored

Method: ARC.Common.CopyDirectory( System.String, System.String, System.Boolean )


Copy the contents of source directory into the dest directory

Method: ARC.Common.IsFileLocked( System.String )


Is the file locked (i.e. used elsewhere)

Method: ARC.Common.IsFileLocked( System.IO.FileInfo )


Is the file locked (i.e. used elsewhere)

Method: ARC.Common.DeepCopy``1( ``0 )


Copies/clones a serializable class as a deep copy. Meaning, the two are unreleated.

Method: ARC.Common.MD5Encrypt( System.String )


Return md5 hashed string of input string

Method: ARC.Common.ShutDownPC


Shuts down the computer without prompting to save project or anything

Method: ARC.Common.GetSizeOfFolder( System.IO.DirectoryInfo, System.Boolean )


Get size of folder in bytes


Constants

Field: ARC.Constants.MOUSE_DRAG_SENSITIVITY_NORMAL


The default mouse drag sensitivity for the slide up and down number boxes

Field: ARC.Constants.MOUSE_DRAG_SENSITIVITY_SHIFT


The default mouse drag sensitivity for the slide up and down number boxes when shift is held

Field: ARC.Constants.GET_WEB_RESPONSE_TIMEOUT_MS


Default timeout value for get and post web calls. This can be overriden in the registry with key 'GetWebResponseTimeoutMS'

Field: ARC.Constants.WEB_SERVICE_TIMEOUT


The default timeout for web service calls in the web service wrapper.
Can be overridden with registery key 'WebServiceTimeoutMS'

Field: ARC.Constants.DEFAULT_FOLDER


The My Documents\ARC

Field: ARC.Constants.DEFAULT_APPLICATION_FOLDER


The ProgramData\ARC

Field: ARC.Constants.DEFAULT_PROJECT_FOLDER


My Documents\ARC\My Projects

Field: ARC.Constants.PROJECT_BACKUP_FOLDER


My Documents\ARC\Projects Backups

Field: ARC.Constants.EZ_BITS_STL_SAVE_FOLDER


My Documents\ARC\My STL Files

Field: ARC.Constants.DEFAULT_USER_LOGS_FOLDER


My Documents\ARC\Logs

Field: ARC.Constants.SERVO_PROFILES_FOLDER


My Documents\ARC\Servo Profiles

Field: ARC.Constants.AUTO_POSITIONS_FOLDER


My Documents\ARC\Auto Positions

Field: ARC.Constants.HTTP_SERVER_CUSTOM_FOLDER


My Documents\ARC\HTTP Server Root

Field: ARC.Constants.PROJECT_HISTORY_FILE


My Documents\ARC\ProjectHistory.txt

Field: ARC.Constants.RECENT_SKILLS_FILE


My Documents\ARC\SkillHistory.txt

Field: ARC.Constants.BEHAVIOR_CONTROL_PROJECT_FOLDER


My Documents\ARC\Behavior Control Projects

Field: ARC.Constants.ARC_INSTALLATION_FOLDER


Where ARC is installed (ie Program Files (x86)\Synthiam Inc.\ARC by Synthiam

Field: ARC.Constants.TEMP_FOLDER


C:\Users\[current user]\AppData\Local\Temp\ARC

Field: ARC.Constants.DEFAULT_PROJECT_EXAMPLES_FOLDER


ProgramData\ARC\Examples

Field: ARC.Constants.EZ_BITS_CACHE_FOLDER


ProgramData\ARC\EZ-Bits v2

Field: ARC.Constants.DEFAULT_LOGS_FOLDER


ProgramData\ARC\Logs

Field: ARC.Constants.FIRMWARE_XML_FILE


ProgramData\ARC\firmwares.xml

Field: ARC.Constants.TEAMS_KNOWN_ISSUES_FILE


Copy of the known issues file from the web. Updated for Teams during start-up if there is an internet connection.

Field: ARC.Constants.MEDIA_SAVE_FOLDER


My Pictures\My Robot Pictures

Field: ARC.Constants.EZ_ROBOT


The project configuration. This is the only part of the project that is static and can be referenced
while a project is loaded. All other parts of a project configuration are serialized from the controls.
This holds the theme inforamtion, such as wallpaper, project filename, ezbits, etc..


EZBManager

Type: ARC.EZBManager


The main manager for communicating with EZ-B's using many provided helpers.

Event: ARC.EZBManager.OnConnectionChange


Event risen when connection to any ezb changes

Field: ARC.EZBManager.EZBuilderLoadedDateTime


Time that EZ-Builder was first loaded.

Field: ARC.EZBManager.AudioManager


The audio manager provides audio functions for recording and playing back audio.
To be friendly on resources, controls can share these methods and events.

Method: ARC.EZBManager.Log( System.Object, System.Object[] )


The global log is useful to notify the user of an error or message.
This popups up a dialog at the bottom of the workspace for a few seconds with the debug message.
This also logs the message to the log file in the user's My Documents\EZ-Builder folder.

Field: ARC.EZBManager.MovementManager


The movement panels control physical locomotion of the robot. The locomotion is handled through this movement class.
The locomotion of a robot is _ALWAYS_ the first EZ-B index in the list.
Your custom movement panel will obtain movement direction changes from this class.

Method: ARC.EZBManager.ClearEZBs


Clear all EZBs from the EZBs list above 5. This will not clear the EZ-B's on index 0-4 (the first 5). There will always be at least 5 EZ-B's.

Method: ARC.EZBManager.AddEZBToList( System.String )


Add an ezb and return the new index. The EZBs can be referenced from the EZBs list.
The ID should be unique

Method: ARC.EZBManager.RemoveLastEZBInList


Remove the last ezb from the list

Method: ARC.EZBManager.GetPing( System.String, System.String )


Get the distance returned by the ping distance sensor.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetPWM( System.String, System.Int32 )


Sets the PWM output on the specified port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.GetServoSpeed( System.String )


Get the current servo speed that was set for the specified port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.GetPWM( System.String )


Get the current PWM of the specified port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetServoSpeed( System.String, System.Int32 )


Sets the servo speed on the specified port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetServoPosition( System.String, System.Int32 )


Sets the servo absolutely position on the specified.
This accepts a servo port
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetServoMaxLimit( System.String, System.Int32 )


Sets the maximum servo limit of the specified servo port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetServoMinLimit( System.String, System.Int32 )


Sets the mininum servo limit on the specified port.
This accepts a string port in the format of D2, D3, etc. Or 1.D3 or 3.D5 if specifying the EZ-B, such as with EZ-Script.

Method: ARC.EZBManager.SetReleaseServo( System.String )


Release servo from it's holdling position.
This accepts the port by string such as D0, D3 or 3.D5 or 5.D2

Method: ARC.EZBManager.GetServoPosition( System.String )


Get the position of the servo specified by the port as a string.
For example, this can be D3, D5, 2.D2, 3.D5, etc..
This is the last position the servo was instructed to move to, not the position of the servo if you manually moved it with your hand.
OR you can also use GetServoPositionRealtime() if the servo is a bi-directional servo, such as Dynamixel.

Method: ARC.EZBManager.GetServoPositionRealtime( System.String )


Get the position of the bi-directional servo specified by the port as a string.
For example, this can be V3, V5, 2.V5 or 4.V34, etc...
This only works on Virtual servos and will throw an exception otherwise.
The virtual servo must support this ability otherwise an exception will be thrown.

Method: ARC.EZBManager.SetDigital( System.String, System.Boolean )


Sets the digital port output to the specified value.
This supports the port to be in the string format, such as D3, D6, 3.D8, etc...

Method: ARC.EZBManager.SetDigital( System.Int32, EZ_B.Digital.DigitalPortEnum, System.Boolean )


Sets the digital port to the specified value.

Method: ARC.EZBManager.GetDigital( System.String )


Get the digtial port status.
This supports the port to be in the string format, such as D3, D6, 3.D8, etc...

Method: ARC.EZBManager.GetADC12Bit( System.String )


Get the ADC in 12 bit resolution
This supports the port to be in the string format, such as A1, A2, 3.A3, etc...

Method: ARC.EZBManager.GetADC( System.String )


Get the ADC in 8 bit resolution
This supports the port to be in the string format, such as A1, A2, 3.A3, etc...

Method: ARC.EZBManager.SendSerial( System.String, EZ_B.Uart.BAUD_RATE_ENUM, System.Byte[] )


Transmit serial data out of the specified digital port, if supported by the hardward
This supports the port to be in the string format, such as A1, A2, 3.A3, etc...


Invokers

Type: ARC.Invokers


It's standard to run intensive processes in separate thread than the UI. This means you can't simply modify the UI thread objects from another thread.
This class contains a lot of threadsafe functions to Get/Set properties of UI objects.


FormMain

Type: ARC.FormMain


The FormMain is the user interface controller for the control framework. In here are commands to find controls, details of the current project, access the desktop manager, and more.

Field: ARC.FormMain._ProjectFilename


The current project that is loaded.

Field: ARC.FormMain._LastOpenFolder


The last folder that was opened from the FormOpenEZB

Field: ARC.FormMain._IS_CLOSING_PROJECT


Is the project or application closing? This is mostly used for controls to close without prompting the user. You can handle this in your code if you have any loops or timers that need to know if the project or application is closing.

Field: ARC.FormMain._IS_CLOSING_APP


Is the application closing?

Field: ARC.FormMain.MovementPanel


The current movement panel registered with the project. There can only be one movement panel, so this should be null if there isn't one, or have a reference to it if there is one. If you create a movement panel, you must register it here, and you must set this to null when your control closes.

Field: ARC.FormMain.ucControls


This is the object that hosts the virtual desktops and all of the controls.

Type: ARC.FormMain.OnProjectLoadCompletedHandler


Event raised after a project has completely loaded all skill controls.
If you're control is looking to bind to another control, find the control in this event.
If you attempt to look for a control (i.e. camera) during constructor or SetConfiguration, the other control
may not have loaded from the config yet. This event is raised after all of the controls have been loaded to the workspace

Event: ARC.FormMain.OnProjectLoadCompleted


Event raised after a project has completely loaded all skill controls.
If you're control is looking to bind to another control, find the control in this event.
If you attempt to look for a control (i.e. camera) during constructor or SetConfiguration, the other control
may not have loaded from the config yet. This event is raised after all of the controls have been loaded to the workspace

Type: ARC.FormMain.OnBehaviorControlAddedHandler


Event raised when a control is added to the workspace. This could be during the project load event, or if a user uses the Add Control menu.
If you're wanting to keep track of new controls added to the workspace, this is how to do it.
However, if you're expecting a control to exist when a project is loaded, look into OnProjectLoadCompleted event.
Look into OnBehaviorControlRemoved as well

Event: ARC.FormMain.OnBehaviorControlAdded


Event raised when a control is added to the workspace. This could be during the project load event, or if a user uses the Add Control menu.
If you're wanting to keep track of new controls added to the workspace, this is how to do it.
However, if you're expecting a control to exist when a project is loaded, look into OnProjectLoadCompleted event.
Look into OnBehaviorControlRemoved as well

Event: ARC.FormMain.OnPanicReleaseServosPressed


There is a button on the Options tab of the main menu ribbon bar for PANIC RELEASE/STOP SERVOS
If that button is pressed, this event is triggered. Your control can respond to it if necessary.
Such as, stop the functions or stop what you're doing. It's a panic stop all type scenario
triggered by the user.

Type: ARC.FormMain.OnPanicReleaseServosPressedHandler


There is a button on the Options tab of the main menu ribbon bar for PANIC RELEASE/STOP SERVOS
If that button is pressed, this event is triggered. Your control can respond to it if necessary.
Such as, stop the functions or stop what you're doing. It's a panic stop all type scenario
triggered by the user.

Method: ARC.FormMain.SoundV4_OnStopPlaying


Sets the $EZBPlayingAudio variable to false

Method: ARC.FormMain.Movement_OnMovement( ARC.MovementManager.MovementDirectionEnum )


Sets the $Direction movement variable to the specified direction.

Method: ARC.FormMain.NewProject


Closes the current project and creates a new empty blank project

Method: ARC.FormMain.MenuClick_Open( System.Object )


Opens the FormOpenEZB dialog at the location of the _LastOpenFolder. If a project is specified, it loads the project.

Method: ARC.FormMain.OpenProject( System.String )


Open the specified project and close the existing project

Method: ARC.FormMain.SendFormCommand( System.String, System.String, System.String[] )


Send a ControlCommand() to the specified control on any desktop.

Method: ARC.FormMain.GetFormValue( System.String, System.String, System.Object )


Returns a value if the control supports it. The control must have an override for GetValue(string value). If so, you can query the value from a window with this.

Method: ARC.FormMain.SetupProject( System.String )


Loads the project into the existing project and does not clear the existing project. This means it merely sets up the projects by loading the controls and configuration. If you want to load a project, then use the LoadProject() method.
The filename will be loaded as and parsed into a project.

Method: ARC.FormMain.DoesFormTypeAlreadyExist( System.Type[] )


Does the type of form or control exist? Use this if you're looking to see if a control has already been added to a form. For example, you can check if a typeof(FormCameraDevice) exists.

Method: ARC.FormMain.DoesMovementPanelExist


Becuase only one movement panel can exist on a project at once, this returns if a movement panel has been registered in MovementPanel.

Method: ARC.FormMain.NewConnection


Add a connection control or Show() the connection control that is already on the project.
Only one connection control should exist in a project. Having two connection controls will break-down the universe into a obvlivion

Method: ARC.FormMain.PanicReleaseStopServos


Send a panic/stop/release servos command to all controls that bind to the associated event.
If you call this method, the event will be raised and any controls that bind to the event will
be responsible to stop their execution. This is a panic mode scenario generated by the user.

Method: ARC.FormMain.SetBackgroundColor( System.Drawing.Color )


Sets the background color of the workspace. This won't work if there is already an Image on the workspace. You will need to SetBackgroundImage(null) to see the background color.

Method: ARC.FormMain.SetBackgroundImage( System.Drawing.Image )


Sets the background to an image on the workspace. This overrides the background color with the image.

Method: ARC.FormMain.SuspendLayoutAllTabs


Suspends the layout of all controls in all tabs. This is used when significant layout changes are about to occur. (i.e. moving windows or resizing them, etc).
The ResumeLayout MUST be called after you've completed re-arranging the controls.

Method: ARC.FormMain.ResumeLayoutAllTabs


Resumes the layout event that was suspended with the SuspendLayoutAllTabs()

Method: ARC.FormMain.SuspendLayoutCurrentTab


Suspends the layout of all controls in the current tab. This is used when significant layout changes are about to occur. (i.e. moving windows or resizing them, etc).
The ResumeLayout MUST be called after you've completed re-arranging the controls.

Method: ARC.FormMain.ResumeLayoutCurrentTab


Resumes the layout event that was suspended with the SuspendLayoutCurrentTabs()

Method: ARC.FormMain.AddControl( System.Windows.Forms.Control )


Adds the skill control to the current tab.

Method: ARC.FormMain.AddControl( System.Windows.Forms.Control, System.Int32 )


Adds a skill control to the specified page tab. The first virtual desktop is page 0 and so on...

Method: ARC.FormMain.AddControl( System.Windows.Forms.Control[], System.Int32 )


Adds skill controls to the specified page tab. The first virtual desktop is page 0 and so on...

Method: ARC.FormMain.SmartArrangeSelectedPage( System.Boolean, System.Boolean )


Arranges the skill controls on current page to optimize available screen space effeciently. You can order large to small or opposite.
If you're calling this while already suspending the layout, you can also override the suspend layout option with the variable.
If you do not ignore the suspend layout yourself, set the variable to false and this method will handle the layout suspension and resume.
You may be handling the suspend layout yourself because you're performing a number of workspace changes, in which case you'd want to ignore the suspend layout.

Method: ARC.FormMain.SmartArrangeAll( System.Boolean, System.Boolean )


Arranges the skill controls on all pages to optimize available screen space effeciently. You can order large to small or opposite.
If you're calling this while already suspending the layout, you can also override the suspend layout option with the variable.
If you do not ignore the suspend layout yourself, set the variable to false and this method will handle the layout suspension and resume.
You may be handling the suspend layout yourself because you're performing a number of workspace changes, in which case you'd want to ignore the suspend layout.

Method: ARC.FormMain.SmartArrange( System.Int32, System.Boolean, System.Boolean )


Arranges the skill controls on specified page to optimize available screen space effeciently. You can order large to small or opposite.
Desktop is either 0, 1, or 2 (Desktops supporting controls)
If you're calling this while already suspending the layout, you can also override the suspend layout option with the variable.
If you do not ignore the suspend layout yourself, set the variable to false and this method will handle the layout suspension and resume.
You may be handling the suspend layout yourself because you're performing a number of workspace changes, in which case you'd want to ignore the suspend layout.

Method: ARC.FormMain.SmartArrange( System.Windows.Forms.Panel, System.Boolean, System.Boolean )


Arranges the skill controls on specified page to optimize available screen space effeciently. You can order large to small or opposite.
If you're calling this while already suspending the layout, you can also override the suspend layout option with the variable.
If you do not ignore the suspend layout yourself, set the variable to false and this method will handle the layout suspension and resume.
You may be handling the suspend layout yourself because you're performing a number of workspace changes, in which case you'd want to ignore the suspend layout.

Method: ARC.FormMain.GetSkillCount( System.Type )


Return the number of all skills that have been added to the project workspace

Method: ARC.FormMain.GetSkillCount


Return the number of all skills that have been added to the project workspace

Method: ARC.FormMain.GetControlCountByNameAllPages( System.String )


Get the number of controls that have the title. This is NOT case sensitive. Meaning, it will count controls and ignore the case

Method: ARC.FormMain.GetControlByNameAllPages( System.String )


This will get the control (or first control if there are more than one) with the specified title.
This is NOT case sensitive, meaning it any case will be returned.

Method: ARC.FormMain.GetControlByType( System.Type )


Get a list of controls that match the type. This is helpful if you're looking for a FormCameraDevice, for example.
This searchs all tabs.

Method: ARC.FormMain.GetControlsAllPages


Returns all controls in the project on all tabs

Method: ARC.FormMain.GetControls( System.Windows.Forms.Control )


Gets the controls on the specified tabpage. The page comes from the ucControls workspace manager.

Method: ARC.FormMain.GetControls( System.Int32 )


Gets the controls by the specified page index. The first virtual workspace index is 0.

Method: ARC.FormMain.GetControlsCurrentPage


Gets all controls on the current active workspace.

Method: ARC.FormMain.LoadInterfaceBack


The last virtual desktop workspace is a full screen mobile app view. This will load the previous workspace in the breadcrumb trail.
Essentially it Pops the breadcrum from the stack. When a new interface is displayed with LoadInterfaceByName() or LoadInterfaceByConfiguration(), the current interface is added to the stack.
This is like a BACK button to go to the previous interface.

Method: ARC.FormMain.LoadInterfaceByName( System.String )


The last virtual desktop workspace is a full screen mobile app view.
This will load the mobile interface by the window title into that window and add it to the stack.
The previous interface on the stack can be restored with LoadInterfaceBack()

Method: ARC.FormMain.CloseFormByType( System.Type[] )


Close the control form by the type. This is useful if you wish to close all forms of a specified type. For example, close all FormCameraDevice.

Method: ARC.FormMain.CloseControls( System.Boolean )


Close all controls on all workspace tabs.
You can ignore the suspend layout if you're code is handling the layout suspension and resume manually.

Method: ARC.FormMain.CloseIntroControls( System.Boolean )


When the software first loads, a number of introduction controls are added to the workspace.
These controls are things like Bookmarks, Check for plugins, Check for updates, etc..
This will close those controls.

Method: ARC.FormMain.UpdateVirtualDesktopShots


The virtual desktop screenshots are displayed in the ribbon menu for accessibility.
If the workspace has changed, you acn manually update the screenshot with this method.

Method: ARC.FormMain.updateVirtualDesktopButtonsAndScreenshots


Make sure the buttons in the menu bar match the count of virtual desktops (adds or removes buttons based on desktop count)
Also updates the thumbnails and workspace titles


URLServiceManager

Method: ARC.URLServiceManager.ViewUrl( System.Windows.Forms.Control, System.String )


Opens the url in the default browser. Displays a message to the user if no internet connection is discovered

Method: ARC.URLServiceManager.ViewUrl( System.Windows.Forms.Control, ARC.URLServiceManager.URLEnum )


Opens the url in the default browser. Displays a message to the user if no internet connection is discovered
Returns true if internet otherwise false if no internet


VAD

Type: ARC.VAD.ByteBuffer


Class for converts among different array types. Inspired with NAudio WaveBuffer class https://github.com/naudio/NAudio

Type: ARC.VAD.FFT2


Fft implementation from https://gerrybeauregard.wordpress.com/2011/04/01/an-fft-in-c/

Field: ARC.VAD.VoiceActivityDetector.REQUIRED_BUFFER_SIZE


160 samples * 2 bytes per sample


WebServiceWrappers

Method: ARC.WebServiceWrappers.Tools.IsProxySetByUser


Returns true if the user has configured a proxy server for their installation.

Method: ARC.WebServiceWrappers.Tools.GetWebProxy


Returns the proxy object that can be used for a webservice or WebRequest

Method: ARC.WebServiceWrappers.WebRequest.Create( System.Uri )


Returns an instance of a web request with the proxy server information, if specifeid

Method: ARC.WebServiceWrappers.WebRequest.Create( System.String )


Returns an instance of a web request with the proxy server information, if specifeid