bool ModelIO::readCSV(QString & fileURL, pcl::PointCloud<PointType>::Ptr cloud) { QFile file(fileURL); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); QRegExp separator(QStringLiteral(",")); float x,y,z; while (!in.atEnd()) { QString line = in.readLine(); QStringList list = line.split(separator); if (!(parseToFloat(list[0], x) && parseToFloat(list[1], y) && parseToFloat(list[2], z))) { addStatus(QObject::tr("Invalid number in file: ") + line); return false; } cloud->push_back(PointType(x, y, z)); } cloud->width = cloud->size(); cloud->height = 1; cloud->is_dense = true; return true; } else { addStatus(QObject::tr("Can not open file.")); return false; } }
float GPS::getLatitudeOrLongitude(){ int i, count; char chars[100]; for (i = 0; i < 100; i++){ chars[i] = -1; } if(waitForNextCharAvailable()){ char c = getNextChar(); int i = 0; while (i < 100 && c != ',' && waitForNextCharAvailable()){ chars[i] = c; c = getNextChar(); i++; } if (c != ',' && i < 100) chars[0] = -1; } count = 0; while (count < sizeof(chars)/sizeof(char) && chars[count] >= 0) count++; if (count == 0) return -1; char *ret = (char*)malloc(sizeof(char) * i); for(i = 0; i < count; i++){ ret[i] = chars[i]; } if(!areDigits(ret)) return -1; free(ret); return parseToFloat(ret, count); }