#include <ScannerSickS300.h>
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 |
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.
anonymous enum |
Definition at line 125 of file ScannerSickS300.h.
ScannerSickS300::ScannerSickS300 | ( | ) |
Definition at line 103 of file ScannerSickS300.cpp.
ScannerSickS300::~ScannerSickS300 | ( | ) |
Definition at line 124 of file ScannerSickS300.cpp.
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.
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.
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.
int ScannerSickS300::m_iPosReadBuf2 [private] |
Definition at line 183 of file ScannerSickS300.h.
unsigned char ScannerSickS300::m_iScanId = 7 [static, private] |
Definition at line 184 of file ScannerSickS300.h.
ParamType ScannerSickS300::m_Param [private] |
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.
SerialIO ScannerSickS300::m_SerialIO [private] |
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.