Independent of scanning mode, the returned profile data from the scan head always contains:

Name.NET APIC/C++ API

Description

CountProfile.CounttagProfile.numberPointsThe number of data points in the profile
FlagsProfile.FlagstagProfile.flagsThe flags attached to this scan. See Table below.
InputsProfile.InputstagProfile.inputsThe values of the input lines (Channel A/Channel B/Start Scan) when the scan was taken. See Table below.
LaserIndexProfile.LaserIndextagProfile.laserIndexIndex of the laser used for this profile. For single-laser models, this is always 0, for multi-laser models, the laser at end farthest away from the camera has the index 0.
LaserOnTimeProfile.LaserOnTimetagProfile.laserOnTimeThe amount of time the laser was on for this scan. Unit: microseconds.
LocationProfile.LocationtagProfile.locationThe encoder value at the time the scan was taken.
SendLocationProfile.SendLocationtagProfile.sendLocationThe encoder value when the scan was retrieved from the scanner, i.e., when it was taken out of the scanner queue.
SequenceNumberProfile.SequenceNumbertagProfile.sequenceNumberThe sequence number of the scan. This number is set to 0 when synchronized scanning is restarted.
TimeInHeadProfile.TimeInHeadtagProfile.timeInHeadThe time since the scanner was powered on. Unit: milliseconds.
Datan/a (see below)tagProfile.dataMeasured data points

In the .NET API, a profile is of data type IEnumerable<ProfileDataPoint> and provides an indexing operator. Therefore, accessing the actual data points can be achieved via simple indexing. In the C/C++ API, tagProfile.data is an array of fixed size that contains all measured points. 

Count

For each scan, a Profile data structure is returned, regardless of whether points were measured. If the count is always 0, check the scan window size, exposure parameters, laser light blockage or obstructions in the camera view.

Flags

In each profile, these flags can be present. Your software should check for the error flags and take appropriate action.  

Flag NameDescription
NoneNormal scan, no errors detected.
OverrunThe scan data is valid but some data at the edges of the scan may be missing.
InternalErrorAn internal error was encountered in the scan head. This data should not be used. This flag is rare and can be caused by scanning extremely fast.
SequenceErrorA profile sequencing error occurred. This usually indicates that the scanner is being run too fast or the scan queue in the scanner was allowed to overflow. This can happen when the scanner is running in synchronized scan mode but GetQueuedProfiles has not been called for a period of time, allowing the internal queue to overfill.

Inputs

This field describes the status of the hardware input lines at the time the scan was taken. The API maps the 32 bit unsigned integer to a struct with the following flags set. JSDiag displays the value as a bit field that also contains the Cable ID (for old models with a DB-25 connector). 

FieldDescription
NoneNo signal line active
EncoderBEncoder B
EncoderAEncoder A
StartScanStart Scan signal active
  • No labels