| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2,156 +2,170 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					ModbusConfig ServoController::initiateConfig(QString serialPort) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						ModbusConfig _config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.baud = QSerialPort::Baud19200; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.parity = QSerialPort::EvenParity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.dataBits = QSerialPort::Data8; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.stopBits = QSerialPort::OneStop; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.responseTime = 2000; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.serialPort = serialPort; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_config.clientAddress = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ModbusConfig _config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.baud = QSerialPort::Baud19200; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.parity = QSerialPort::EvenParity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.dataBits = QSerialPort::Data8; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.stopBits = QSerialPort::OneStop; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.responseTime = 2000; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.serialPort = serialPort; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _config.clientAddress = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return _config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return _config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::apply() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_APPLY_SETTING_REG, SRV_APPLY_SETTING_VAL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_APPLY_SETTING_REG, SRV_APPLY_SETTING_VAL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::enableDrive() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_ENABLE_DRIVE_REG, 3); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_ENABLE_DRIVE_REG, 3); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::setStartStop(bool start) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_START_STOP_REG, start ? 3 : 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_START_STOP_REG, start ? 3 : 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::setStartAngle(double angle) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_START_ANGLE_INT_PART_REG, static_cast<quint16>(angle)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_START_ANGLE_FRAC_PART_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 static_cast<quint16>((angle - (static_cast<int>(angle))) * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																			  100)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_START_ANGLE_INT_PART_REG, static_cast<quint16>(angle)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_START_ANGLE_FRAC_PART_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                     static_cast<quint16>((angle - (static_cast<int>(angle))) * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                                          100)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::setStopAngle(double angle) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_STOP_ANGLE_INT_PART_REG, static_cast<quint16>(angle)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_STOP_ANGLE_FRAC_PART_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 static_cast<quint16>((angle - (static_cast<int>(angle))) * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																			  100)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_STOP_ANGLE_INT_PART_REG, static_cast<quint16>(angle)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_STOP_ANGLE_FRAC_PART_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                     static_cast<quint16>((angle - (static_cast<int>(angle))) * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                                          100)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::setSpeed(double speed) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_AZIMUTH_SPEED_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 static_cast<quint16>(speed * SRV_SPEED_FACTOR)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_AZIMUTH_SPEED_REG, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                     static_cast<quint16>(speed * SRV_SPEED_FACTOR)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::changeMode(double startAngle, double stopAngle, double speed) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setStartAngle(startAngle); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setStopAngle(stopAngle); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setSpeed(speed); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setStartStop(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						enableDrive(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setStartAngle(startAngle); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setStopAngle(stopAngle); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setSpeed(speed); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setStartStop(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    enableDrive(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    apply(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::init(QString serialPort) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.init(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.connectToDevice(initiateConfig(serialPort)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.init(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.connectToDevice(initiateConfig(serialPort)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::startMoving() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setStartStop(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setStartStop(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::stopMoving() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setStartStop(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setStartStop(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::resetAzimuth() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_CALIBRATE_REG, SRV_CALIBRATION_VAL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_CALIBRATE_REG, SRV_CALIBRATION_VAL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::fix(double angle) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						changeMode(angle, angle, 5 / 6.0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    changeMode(angle, angle, 5 / 6.0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::sector(double startAngle, double stopAngle, double speed) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						changeMode(startAngle, stopAngle, speed); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    changeMode(startAngle, stopAngle, speed); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					double ServoController::getSpeed() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto speedVector = _modbusWrapper.getHoldingRegister(SRV_AZIMUTH_SPEED_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto speedVector = _modbusWrapper.getHoldingRegister(SRV_AZIMUTH_SPEED_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return (speedVector[0] / SRV_SPEED_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (speedVector[0] / SRV_SPEED_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					double ServoController::getStopAngle() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto speedVector1 = _modbusWrapper.getHoldingRegister(SRV_STOP_ANGLE_INT_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto speedVector2 = _modbusWrapper.getHoldingRegister(SRV_STOP_ANGLE_FRAC_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto speedVector1 = _modbusWrapper.getHoldingRegister(SRV_STOP_ANGLE_INT_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto speedVector2 = _modbusWrapper.getHoldingRegister(SRV_STOP_ANGLE_FRAC_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return (speedVector1[0] + speedVector2[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (speedVector1[0] + speedVector2[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					double ServoController::getStartAngle() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto speedVector1 = _modbusWrapper.getHoldingRegister(SRV_START_ANGLE_INT_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto speedVector2 = _modbusWrapper.getHoldingRegister(SRV_START_ANGLE_FRAC_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto speedVector1 = _modbusWrapper.getHoldingRegister(SRV_START_ANGLE_INT_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto speedVector2 = _modbusWrapper.getHoldingRegister(SRV_START_ANGLE_FRAC_PART_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return (speedVector1[0] + speedVector2[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (speedVector1[0] + speedVector2[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					double ServoController::getAngleOffset() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto angleOffsetVector = _modbusWrapper.getHoldingRegister(SRV_ZERO_OFFSET_ANGLE, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto angleOffsetVector = _modbusWrapper.getHoldingRegister(SRV_ZERO_OFFSET_ANGLE, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return (angleOffsetVector[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (angleOffsetVector[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ServoController::setAngleOffset(double offset) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						_modbusWrapper.setSingleRegister(SRV_ZERO_OFFSET_ANGLE, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 static_cast<quint16>(offset * SRV_ANGLE_FACTOR)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _modbusWrapper.setSingleRegister(SRV_ZERO_OFFSET_ANGLE, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                     static_cast<quint16>(offset * SRV_ANGLE_FACTOR)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					double ServoController::getAzimuth() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						auto azimuthVector = _modbusWrapper.getHoldingRegister(SRV_AZIMUTH_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto azimuthVector = _modbusWrapper.getHoldingRegister(SRV_AZIMUTH_REG, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return (azimuthVector[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (azimuthVector[0] / SRV_ANGLE_FACTOR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*************************************************************************************************/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bool ServoController::getStatus() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        getSpeed(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return  true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } catch (ServoException ex) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        _modbusWrapper.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  |