Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как переделать мне зто для работы в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.05 c
4-1079696238
Falendysh
2004-03-19 14:37
2004.04.11
OLE Container Problem


14-1082303574
Шишкин Илья
2004-04-18 19:52
2004.04.11
Проблемы с процессором


1-1079980993
валенок
2004-03-22 21:43
2004.04.11
Окно на заднем плане


7-1075809772
Petrovitch
2004-02-03 15:02
2004.04.11
Печать текстовки на матричный прирнтер Windows XP


3-1082013569
kat
2004-04-15 11:19
2004.04.11
Не могу создать alias в ODBC Driver do Microsoft Access





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский