vc ++ 6.0 последовательная связь - PullRequest
0 голосов
/ 03 декабря 2008

В vc ++ я использую MScomm для последовательной связи, я получил данные в этом формате 02120812550006050.0, я не понимаю, как это читать, в каком формате это, Начиная начальный кадр и в конце конечного файла, остальное я не знаю.

РЕДАКТИРОВАТЬ 1:

он содержит дату и время, как я могу отделить этот

Ответы [ 2 ]

2 голосов
/ 03 декабря 2008

Забавные символы - это маркеры, обозначающие такие вещи, как начало записи, конец записи, разделитель полей и так далее. Не зная действительного протокола, это немного сложно сказать.

Данные намного проще.

Между маркерами 000f и 0002 у вас есть поле даты / времени, 2 декабря 2008 г., 12: 55: 00.

Между маркерами 0002 и 0003 это выглядит как простое число с плавающей точкой, которое может иметь значение в долларах или вообще ничего, это зависит от того, что находится на другом конце ссылки.

Чтобы разделить его, я предполагаю, что вы прочитали его в какой-то переменный массив символов. Просто найдите маркеры и извлеките поля между ними.

Дата / время имеют фиксированный размер, и значение, вероятно, также (так как оно имеет начальный 0), так что вы можете просто использовать memcpy для извлечения необходимой вам информации из буфера, нулевого завершения, преобразования ее значение для поплавка и вуаля.

Если это фиксированный формат, вы можете использовать что-то вроде:

static void extract (char *buff, char *date, char *time, float *val) {
    // format is "\x01\x0fDDMMYYhhmmss\x02vvvvvvv\x03\x04"
    char temp[8];
    memcpy (date, buff +  2, 6); date[6] = '\0';
    memcpy (time, buff +  8, 6); time[6] = '\0';
    memcpy (temp, buff + 15, 7); temp[7] = '\0';
    *val = atof (temp);
}

и позвоните по этому номеру:

char buff[26]; // must be pre-filled before calling extract()
char dt[8];
char tm[8];
float val;
extract (buffer, dt, tm, &val);

Если не фиксированный формат, вам просто нужно написать код, чтобы определить позиции разделителей полей и извлечь то, что между ними.

0 голосов
/ 03 декабря 2008

Маловероятно, что вы поймете это, если не будете знать, с чем вы общаетесь и как он общается с вами. (подсказка - вы можете попробовать рассказать нам)

...