urgCheckVersion.cpp
00001
00002
00003
00004
00005
00006
00007 #include "urgCtrl.h"
00008
00009 enum {
00010 VersionLines = 8,
00011 };
00012
00013
00014 int URGCtrl::getVersionInfo(char lines[][LineLength]) {
00015 if (!isConnected()) {
00016 throw URG_Exception("URG is not connected");
00017 }
00018
00019
00020 con->send("SCIP2.0\r", 8);
00021 char buffer[8];
00022 con->recv(buffer, 8, 130);
00023 skipReply(2);
00024
00025 con->send("VV\r", 3);
00026 for (int i = 0; i < VersionLines; ++i) {
00027 if ((con->recv_line(lines[i], LineLength, 150) <= 0) &&
00028 (i < (VersionLines-1))) {
00029 return -1;
00030 }
00031 }
00032 return 0;
00033 }
00034
00035
00036 void URGCtrl::checkVersion(void) {
00037
00038 enableTimestamp = false;
00039 enableOver4096 = false;
00040 eachDataByte = 2;
00041
00042
00043 char lines[VersionLines][LineLength];
00044 if (getVersionInfo(lines) < 0) {
00045 return;
00046 }
00047
00048
00049
00050 enableTimestamp = true;
00051 if (con) {
00052 con->setTimestampMode(true);
00053 }
00054
00055
00056
00057 if (!strcmp("PROD:SOKUIKI Sensor URG-X003", lines[PROD])) {
00058 enableOver4096 = true;
00059
00060
00061 if (strncmp("PROT:00003,(SCIP1.0z", lines[PROT], 20)) {
00062 eachDataByte = 3;
00063 }
00064 }
00065
00066 #if 0
00067
00068
00069 con->send("L1\r", 3);
00070
00071 char buffer[7];
00072 con->recv(buffer, 7, 230);
00073 #endif
00074 }
00075