Dla ciebie jako programisty ważna jest wiadomość czy w danym systemie Linux znajduję się podłączona karta dźwiękowa. Jednym ze sposobów sprawdzenia tego jest sprawdzenie /dev/sndstat. Jeśli otwarcie /dev/sndstat się nie powiedzie i errno=ENODEV znaczy to, że sterownik dźwięku jest nieaktywny, co znaczy, że nie otrzymasz pomocy ze strony sterownika dźwięku jądra. Taki sam rezultat otrzymamy przez otwarcie /dev/dsp pod warunkiem, że nie jest to odnośnik do sterownika pcsnd, gdyż w takim przypadku polecenie open() się uda.
Jeśli chcesz się bawić kartą dzwiękową na poziomie sprzetowym musisz wiedzieć, że pewne kombinacje wywołań outb() i inb() wykryją kartę, której szukasz.
Używając sterownika dźwięku w twoich programach, są szanse że będą one także chodziły na innych systemach niż i386, ponieważ jacyś mądrzy ludzie użyli tych samych sterowników w Linuksie, isc, Free-BSD i wiekszości innych systemów bazowanych na i386. Pomoże to w dostosowaniu programów dla innych architektur, jeśli Linux oferuje ten sam interfejs sterownika dźwięku na innej platformie. Należy jednak pamiętać, że karta dźwiękowa nie należy do konsoli Linuxa, lecz jest specjalnym urządzeniem. Karta dźwiękowa głównie oferuje te trzy podstawowe cechy:
Każda z tych cech ma własny interfejs. Dla próbkowania cyfrowego jest to /dev/dsp,
dla modulacji częstotliwości jest to /dev/sequencer, a dla interfejsu midi
/dev/midi. Ustawienia dźwięku (takie jak głośność, balans, basy, tony) mogą być
kontrolowane przez interfejs /dev/mixer. Dla kompatybilności istnieje urządzenie
/dev/audio, które potrafi czytać format dźwięku SUN
-law, ale pasuje to do
urządzenia próbkowania cyfrowego.
Masz rację zgadując, że używamy ioctl() do manipulowania tymi urządzeniami. Polecenie ioctl() zdefiniowne jest w <linux/soundcard.h> i zaczyna się od SNDCTL_.
Ponieważ nie posiadam karty dźwiękowej, ktoś inny musi kontynuować dalej
Przetłumaczył: Przemysław Nowak
<nowakp@box43.gnet.pl>
W rozdziale tym porozmawiamy o wejściu i wyjściu na ekran opartym na znakach.
Znak należy rozumieć jako grupę pixeli zmienianą zależnie od zestawu znaków.
Twoja karta graficzna zawiera jeden lub więcej zestawów, oraz pracuje domyślnie
w trybie znakowym, dzieje się tak ponieważ text jest przetwarzany znacznie
szybciej niż grafika. Z terminalem możesz zrobić dużo więcej niż nudne
wyświetlanie znaczków. Opiszę jak korzystać ze specjalnych cech terminala linuxowego,
zwłaszcza konsoli.
Od tłumacza:
Przy wielu funkcjach zaznaczone było, że nie są zaimplemetowane, usunąłem
te oznaczenia, gdyż po sprawdzeniu plików nagłówkowych doszedłem do wniosku,
że się to zmieniło. Gdybym się jednak gdzieś pomylił: proszę, powiadom mnie o tym.
W następujących rozdziałach omówię sposoby używania odmiennych pakietów dostępu do terminala. W Linuksie mamy wersję GNU termcap oraz możemy używać ncurses zamiast curses.