static void sample_parser(char *line, struct divecomputer *dc) { int m, s = 0; struct sample *sample = new_sample(dc); m = strtol(line, &line, 10); if (*line == ':') s = strtol(line+1, &line, 10); sample->time.seconds = m*60+s; for (;;) { char c; while (isspace(c = *line)) line++; if (!c) break; /* Less common sample entries have a name */ if (c >= 'a' && c <= 'z') { line = parse_keyvalue_entry(parse_sample_keyvalue, sample, line); } else { const char *end; double val = ascii_strtod(line, &end); if (end == line) { report_error("Odd sample data: %s", line); break; } line = (char *)end; line = parse_sample_unit(sample, val, line); } } finish_sample(dc); }
void DiLambda::data_available() { while (current_port.canReadLine()) { QByteArray line = current_port.readLine(); qDebug() << "read:" + line; if (line.startsWith("J: ")) { qDebug("looks like json"); QJsonDocument json = QJsonDocument::fromJson(line.mid(3)); // Skip the first 3 characters qDebug() << "Jason: " << json.toJson(); QJsonObject jo = json.object(); QJsonArray bg = jo["bg"].toArray(); QJsonArray sample = jo["signal"].toArray(); QList<int> data_list; for (int i = 0; i < 3; i++) { data_list.append(sample[i].toInt() - bg[i].toInt()); } emit new_sample(data_list); } } }