Kezdőoldal » Számítástechnika » Programozás » C (99) Programozás : Gyors...

C (99) Programozás : Gyors sípolások - HOGYAN?

Figyelt kérdés

C-ben szeretném rövid időtartamokra gyors egymásutánban - rövid késleltetésekkel - megszólaltatni a "belső hangszórót". Pl.: adott frekvencián egymásután 10×-er 50 msec.-os várakozásokkal elválasztva 50 msec. ideig sípoltatni a gépet.


Csak ugye a helyzet az, hogy az alapértelmezett Beep() és Sleep() parancs ezekhez meglehetősen lassúak és akadnak, úgyhogy a gyakorlatban képtelenség ezredmásodpercre pontosan kivitelezni azt, amit én szeretnék.


Angol fórumokon olvastam azt az ajánlást, hogy generáljak valós időben egy WAV szekvenciát és azt küldjem rá a hangkártya driver-re, de ez így nekem C-ben elsőre nagyon bonyolultnak tűnik! :(


Nincs erre valami kezelhetőbb, nem annyira bonyolult módszer???


Amúgy assembly kódokkal is próbálkoztam, de az még sikertelenebb volt : vagy szólt, vagy nem szólt, vagy csak egy pillanatig szólt, vagy teljesen beragadt a hangszóró -- hozzáteszem UGYANANNÁL a programnál.



Ötlet? Vagy esetleg meglévő példakód???



És mielőtt elfelejteném, Windows 7-et használok (az van a gépen, nem én raktam rá, amúgy ilyenek miatt jobban szeretem az XP-t), illetve itt van példaként egy a saját kérdésemhez hasonló problémaleírás angolban - csak az a nagy különbség, hogy nekem ezt valós időben kéne megoldanom lehetőleg fájlírogatások nélkül : [link]



Előre is köszönöm (előrevivő válaszokért természetesen meglesz a pontjutalom)!



2013. okt. 21. 01:47
 1/5 iostream ***** válasza:

Na most a Windows nem valós idejű oprendszer, tehát valós idejűség sosem lesz garantálva.

Ezen túl: elképzelésem sincs, én is csak guglizni tudnék. A pontok nem érdekelnek.

2013. okt. 21. 14:31
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

"elképzelésem sincs, én is csak guglizni tudnék. A pontok nem érdekelnek."


Ha nincs elképzelésed, kérlek FELESLEGESEN NE jelöltesd megválaszoltnak a kérdésem SEMMITMONDÓ válasz beküldése által!


Ezenfelül félreértelmezted a valós idő itteni jelentését : a hangkártyára kiküldött bájttömböt közvetlenül, késleltetés nélkül szeretném PCM adatként megszólaltatni, NEM pedig WAV fájlba menteni és külső programmal lejátszatni.



A Google-t pedig még én is ismerem, csak eddig egy Audio API-t sem volt szerencsém találni, ahol számomra érthető/kivitelezhető módon leírták volna a fájlok lefordítását.

Egyébként meg nem igazán szeretném, ha a programomhoz DLL fájlokat kéne bepakolgatni, ezért jó lenne egy nem külső API-tól függő megoldás.

2013. okt. 21. 16:01
 3/5 SimkoL ***** válasza:
Hadd álljak ki a kollega mellet :"Na most a Windows nem valós idejű oprendszer, tehát valós idejűség sosem lesz garantálva. " Nem engedi az op. rendszer. Win 7. főleg., hogy 'szívhezszólóan' a hardwerher közvetlenül hozzáférjél. A Pascal is tudta dos alatt amit kérsz :) Az Op. rendszer védi saját magát, ezért e 'direkt' eléréseket sem nagyon támogatja, vagy nagyon is felügyeli.
2013. okt. 21. 18:07
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

Jaja, csak aztán valahogy mégis vannak programok, amiknek ez sikerül - ld.: [link]


???


Netán szigorúan őrzött haditiok, hogy ezek a programok hogy tudnak kommunikálni és adatokat küldeni a hangkártyára?

Bizonyára, legalábbis a számomra - merthogy ez a kérdés jövő héten sem lesz már megválaszolva arra mérget veszek!

2013. okt. 21. 19:12
 5/5 A kérdező kommentje:

Illetve még egy kérdés, ha szabad:


Mi a lyó ....... értelme volt kiszedni Win 7-ből a belső hangszóró elérhetőségét ??!!


Merthogy az, ami még XP-n vígan működött, az már nem csak nekem, de a DOS-BOX-on kívül SENKINEK és SEMMINEK nem sikerül.


Pl. Ld.:


void SOUND () {


BX = AX; // frekvencia

DX = 0x12;

AX = 0x34DC;

$DIV BX

BL = AL;

AL = 0xB6;

$OUT 0x43,AL

AL = BL;

$OUT 0x42,AL

AL = AH;

$OUT 0x42,AL

$IN AL,0x61

AL |= 3;

$OUT 0x61,AL

}

2013. okt. 21. 19:19

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!