Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


E-140 на Delphi

Вы не вошли.

 Поиск | Регистрация | Вход 

leonbn
21.02.2004 12:27:04
#1

Гость

E-140 на Delphi

Здравствуйте!
Перевожу библиотеку lusbapi на Delphi. (только для платы Е-140) Я работал на С и С++ только во времена DOS, многое забыл.
Подскажите прав ли я в этих фрагментах и если нет, то как правильно:

1.                                             
this->am.AdcRate=(double)FREQ/2000/(*(WORD*)(buf+128));               

move(pbyte(longint(buf)+128)^, w, SizeOf(word)); //w: word; buf: array of byte
_am.AdcRate := FREQ / 2000 / w;

2.
*(WORD*)(buf+128)=k;

Move(word(k), pbyte(Longint(buf)+128)^, SizeOf(k)); //k: dword; buf: array of byte

Как правильно перевести следующую ф-ию:
BYTE TLE140::CRC8CALC(BYTE *buf, WORD sz)
{
BYTE crc=CRC8INIT;
while(sz--) crc=CRC8ADD(crc, *buf++);
return crc;
}
Можно так?
function TLE140.CRC8CALC(buf: PBYTE; sz: WORD): byte;
var
  ofs: word;
  zn: byte;
begin
  result := CRC8INIT;
  ofs := 0;
  while sz > 0 do begin
    zn := pbyte(longint(buf)+ofs)^;
    Result := CRC8ADD(Result, zn);
    Inc(ofs);
    Dec(sz);
  end;
end;

С уважением, Леонид.

leonbn
21.02.2004 13:55:15
#2

Гость

Re: E-140 на Delphi

В догонку:
Что помещается в переменные k и n
sscanf(md.SerialNumber, "%u%*1[lL]%lu", @k, @n)

alexandr
24.02.2004 13:41:42
#3

Гость

Re: E-140 на Delphi

1. правильно.

2. нет, лучше так:
*(WORD*)(buf+128)=k;
Move(word(k), pbyte(Longint(buf)+128)^, SizeOf(word)); //k: dword; buf: array of byte

3.можно.

4.серийный номер имеет вид: <версия>L<номер>,
соответственно в k помещается версия, а в n - номер.

5. но самое главное! я бы не рекомендовал полность переносить штатную библиотеку на какой-либо другой язык без особой необходимости. со временем РЕАЛИЗАЦИЯ фукций штатной библиотеки может измениться. с другой стороны, изменения в ИНТЕРФЕЙСЕ маловероятны. определив в своем проекте только интерфейс к штатной dll-библиотеки вы сможете в большинстве случаев избежать внесения изменений в свой софт при изменении библиотеки.

пример использования штатной dll-библиотеки в проекте на делфи можно посмотреть в каталоге //USB//E440//Examples//D6//LoadLBios компакт-диска поставляемого с модулем.