Главная страница
    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.015 c
2-1140982178
WestBronx
2006-02-26 22:29
2006.03.12
Список файлов в папке


15-1139869651
Piter
2006-02-14 01:27
2006.03.12
HDTV фильмы...


15-1139220980
lak__b
2006-02-06 13:16
2006.03.12
Подскажите пожалуйста на счет мобил


2-1140983804
.Denny.
2006-02-26 22:56
2006.03.12
Работа с файлами и дирректориями


9-1126094102
rsy
2005-09-07 15:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский