Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Register des PC-Speakers ansprechen...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.06.2007, 21:16 Uhr
tsdrummer



Hallo,
ich bin relativ neu in der Programmierwelt und befasse mich mit C/C++ seit ca. einem halben Jahr intensiv.

Mich würde interessieren wie man einen Ton über PC-speaker ausgibt, aber durch direktes Ansprechen der entsprechenden Register...

Der Befehl "Beep" macht schließlich auch nichts anderes, mich interessiert aber was genau dahinter alles so steckt... würde mich freuen wenn jemand ein konkretes Codebeispiel postet.

Gruß und schonmal vielen Dank für's lesen,
Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.06.2007, 21:48 Uhr
Kest
saint


Hi!

Hat mit dem Standard noch weniger zu tun! (eigentlich nichts)
Wie dir schon gesagt wurde, lässt sich das nur indirekt machen; und das ist eine eher ... gewöhnungsbedürftige und unständliche Sachen.

Aber wenn du willst, fang bei Ring 3 an und arbeite dich in Richtung Ring 0 hoch.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 26.06.2007 um 21:48 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.06.2007, 22:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wie in www.fun-soft.de/showtopic.php?threadid=18158 schon gesagt - alle modernen 32 oder 64Bit-Betriebsysteme lassen dich nicht mehr direkt mit der Hardware kommunizieren (außer über Kernelmodule/-treiber) und selbst da großteils nur eingeschränkt.
--
class God : public ChuckNorris { };

Dieser Post wurde am 26.06.2007 um 22:04 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2007, 22:10 Uhr
tsdrummer



hmm, keiner kann mir Code zu meinem Vorhaben posten...
Helft mir mal weiter...

gehen wir mal davon aus, ich habe kein Windows laufen, sondern z.b. DOS oder Linux -> wo es halt möglich ist direkt mit der HW zu sprechen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.06.2007, 22:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


linux und hardware direkt ansprechen? in welcher zeit lebst du denn????

selbst unter linux kannste das nur per kernel-modul. schau dir da doch einfach mal den kernel-source von pcspkr.ko an. drivers/input/misc/pcspkr.c da steht alles drin. (ansonsten läuft der pclautsprecher, da es ein i/o-gerät ist, über inp/outp)
--
class God : public ChuckNorris { };

Dieser Post wurde am 26.06.2007 um 22:17 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.06.2007, 08:23 Uhr
tsdrummer



ok, dann frag ich mal anders:

Wie wäre den der theoretische code (ohne das es funktioniert)...?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.06.2007, 09:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
/* enable counter 2 */
outp(inp(0x61) | 3, 0x61);

/* set command for counter 2, 2 byte write */
outp(0xB6, 0x43);

/* select desired HZ */
outp(frequency & 0xff, 0x42);
outp((frequency >> 8) & 0xff, 0x42);

/* wait a few seconds */
sleep(2);

/* disable counter 2 */
outp(inp(0x61) & 0xFC, 0x61);
        



(btw. das ist das was im prinzip im Linux-Kernel-Modul ebenfalls steht - wenn du da reingesehen hättest ...)
--
class God : public ChuckNorris { };

Dieser Post wurde am 28.06.2007 um 09:06 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.06.2007, 15:54 Uhr
tsdrummer



vielen Dank für die Antwort, könnt ihr den noch bischen KOmmentieren..

was z.B. eißt HZ? Herz ?
oder "disabled counter" Welcher counter ???

Dieser Post wurde am 28.06.2007 um 15:54 Uhr von tsdrummer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.06.2007, 16:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja der speaker hat ne art "zähler" solang der aktiv ist - spielt er töne ab sobald man ihm nen short mit der frequenz schickt. und nach 2 sekunden tut man ihn eben wieder deaktivieren in meinem beispiel, also er stoppt den ton.
--
class God : public ChuckNorris { };

Dieser Post wurde am 28.06.2007 um 16:53 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.07.2007, 14:26 Uhr
tsdrummer



dann erstmal danke, sind das genau die richtigen register oder nur beispielregister ?

Wie würde der c-code oben in Assembler aussehen ?

grüße,
Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: