11 #ifndef SICK_ACFR_DRIVER_MESSAGES_H 12 #define SICK_ACFR_DRIVER_MESSAGES_H 16 #include <gbxsickacfr/sickdefines.h> 17 #include <gbxsickacfr/gbxserialdeviceacfr/gbxserialdeviceacfr.h> 21 std::string toHexString(
const uChar *buf,
int bufLen );
22 inline std::string toHexString(
const std::vector<uChar> &buf )
23 {
return toHexString( &(buf[0]), buf.size() );}
41 class LmsRxMsgData :
public IceUtil::Shared {
43 virtual ~LmsRxMsgData() {}
46 virtual std::string toString()
const=0;
48 virtual bool isError()
const {
return false; }
49 virtual bool isWarn()
const {
return false; }
54 typedef IceUtil::Handle<LmsRxMsgData> LmsRxMsgDataPtr;
80 std::string toString()
const;
82 std::string toString(
const LmsRxMsg &r );
83 typedef IceUtil::Handle<LmsRxMsg> LmsRxMsgPtr;
84 inline std::string toString(
const LmsRxMsgPtr &r )
85 {
return toString(*r); }
98 class LmsInitRxMsgData :
public LmsRxMsgData {
100 std::string description;
102 std::string toString()
const {
return description; }
103 LmsRxMsgData *clone()
const {
return new LmsInitRxMsgData(*
this); }
106 class LmsStatusRxMsgData :
public LmsRxMsgData {
111 std::string manufacturer;
113 uint16_t pollution[POLLUTION_LENGTH];
114 uint16_t refPollution[REF_POLLUTION_LENGTH];
115 uint16_t calibPollution[CALIB_POLLUTION_LENGTH];
116 uint16_t calibRefPollution[CALIB_REF_POLLUTION_LENGTH];
117 uint16_t numMotorRevolutions;
118 uint16_t refScale1Dark100Pct;
119 uint16_t refScale2Dark100Pct;
120 uint16_t refScale1Dark66Pct;
121 uint16_t refScale2Dark66Pct;
122 uint16_t signalAmplitudePct;
123 uint16_t currentAngle;
124 uint16_t peakThreshold;
125 uint16_t angleOfMeasurement;
126 uint16_t calibSignalAmplitude;
127 uint16_t targetStopThreshold;
128 uint16_t targetPeakThreshold;
129 uint16_t actualStopThreshold;
130 uint16_t actualPeakThreshold;
132 uint16_t refSingleMeasuredValues;
133 uint16_t refMeanMeasuredValues;
134 uint16_t scanningAngle;
135 uint16_t angularResolution;
139 uChar evaluationNumber;
140 uChar permanentBaudRate;
142 uChar fieldSetNumber;
143 uChar currentMeasuredValueUnit;
144 uChar laserSwitchOff;
145 std::string softwareVersion;
147 std::string toString()
const;
148 LmsRxMsgData *clone()
const {
return new LmsStatusRxMsgData(*
this); }
151 class LmsSwitchOperatingModeRxMsgData :
public LmsRxMsgData {
155 bool isError()
const {
return success != OPERATING_MODE_RESPONSE_SUCCESS; }
156 std::string toString()
const {
return modeSwitchSuccessToString(success); }
157 LmsRxMsgData *clone()
const {
return new LmsSwitchOperatingModeRxMsgData(*
this); }
160 class LmsConfigurationData :
public LmsRxMsgData {
164 LmsConfigurationData();
165 bool operator==(
const LmsConfigurationData &o )
const;
166 bool operator!=(
const LmsConfigurationData &o )
const 167 {
return !(operator==(o)); }
173 uChar measuredValueUnit;
174 uChar transientFieldSet;
175 uChar subtractiveFields;
176 uChar multipleEvaluation;
179 uChar multipleEvaluationForSuppressed;
181 uChar contourAPosToleranceBand;
182 uChar contourANegToleranceBand;
183 uChar contourAStartAngle;
184 uChar contourAStopAngle;
186 uChar contourBPosToleranceBand;
187 uChar contourBNegToleranceBand;
188 uChar contourBStartAngle;
189 uChar contourBStopAngle;
191 uChar contourAPosToleranceBand2;
192 uChar contourCNegToleranceBand;
193 uChar contourCStartAngle;
194 uChar contourCStopAngle;
195 uChar pixelOrientedEvaluation;
196 uChar singleMeasuredValueEvaluation;
197 uint16_t restartTimeFields;
198 uint16_t multipleEvaluationForDazzle;
200 std::string toString()
const;
201 LmsRxMsgData *clone()
const {
return new LmsConfigurationData(*
this); }
204 class LmsConfigurationRxMsgData :
public LmsRxMsgData {
206 LmsConfigurationData config;
209 std::string toString()
const;
210 LmsRxMsgData *clone()
const {
return new LmsConfigurationRxMsgData(*
this); }
211 bool isError()
const {
return configSuccess != CONFIGURATION_SUCCESS; }
214 class LmsSwitchVariantRxMsgData :
public LmsRxMsgData {
217 uint16_t scanningAngle;
218 uint16_t angularResolution;
220 std::string toString()
const;
221 LmsRxMsgData *clone()
const {
return new LmsSwitchVariantRxMsgData(*
this); }
222 bool isError()
const {
return success != SWITCH_VARIANT_SUCCESS; }
225 class LmsMeasurementData :
public LmsRxMsgData {
229 std::vector<float> ranges;
230 std::vector<uChar> intensities;
232 std::string toString()
const;
233 LmsRxMsgData *clone()
const {
return new LmsMeasurementData(*
this); }
236 class LmsErrorRxMsgData :
public LmsRxMsgData {
239 std::vector<uChar> errorTypes;
240 std::vector<uChar> errorCodes;
242 std::string toString()
const;
243 LmsRxMsgData *clone()
const {
return new LmsErrorRxMsgData(*
this); }
244 bool isError()
const;
248 class LmsOperatingDataCounterData :
public LmsRxMsgData {
251 int hoursOfOperation;
254 std::string toString()
const;
255 LmsRxMsgData *clone()
const {
return new LmsOperatingDataCounterData(*
this); }
262 LmsRxMsgPtr parseBufferForRxMsgs(
const uChar *buffer,
266 void constructTelegram( std::vector<uChar> &buffer,
267 const std::vector<uChar> &commandAndData );
270 void constructRequestInstallationMode( std::vector<uChar> &commandAndData );
272 void constructRequestContinuousMode( std::vector<uChar> &commandAndData );
273 void constructRequestMeasuredOnRequestMode( std::vector<uChar> &commandAndData );
275 void constructInitAndReset( std::vector<uChar> &commandAndData );
277 void constructStatusRequest( std::vector<uChar> &commandAndData );
279 void constructConfigurationRequest( std::vector<uChar> &commandAndData );
281 void constructConfigurationCommand(
const LmsConfigurationData &c,
282 std::vector<uChar> &commandAndData );
284 void constructRequestErrorMessage( std::vector<uChar> &commandAndData );
286 void constructSwitchVariant( uint16_t scanningAngle,
287 uint16_t angularResolution,
288 std::vector<uChar> &commandAndData );
290 void constructRequestOperatingDataCounter( std::vector<uChar> &commandAndData );
292 void constructRequestBaudRate( std::vector<uChar> &commandAndData,
int baudRate );
A base-class for a message received from the device on the other end.
Definition: serialdevicehandler.h:22