PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Hardware ansteuern (unter Linux)



Silver
02-05-2003, 14:17
HI!
Also wie steuere ich eigentlich Hardware, zB Netzwerkkarte, Soundkarte oder sonstige Hardware unter Linux an? Wie baut man dann zB Chats oder wie sendet man Nachrichten übers Netzwerk? Gibts da eigene Bibliotheken dafr, oder geschieht dies über Zugriff zu den Dateien in /dev ?!?

Dank im Voraus für die Antworten!

mfG

tuxipuxi
02-05-2003, 15:52
hallo,


soviele fragen auf einmal :)?

ich beziehe mich jetzt mal nicht auf pci karten sondern auf die serielle schnittstelle:

diese kannst du , am besten mit libs, direkt ansprechen, ein link dazu liegt in /dev .

Chats und nachrichten hoeher. du hast gerade naemlich nach dem OSI schichten modell von der uebertragungsschicht gesprochen, diese hier ist aber glaube ich (ohne gewaehr) die protokollschicht.

sprich:

du benutzt sockets auf die du daten "legst" und der socket auf der fremden seite liest die daten aus seinem socket.

hoffe das hat n bisschen geholfen, wenn du die fragen etwas genauer stellen wuerdest koenntest du evt. auch ne bessere antwort bekommen. wenn du wirklich hintergrundwissen zu kommunikation willst musst du z.b. illustrated tcp/ip lesen


gruss tuxipuxi

peschmae
02-05-2003, 16:19
für die Soundkarte: Ansprechen tust du die über /dev/dsp, wobei du die Qualitätsparameter (Mono/Stereo, 8/16 bit, Frequenz) über OSS/Alsa - funktionen
einstellen kannst

MfG Peschmä

Silver
02-05-2003, 16:34
--AHA--
naja, so is das also!
wird also doch schwerer als ich dachte!


@ tuxipuxi: illustrated tcp/ip --> von wo krieg ich das her? Und du hast gesagt die libs sind in /dev. Also ich hab weder ein lib noch include Verzeichnis bzw. eine header-datei. Was hast du damit gemeint? Achja, der Begriff "mit libs direkt ansprechen" gefällt mir sehr gut ;) !

@ peschmae: /dev/dsp --> diese datei ist irgendwie leer!

Ich brauch dieses Wissen nicht für meine Schule, bzw. um Relais-Karten, etc. zu programmieren. Eben halt nur aus Fun und Wissenserweiterung!

Vielen Dank für die bisherigen Antworten!
mfG

PS: wenn ihr eine wichtige Info für mich habt, schreibt es bitte, danke!

tkortkamp
02-05-2003, 16:59
Hi!

Das Buch findest du hier: http://www.amazon.de/exec/obidos/ASIN/0201633469/qid=1051890362/sr=2-1/ref=sr_aps_prod_1_1/302-1664094-2296868

Unter UNIX (und damit auch Linux) wird jedes Gerät (es gibt wie immer Ausnahmen wie z.B. Netzwerkkarten usw.) als Datei in /dev zur Verfügung gestellt. Diese Dateien haben alle Eigenschaften die auch andere Dateien haben, d.h. man kann von ihnen lesen, schreiben, die Benutzerrechte ändern usw.
=> Alles was du im Prinzip brauchst sind die Befehle:
open, close, read, write und ioctl

Als kleiner Beweis:
Führ mal den Befehl cat /bin/bash > /dev/dsp aus, dann hörst du ein Rauschen.

c ya,
Tobias

anda_skoa
02-05-2003, 17:16
Original geschrieben von Silver
--AHA--
naja, so is das also!
wird also doch schwerer als ich dachte!


Du musst das im Normalfall auch nicht direkt machen.
Für Ansteuerung von üblicher Hardware gibt es meist Schnittstellen auf höherere Ebene.

Wobei der Zugriff über die File API eh schon sehr fein ist.

Ciao,
_

BLUESCREEN3D
02-05-2003, 17:25
wenn ich ein micro an meine soundkarte anschließe müsste ich doch rein theoretisch in der ausgabe von "cat /dev/dsp" veraenderungen sehen, wenn ich da reinlabere!? aber irgendwie ist das nicht so, die ausgabewerte beiben konstant bei 0x7F oder 0x80

