Показать сообщение отдельно
  #1  
Старый 05.07.2011, 14:48
fen fen вне форума
Прохожий
 
Регистрация: 23.01.2008
Сообщения: 7
Репутация: 10
По умолчанию Как преобразовать данные с COM-порта

Тема: Необходимо преобразовать данные, полученные с COM-порта (с бесконтактной карты EmMarine, поднесенной к proximity-считывателю) в десятичный формат (должны получить числовой идентификатор типа 61281581286128254128696102152254128120128254)
Код:
procedure TMainForm.ReadDataClick(Sender: TObject);
Var
  RCBuf:PChar;        //Буфер данных для приема
  nToRead:Cardinal;   //Число байт для чтения
  nRead:Cardinal;     //Число прочитанных байт
  ComStat:TComStat;   //Состояние порта
  Errs:Dword;
begin
  ClearCommError(POrt,Errs,@ComStat); //Считываем состояние порта
  nToRead:=ComStat.cbInQue;  //Считываем число байт для чтения из структуры
  nToReadLabel.Caption:=IntToStr(nToRead);  //Выводим на форму число байт для чтения
  ReadFile(Port,RCBuf^,nToRead,nRead,nil);  //Считываем данные
  nReadLabel.Caption:=IntToStr(nRead);      //Выводим на форму число прочитанных байт
  RcDataLabel.Caption:=RCBuf; //Выводим на форму считанные данные
end;

proximity-считыватель присоединен к порту COM №1
Порт открывается
Число байт для чтения: 11
Число прочитанных байт: 11
Данные принимаются, но в формате иероглифов (см. скрин)


Как эти данные преобразовать в человеческий вид. Типа в 61281581286128254128696102152254128120128254. Как реализовать это через массив, или другими способами?
Ответить с цитированием