Вниз
Скачать: CL | DM;

Как переделать мне зто для работы в window 2000   Найти похожие ветки 

 
ma ©   (2004-02-09 14:45) [0]

Эта штука работает под 98 виндой. Под 2000 на cli выдает ошибку "privileged instruction" . Кому не лень  - помогите.

function inportb(port : Word) : Byte; assembler; //чтение байта из порта port
asm
 mov dx, port
 in al, dx
end;

procedure portoutb(val : Byte; port : Word); assembler; //запись байта val в порт port
asm
 out dx, al;
end;

procedure outportb(port : Word; val : Byte);
begin
 portoutb(val, port);
end;

//------------------------------------------------------------------------------
var AdrCom : Word;
var T1, T2 : Integer;
var AdcMin : Real = 0; AdcMax : Real = 5;
var AdrBase: array[1..4] of Word = ($3F8, $2F8, $3E8, $2E8);
procedure Beep();
begin
 outportb($61, (inportb($61) or $03));
 outportb($43, $B6);
 outportb($42, Lo(2000));
 outportb($42, Hi(2000));
 Sleep(100);
 outportb($61, (inportb($61) and $FC));
end;

procedure DelayFast(t : Integer); //Быстрая задержка (t, us)
var t1, t2 : Int64;
begin
 QueryPerformanceCounter(t1); t2 := t1+t+1;
 while t1<t2 do QueryPerformanceCounter(t1);
end;

function TestAdc12S() : Byte;
//Проверка соединения DTR-RI. Возвращает: 0 - Ok
begin
 outportb(AdrCom+4, 2); DelayFast(T1); //установить DTR в -
 if((inportb(AdrCom+6) and $40) <> 0) then Result := 1 //считать DTR по RI
 else begin
   outportb(AdrCom+4, 3); DelayFast(T1); //установить DTR в +
   if((inportb(AdrCom+6) and $40) = 0) then Result := 1 else Result := 0;
 end
end;

function Adc12SValue() : Real;
var i, cod : Word;
begin
 cod := 0;
asm  cli; end;
 outportb(AdrCom+3, $40); DelayFast(T1); //Старт АЦП (TXD в +)
 outportb(AdrCom+3, 0); DelayFast(T2);
asm sti; end;
 for i := 15 downto 0 do
 begin
   outportb(AdrCom+4, 1); DelayFast(T1); //установить SCLK в 1 (RTS в -)
   if(inportb(AdrCom+6) and $10 = 0) //считать бит по CTS
     then cod := cod or (1 shl i);
   outportb(AdrCom+4, 3); DelayFast(T1); //установить SCLK в 0
 end;
 if(cod and $F000 <> 0) then Result := 0 else
   Result := (cod/4095.0)*(AdcMax - AdcMin) + AdcMin;
end;


 
VMcL ©   (2004-02-09 15:00) [1]

Через CreateFile() судя по всему.


 
VMcL ©   (2004-02-09 15:45) [2]

А вообще, тебе куда-нибудь типа сюда:
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621259&n=15



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
4-1075818303
Pul
2004-02-03 17:25
2004.04.11
стандартное диалоговое окно


3-1081482578
User_OKA
2004-04-09 07:49
2004.04.11
Сортировка


6-1079354227
aser
2004-03-15 15:37
2004.04.11
почта с Mail.ru - как ее получять/отправить по http по 80 порту


14-1082352021
Романов Р.В.
2004-04-19 09:20
2004.04.11
Support и его уровень


14-1079338530
Andryk
2004-03-15 11:15
2004.04.11
Ура появилась новая тема для флейма про самолеты :о)))) !!!!




   Наверх