Exemplo n.º 1
0
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);
        }
    }
}