Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: 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 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.045 c
4-1079581149
StPu
2004-03-18 06:39
2004.04.11
Мастера подскажите как убрать кнопку "Развернуть"


3-1082007252
Evgenija
2004-04-15 09:34
2004.04.11
Подсоединение к базе Оракла


14-1079109049
Soft
2004-03-12 19:30
2004.04.11
Тотальное средство борьбы со СПАМОМ!!!


4-1075794884
LiteX
2004-02-03 10:54
2004.04.11
Поиск файлов и определение доступных дисков в системе.


14-1082202368
garry79
2004-04-17 15:46
2004.04.11
Народ, где можно поискать avi шки или gif ы для заставок





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский