На последовательный порт приходят данные в формате типа char, но двумя символами - в 16 представлении (0х
FF), физически это два байта. В Борланде я перевожу это в формат int, и потом анализирую эти данные (макс, мін, график данных). Функция, которая считывает с последовательного порта, возвращает массивы с разной длинной (как кратной так и некратной), поэтому мои данные могут легко сместится на один байт(скажем прейдет 240 байт, а потом 243, 243, 246 - второй пакет "съест" половинку моего "16-представленного char'а", а третий пакет начнётся криво). Если можно, пожалуйста, выложите код, который бы додавал *s в массив data. Как инициализировать data и указатель на него. Извините, но я еще не научился работать с указателями.
void __fastcall TForm1::CommPortDataReceived(TObject *Sender, DWORD Count)
{
if( CommPort->InBuffUsed == 0 ) return;
int in_b = 0;
in_b = CommPort->InBuffUsed;
char *s = new char[in_b + 1];
in_b = CommPort->GetBlock( s, in_b );
s[in_b] = 0;
for (i=0;i<in_b;i++)
{
data[j] = s[i];
j++;
if (j==25000) j=0;
}
delete s;
}
P.S. Как можно вывести быстро график данных, когда нужна критическая скорость (в реальном времени). Спасибо за быстрые ответы.