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

Вниз

Работа с системным динамиком)   Найти похожие ветки 

 
La_Grange   (2005-12-14 19:39) [0]

В virtual pascal имеется внешняя процедура beep(freq,duration)
Очень нужен исходный код этой процедуры для vp.
Вообще мне просто надо разбить эту процедуру на 2: включение системного динамика и выключение.
Есть идеи?
Заранее благодарен.


 
umbra ©   (2005-12-15 11:46) [1]

а разве он не включен постоянно во время работы компьютера?


 
TUser ©   (2005-12-15 12:18) [2]

Это апи-функция. Соотв. в Delphi ты ее можешь использовать точно так же. Разбить на 2 нельзя, но можно сделать так, что пищать будет долго.


 
PVOzerski ©   (2005-12-15 15:17) [3]

Ты ж даже платформу не указал. VP был под OS/2, под Win32 и под Linux. И исходники RTL в VP открыты. Beep реализован через SysBeep, а SysBeep - по-разному: в Win32 - через Win32-API-шный MessageBeep, в OS/2 - через PM_Alarm, в Linux - никак.


 
La_Grange   (2005-12-15 19:51) [4]

Эмм, извините, Win32.
Если на 2 разбить никак, то может можно ее как-нибудь научиться прерывать?


 
Se   (2005-12-15 20:56) [5]

procedure Sound(Frequency:word; Duration: Integer);
begin
 if Win32Platform=VER_PLATFORM_WIN32_NT then begin
   Windows.Beep(Frequency, Duration);
 end
 else begin
 asm
   mov   al,  0b6H
   out   43H, al
   mov ax,Frequency
   out 42h,al
   ror ax,8
   out 42h,al
   in    al,  61H
   or    al,  03H
   out   61H, al
 end;
 sleep(Duration);
 asm
   in    al,  61H
   and   al,  0fcH
   out   61H, al
 end;
 end;
end;

procedure Delay(Duration: Integer);
begin
 Windows.Sleep(Duration);
end;


 
La_Grange   (2005-12-16 16:26) [6]

он падает на строчке:

  out 43H, al

Пишет:

  XCPT_PRIVILEGED_INSTRUCTION
  (C0000096) at 00401005, TID = 0E40

Что с этим делать?


 
Se   (2005-12-17 09:35) [7]

А какой у тебя Windows?


 
La_Grange   (2005-12-18 21:21) [8]

Windows XP Corporate Edition SP2 RUS


 
Anatoly Podgoretsky ©   (2005-12-18 21:27) [9]

А какой код? Данный огрызок слишком маленькийю


 
DC-AC   (2005-12-19 09:14) [10]

Под NT-системы нужно использовать драйвер прямого доступа к портам. Например DLPortIO. Ниже небольшая процедура извлечения довольно мелодичного звука.

procedure Sound;
var bTemp: Byte; Count: Integer;
begin
bTemp := DLPortIO.Port[$61];
DLPortIO.Port[$43] := 182;
for Count:=1 to 10 do
     begin
      DLPortIO.Port[$42] := $30; // set frequency
      DLPortIO.Port[$42] := $4;  // set frequency
      DLPortIO.Port[$61] := bTemp or 3;
      Sleep(50);
      Application.ProcessMessages;
      DLPortIO.Port[$42] := $30; // set frequency
      DLPortIO.Port[$42] := $3;  // set frequency
      DLPortIO.Port[$61] := bTemp or 3;
      Sleep(50);
      Application.ProcessMessages;
     end;
DLPortIO.Port[$61] := bTemp;
end;


 
La_Grange   (2005-12-20 01:49) [11]

Всем спасибо
Вроде сам разобрался
Просто вызываю через thread Windows.beep, а в нужный момент - прерываю=))


 
Германн ©   (2005-12-20 02:02) [12]


> Se   (17.12.05 09:35) [7]
>
> А какой у тебя Windows?
> <Цитата>
> La_Grange   (18.12.05 21:21) [8]
>
> Windows XP Corporate Edition SP2 RUS
>


А программу ты делаешь под себя? И под свою ОС?


 
La_Grange   (2005-12-20 23:10) [13]

Делаю для себя=)
А идти вроде должна под любой XP, мне других пока не надо))



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

Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
15-1140028537
tesseract
2006-02-15 21:35
2006.03.12
Vmware Server стал бесплатным


2-1140456200
13
2006-02-20 20:23
2006.03.12
Время затраченное на поиск файлов


2-1140886777
Wel
2006-02-25 19:59
2006.03.12
image


1-1139392424
ДенисНск
2006-02-08 12:53
2006.03.12
Очередь MSMQ


2-1140952057
kot137
2006-02-26 14:07
2006.03.12
добавление поля в табл. с текущей датой





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