(ja, das micro funzt und was ich sage wird auch gleich wieder ueber lautsprecher ausgegeben)

tkortkamp
02-05-2003, 17:47
Original geschrieben von BLUESCREEN3D
wenn ich ein micro an meine soundkarte anschließe müsste ich doch rein theoretisch in der ausgabe von "cat /dev/dsp" veraenderungen sehen, wenn ich da reinlabere!? aber irgendwie ist das nicht so, die ausgabewerte beiben konstant bei 0x7F oder 0x80

(ja, das micro funzt und was ich sage wird auch gleich wieder ueber lautsprecher ausgegeben)
Ich habe dasselbe gerade mit "Line in" (TV-Karte) als Aufnahmequelle probiert ich sehe durchaus andere Aushabewerte als 0x7F und 0x80.

Vielleicht machst du irgendetwas falsch?

c ya,
Tobias

Silver
02-05-2003, 17:55
@anda_skoa: gibts diese Ansteuerung auch unter c? Und wenn ja, wie bzw. welche!

also wenn ich nun zB auf /dev/dsp einen sound ausgeben will, muss ich erst mal mit die datei öffnen, dann dort binär(od. hexadezimal?) hineinschreiben, und danach wieder schliessen! Stimmt diese Satz? Und wenn ja, brauch ich da ja Root-Rechte, oder?

Sry, wegen den Fragen, hab aber noch keine wirklich gute Seite zum Thema angegoogelt!

mfG

tuxipuxi
02-05-2003, 18:57
illustrated tcp/ip --> von wo krieg ich das her?

wenn du einen browser bedienen kannst:
www.google.de



Und du hast gesagt die libs sind in /dev.

nein, ein link auf das device liegt in /dev(als linuxer sollte man das wissen)



Achja, der Begriff "mit libs direkt ansprechen" gefällt mir sehr gut !

ja, total amuesant.



@ peschmae: /dev/dsp --> diese datei ist irgendwie leer!

das ist aber ungewoehnlich.. normal ist das nur n zwischenspeicher wo die ganzen mp3 dateien reinkommen.



Ich brauch dieses Wissen nicht für meine Schule, bzw. um Relais-Karten, etc. zu programmieren.

ja find ich gut das du uns da als buchersatz nimmst, ist ja nicht so anstrengend wie selbst zu suchen.



@anda_skoa: gibts diese Ansteuerung auch unter c? Und wenn ja, wie bzw. welche!

nein, das musst du wie die ganzen mp3player machen.. immer datei oeffnen und schreiben.



Sry, wegen den Fragen, hab aber noch keine wirklich gute Seite zum Thema angegoogelt!

demnaechst kommt ein buch mit 100 tipps zu google raus.. das kannst du dir zum geburtstag wuenschen.




*SCNR*

anda_skoa
02-05-2003, 19:02
Original geschrieben von Silver
@anda_skoa: gibts diese Ansteuerung auch unter c? Und wenn ja, wie bzw. welche!


Natürlich auch für C.
Eigentlich meistens in C :)

Es gibt verschiedene Bibliotheken.
ALSA hat zum Beispiel eine eigene:
(siehe unetr Developer documentation)
http://www.alsa-project.org/documentation.php3#0.9doc

Oder via SDL
http://www.libsdl.org/intro.de/usingsound.html



also wenn ich nun zB auf /dev/dsp einen sound ausgeben will, muss ich erst mal mit die datei öffnen, dann dort binär(od. hexadezimal?) hineinschreiben, und danach wieder schliessen! Stimmt diese Satz?


Ja, so in etwa.
Eben dann, wenn man keine Audio Libs verwendet.



Und wenn ja, brauch ich da ja Root-Rechte, oder?


Du brauchst Schreibrechte am Device.
Wie die Rechte dort sind, hängt vom Setup ab.
Bei mir hat zB die Gruppe Audio dort Lese/Schreibrechte, also können alle User in dieser Gruppe Audio Applikationen benutzten.

Ciao,
_

Silver
02-05-2003, 19:12
@tuxipuxi: ich versuche stes freundlich zu anderen zu sein, und würde dies auch von den anderen erwarten so zu sein ;)

Ok, werde mich das nächste mal besser im WWW erkundigen, bevor ich poste!

