ScannerSickS300 Class Reference

#include <ScannerSickS300.h>

List of all members.

Classes

struct  ParamType
struct  ScanPolarType

Public Types

enum  { SCANNER_S300_READ_BUF_SIZE = 10000, READ_BUF_SIZE = 10000, WRITE_BUF_SIZE = 10000 }

Public Member Functions

bool getScan (std::vector< double > &vdDistanceM, std::vector< double > &vdAngleRAD, std::vector< double > &vdIntensityAU)
bool open (const char *pcPort, int iBaudRate, int iScanId)
void purgeScanBuf ()
void resetStartup ()
 ScannerSickS300 ()
void startScanner ()
void stopScanner ()
 ~ScannerSickS300 ()

Private Member Functions

void convertScanToPolar (std::vector< int > viScanRaw, std::vector< ScanPolarType > &vecScanPolar)
unsigned int createCRC (unsigned char *ptrData, int Size)
unsigned int getUnsignedWord (unsigned char msb, unsigned char lsb)

Private Attributes

double m_dBaudMult
int m_iPosReadBuf2
ParamType m_Param
unsigned char m_ReadBuf [READ_BUF_SIZE+10]
unsigned char m_ReadBuf2 [READ_BUF_SIZE+10]
SerialIO m_SerialIO
unsigned int m_uiSumReadBytes
std::vector< int > m_viScanRaw

Static Private Attributes

static const double c_dPi = 3.14159265358979323846
static const unsigned char c_StartBytes [10] = {0,0,0,0,0,0,0,0,255,7}
static const unsigned short crc_LookUpTable [256]
static unsigned char m_iScanId = 7

Detailed Description

Driver class for the laser scanner SICK S300 Professional. This driver only supports use with 500KBaud in cont. mode

S300 header format in continuous mode:

| 00 00 00 00 | 4 byte reply header

Now starts the actual telegram

| 00 00 | data block number (fixed) | xx xx | size of data telegram (should be dec 1104) | FF xx | last byte decides scanner id, 07 in most cases, but 08 for slave configured scanners | xx xx | protocol version | 0x 00 | status: 00 00 = normal, 01 00 = lockout | xx xx xx xx | scan number | xx xx | telegram number | BB BB | fixed | 11 11 | fixed ... data | xx xx | CRC

Readout of buffer starts with Reply-Header Reply-Header:byte 0 to 3 = 4 bytes Telegram (as it is stored in the Buffer): Position in the telegram Header: bytes 4 to 23 = 20 bytes bytes 0 to 19 Data: bytes 24 to 1105 = 1082 bytes bytes 20 to 1101 CRC: bytes 1106, 1107 = 2 bytes bytes 1102, 1103

for easier parsing Reply-Header and Telegram-Header are combined in the folllowing --> Headerlength = 24 bytes (iHeaderLength) --> Total length in buffer is 1108 bytes --> Telegram length (read from telegram) is 1104 bytes (iDataLength)

Definition at line 102 of file ScannerSickS300.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
SCANNER_S300_READ_BUF_SIZE 
READ_BUF_SIZE 
WRITE_BUF_SIZE 

Definition at line 125 of file ScannerSickS300.h.


Constructor & Destructor Documentation

ScannerSickS300::ScannerSickS300 (  ) 

Definition at line 103 of file ScannerSickS300.cpp.

ScannerSickS300::~ScannerSickS300 (  ) 

Definition at line 124 of file ScannerSickS300.cpp.


Member Function Documentation

void ScannerSickS300::convertScanToPolar ( std::vector< int >  viScanRaw,
std::vector< ScanPolarType > &  vecScanPolar 
) [private]

Definition at line 308 of file ScannerSickS300.cpp.

unsigned int ScannerSickS300::createCRC ( unsigned char *  ptrData,
int  Size 
) [private]

Definition at line 292 of file ScannerSickS300.cpp.

bool ScannerSickS300::getScan ( std::vector< double > &  vdDistanceM,
std::vector< double > &  vdAngleRAD,
std::vector< double > &  vdIntensityAU 
)

Definition at line 193 of file ScannerSickS300.cpp.

unsigned int ScannerSickS300::getUnsignedWord ( unsigned char  msb,
unsigned char  lsb 
) [inline, private]

Definition at line 190 of file ScannerSickS300.h.

bool ScannerSickS300::open ( const char *  pcPort,
int  iBaudRate,
int  iScanId = 7 
)

Opens serial port.

Parameters:
pcPort used "COMx" or "/dev/tty1"
iBaudRate baud rate
iScanId the scanner id in the data header (7 by default)

Definition at line 131 of file ScannerSickS300.cpp.

void ScannerSickS300::purgeScanBuf (  ) 

Definition at line 167 of file ScannerSickS300.cpp.

void ScannerSickS300::resetStartup (  ) 

Definition at line 175 of file ScannerSickS300.cpp.

void ScannerSickS300::startScanner (  ) 

Definition at line 181 of file ScannerSickS300.cpp.

void ScannerSickS300::stopScanner (  ) 

Definition at line 187 of file ScannerSickS300.cpp.


Member Data Documentation

const double ScannerSickS300::c_dPi = 3.14159265358979323846 [static, private]

Definition at line 172 of file ScannerSickS300.h.

const unsigned char ScannerSickS300::c_StartBytes = {0,0,0,0,0,0,0,0,255,7} [static, private]

Definition at line 171 of file ScannerSickS300.h.

const unsigned short ScannerSickS300::crc_LookUpTable [static, private]

Definition at line 170 of file ScannerSickS300.h.

double ScannerSickS300::m_dBaudMult [private]

Definition at line 176 of file ScannerSickS300.h.

Definition at line 183 of file ScannerSickS300.h.

unsigned char ScannerSickS300::m_iScanId = 7 [static, private]

Definition at line 184 of file ScannerSickS300.h.

Definition at line 175 of file ScannerSickS300.h.

unsigned char ScannerSickS300::m_ReadBuf[READ_BUF_SIZE+10] [private]

Definition at line 179 of file ScannerSickS300.h.

unsigned char ScannerSickS300::m_ReadBuf2[READ_BUF_SIZE+10] [private]

Definition at line 180 of file ScannerSickS300.h.

Definition at line 187 of file ScannerSickS300.h.

unsigned int ScannerSickS300::m_uiSumReadBytes [private]

Definition at line 181 of file ScannerSickS300.h.

std::vector<int> ScannerSickS300::m_viScanRaw [private]

Definition at line 182 of file ScannerSickS300.h.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator


cob_sick_s300
Author(s): Florian Weisshardt
autogenerated on Fri Jan 11 10:11:19 2013