The design (will) have two serial ports: a local serial port using the Arduino Mega USB port and a remote serial port accessible via an RS422 link. The commands are text strings in human readable form comprising a command string and zero or more numeric arguments. The arguments can be separated by commas or white space and the command is terminated with a . If a command does not parse, the parser responds with a nack (character N). If ths command was successfully parsed the response is an ack (character A). This ack is that the command has been accepted and some event is delivered to the state machine. It does not mean that the action requested (such as stepping a motor over a stepping distance) has completed. Numeric arguments will be either a floating point or integer value depending on the command requirements. Both serial ports will accept the following serial commands: az base_speed, accelleration, and slew speed are floating point and steps is an integer (32 bit) This command arms the azimuth stepper driver to start stepping at an initial (base) speed then accellerate to the final (slew) speed. The stepper maintains the slew speed until a step position where it must decelerate to reach the base speed at the final stepping position. If the acceleration cannot reach the slew speed at the mid-point of the stepping distance then the stepper commences deceleration at the mid-point of the stepping distance to reach the base speed at the final stepping position. This command does not start the stepping motion. In order to synchronise the azimuth and elevation stepping, the state machines are armed with the data and a separate command starts the stepping motion of one or both steppers. ab Set the base speed for the next azimuth stepping request. Base speed is floating point. aa Set the acceleration for the next azimuth stepping request. Acceleration is floating point. as Set the slew speed for the next azimuth stepping request. Slew speed is floating point. at Set the stepping distance for the next azimuth stepping request. Steps is a 32 bit integer. Unlike all other azimuth request parameters, this value is consumed when a stepping request is performed and must be set for a subsequent request. acw Set the azimuth stepping direction to clockwise for the next stepping request. acc Set the azimuth stepping direction to counter-clockwise for the next stepping request. el base_speed, accelleration, and slew speed are floating point and steps is an integer (32 bit) This command arms the elevation stepper driver to start stepping at an initial (base) speed then accellerate to the final (slew) speed. The stepper maintains the slew speed until a step position where it must decelerate to reach the base speed at the final stepping position. If the acceleration cannot reach the slew speed at the mid-point of the stepping distance then the stepper commences deceleration at the mid-point of the stepping distance to reach the base speed at the final stepping position. This command does not start the stepping motion. In order to synchronise the azimuth and elevation stepping, the state machines are armed with the data and a separate command starts the stepping motion of one or both steppers. eb Set the base speed for the next elevation stepping request. Base speed is floating point. ea Set the acceleration for the next elevation stepping request. Acceleration is floating point. es Set the slew speed for the next elevation stepping request. Slew speed is floating point. et Set the stepping distance for the next elevation stepping request. Steps is a 32 bit integer. Unlike all other elevation request parameters, this value is consumed when a stepping request is performed and must be set for a subsequent request. eu Set the elevation stepping direction to raise the dish on the next stepping request. ed Set the elevation stepping direction to lower the dish on the next stepping request. sta Start azimuth stepping based on all requested parameters. ste Start elevation stepping based on all requested parameters. stb Start both azimuth and elevation stepping based on all requested parameters. Commands defined in the ui.py file Commands defined in the ui.py file command signal arguments 'az', 'COMMAND_AZIMUTH_SIG', 'dddu' 'ab', 'COMMAND_AZIMUTH_BASE_SIG', 'd' 'as', 'COMMAND_AZIMUTH_SLEW_SIG', 'd' 'aa', 'COMMAND_AZIMUTH_ACCELERATION_SIG', 'd' 'at', 'COMMAND_AZIMUTH_STEPS_SIG', 'u' 'acw', 'COMMAND_AZIMUTH_CLOCKWISE_SIG', '' 'acc', 'COMMAND_AZIMUTH_CCW_SIG', '' 'el', 'COMMAND_ELEVATION_SIG', 'dddu' 'eb', 'COMMAND_ELEVATION_BASE_SIG', 'd' 'es', 'COMMAND_ELEVATION_SLEW_SIG', 'd' 'ea', 'COMMAND_ELEVATION_ACCELERATION_SIG', 'd' 'et', 'COMMAND_ELEVATION_STEPS_SIG', 'u' 'eu', 'COMMAND_ELEVATION_UP_SIG', '' 'ed', 'COMMAND_ELEVATION_DOWN_SIG', '' 'sta', 'COMMAND_START_AZIMUTH_SIG', '' 'ste', 'COMMAND_START_ELEVATION_SIG', '' 'stb', 'COMMAND_START_AZ_EL_SIG', ''