Forum: Mikrocontroller und Digitale Elektronik Computersteuerung


von Sebastian Thalhammer (Gast)


Lesenswert?

Hi.

Ich habe eine Frage zur C Programmierung. Und zwar möchte ich mich mehr
in die fortgeschritteren Gefilde dieser Sprache einarbeiten: Die
Hardwaresteuerung mit C. Nur habe ich bislang keine geeignete Quellen,
sprich Tutorials, gefunden. Ist es mit C überhaupt möglich, dass ich
z.B.: den Drucker anspreche, oder das Modem, usw.

Ich bin mir ja ziemlich sicher, dass es geht. Aber aufgrund des
Informationsmangels im Internet kommen mir langsam Zweifel. Kann mir
jemand Links zu guten Seiten verraten, die diese Themen behandeln?

Vielen Dank im Voraus.
Sebastian Thalhammer

von Markus Kaufmann (Gast)


Lesenswert?

Hallo Sebastian,

natürlich kann man das mit C machen. Was Du vielleicht bei Deiner Suche
übersehen hast: Sowas macht man heutzutage über das Betriebssystem,
nicht direkt.

Um ein Modem am COM-Port anzusprechen benutzt man unter Windows
CreateFile. Wenn Du danach suchst, dann wirst Du sicher auch was
finden.

http://www.lookrs232.com/com_port_programming/

Markus

von Frank Linde (Gast)


Lesenswert?

Und auch mal über den Tellerrand schauen: Linux ist (nahezu?) komplett
in C programmiert. In diesem Umfeld sollten sich reichlich
Informationen und Quelltexte zum Thema hardwarenahe Programmierung
finden lassen.

Gruß, Frank

von crazy horse (Gast)


Lesenswert?

Jo, ist in erster Linie Kommunikation mit dem Betriebssystem, da es nur
dadurch unabhängig von der jeweiligen Hardware wird. Was nutzt das
schönste Programm, welches dann nur auf exakt deinem PC läuft?
Ich bin schon eine ganze Weile raus aus dem PC-Software-Bereich,
erinnere mich aber, es grösstenteils über API gemacht zu haben. Ob das
noch up-to-date ist??

von Markus Kaufmann (Gast)


Lesenswert?

@Frank:
Die Linux-Sourcen werden ihm nicht allzuviel bringen, da im Kernel ja
nur Treiber sind und die eh' alles dürfen und außerdem Programme mit
Rootrechten eh' alles dürfen. Das läßt sich so nicht auf die
Windows-Welt übertragen.

@crazy horse:
Wenn er C programmiert ist die Winapi schon das Mittel der Wahl. Wenn
er C++ oder C# programmiert, dann kann er natürlich auch die MFC bzw.
die  .NET-Klassen verwenden.

Markus

von thomas b (Gast)


Lesenswert?

Wichtig wäre noch welches Betriebsystem, da z.B. Win2K direkte
Portzugriffe unterbindet.
Im Allgemeinen würde ich eine DLL für Portzugriffe verwenden, man muss
das Rad nich neu erfinden :-)

Die PORT.DLL funktioniert gut und ist einfach einzubinden.

cu tb

von thomas b (Gast)


Lesenswert?

Ich habe gerade noch eine DLL gefunden.
Untersützt alle Betriebsysteme, mit Quelltext ...

http://www.logix4u.net/inpout32.htm

cu tb

von Sebastian Thalhammer (Gast)


Lesenswert?

Tja, danke für die zahlreichen Antworten erstmal.

Ich werde sogleich alle Links durchforsten die ich finde. Achja, ich
programmiere in C und C++.

von Sebastian Thalhammer (Gast)


Lesenswert?

Ich habe noch eine Frage.

Also:
Ich habe mir gerade erst eine Tastatur von Logitech zugelegt. Mit der
ist es möglich verschiedene zusätzliche Funktionen auszuführen z.B.:
Lautstärke regeln. Hier wird wahrscheinlich die Soundkarte (oder in
meinem Fall der OnBoard Chip) modifiziert (berichtigt mich bitte, wenn
ich falsch liege).

Wird so etwas mit C oder C++ realisiert? Zugegeben, es wäre für mich
eine Nummer zu groß so etwas zu programmieren aber es interessiert mich
einfach.

von Tobias Breckle (Gast)


Lesenswert?

ne, die tastatur regelt lediglich deine windows lautstärke.
sieht man auch gut wenn man den windows mixer öffnet und dann die
lautstärke lauter und leiser macht. da geht dann der schieberegler für
die allgemeine lautstärke mit.
denk mal schon das die das in c++ gemacht ham. assembler wäre hierfür
zu aufwändig, da es hier ja nicht auf geschwindigkeit ankommt.

von Matthias (Gast)


Lesenswert?

Hi

das geschieht einfach durch entsprechende Aufrufe der Windows API. Der
Tastaturtreiber der Logitech sendet an das OS den Befehl "Lautstärke
um 5 Punkte runter" und das OS sollte es dann ausführen bzw. die
Aufforderung an der Treiber der Soundkarte weiterleiten welcher dann
die entsprechenden Register im Soundchip ändert. Sowas wird zware in
der Regel mit C oder C++ geschrieben aber es spricht nichts dagegen
eine andere Programmiersprache zu verwenden. Für Treiber kommt
allerdings hauptsächlich C zum Einsatz da andere Sprachen bereits zu
weit von der Hardware entfernt sind.

Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.