@all: verwendet ihr im Allgmeinen eher Libs, oder steuert ihr direkt die Hardware an?

mfG

PS: Leider hatte ich erst vor einem Monat Geburtstag

BLUESCREEN3D
02-05-2003, 19:16
Original geschrieben von tkortkamp
Ich habe dasselbe gerade mit "Line in" (TV-Karte) als Aufnahmequelle probiert ich sehe durchaus andere Aushabewerte als 0x7F und 0x80.

Vielleicht machst du irgendetwas falsch?

welches device ist denn line in von tv-karte???
oder ist das auch /dev/dsp? wenn nicht, kann man das wohl nicht so ganz vergleichen...

was ich falsch mache weiss ich ja nicht, deshalb frage ich ^^

BLUESCREEN3D
02-05-2003, 19:53
habe ein beispiel programm auf der seite http://www.guerrilla.net/reference/dsp/prog_dsp.htm gefunden

irgendwie funzt noch nichtmal das...

tuxipuxi
02-05-2003, 20:22
Original geschrieben von Silver
@tuxipuxi: ich versuche stes freundlich zu anderen zu sein, und würde dies auch von den anderen erwarten so zu sein ;)

Ok, werde mich das nächste mal besser im WWW erkundigen, bevor ich poste!

@all: verwendet ihr im Allgmeinen eher Libs, oder steuert ihr direkt die Hardware an?

mfG

PS: Leider hatte ich erst vor einem Monat Geburtstag

ich moechte mich fuer meinen beitrag entschuldigen, hab etwas "die kontrolle verloren" :).
mir haben einige deiner aeusserungen nicht gefallen, tut mir leid.

Silver
03-05-2003, 12:09
schon verziehn!
werd das nächste mal versuchen meine äußerung deinen vorstellung anzupassen :D

zur info, werd mich mal näher mit SDL auseinandersetzen!

mfG

BLUESCREEN3D
03-05-2003, 23:03
habe es jetzt bei zwei pcs probiert, kriege einfach keine daten ueber /dev/dsp, außer eben 0x80 und bei dem einen pc auch mal 0x7F
bei einem dritten pc kriege ich ueber /dev/dsp die Soundkarten-Spezifikationen angezeigt!?!?! und ueber /dev/audio auch nur muell...

nachdem ich das micro angeschlossen habe *kein kommentar* sehe ich eine wunderschöne ascii-stream-visualisierung beim dritten pc - erzeugt durch "cat /dev/audio"

DanDanger
04-05-2003, 11:56
Hi,

Welchen Sound-Treiber benutzt Du (ALSA, OSS, ...) ????

Du könntest auch mal :

/dev/snd
/dev/sound
/dev/mixer

Versuchen.

Gruss
DanDanger

BLUESCREEN3D
04-05-2003, 14:18
ich glaube, ich benutze alsa - bin mir nicht sicher *gg*
die drei von dir genannten verzeichnisse funzen nicht, aber das ist jetzt auch egal - ein einfach einstellen des micro-ports als aufnahmequelle mit "aumix-minimal -m R" hat geholfen ^^

DanDanger
04-05-2003, 16:37
@BLUESCREEN3D :

BTW : Wenn ich mit dem MS-Internet-Explorer meiner UNI auf deine HP gehen will, stürzt das Ding IMMER ab ;-)

1) Ist das so gewollt ????
2) Wenn ja : Wie geht'n das ???? :D :D :D
3) Warum nur der IE (ActiveX, oder was? ) ????

The Ripper
04-05-2003, 17:43
Original geschrieben von DanDanger
@BLUESCREEN3D :

BTW : Wenn ich mit dem MS-Internet-Explorer meiner UNI auf deine HP gehen will, stürzt das Ding IMMER ab ;-)

1) Ist das so gewollt ????
2) Wenn ja : Wie geht'n das ???? :D :D :D
3) Warum nur der IE (ActiveX, oder was? ) ???? Das ist garantiert so gewollt, warum sollten sonst die 3 Zeilen

<form>
<input type crash>
</form>
direkt unter <html> stehen, und das noch in einem Frameset? :D

BLUESCREEN3D
04-05-2003, 18:37
hab ich gerade erst eingebaut, um es mal zu testen *fg*

http://www.linuxforen.de/forums/showthread.php?s=&threadid=78420