OS-Abfrage bei Windows und Linux

Hallo zusammen!

Ich habe auf Windows 7 in C# ein Programm für eine Lüftersteuerung geschrieben. Nur um den Umfang grob zu umreißen:
Ich habe eine Platine aufgebaut, deren Besetzung durch das PC-Netzteil gespeist wird und die durch einen kleinen Prozessor verwaltet wird. Der Prozessor gibt PWM-Signale aus, um 3 Lüfter gleichzeitig an einem Anschluss zu steuern. Die Informationen bekommt der Prozessor über die serielle Schnittstelle.
Ein C#-Programm liest die Temperaturen über ein externes Programm aus und schickt die Informationen dann an die Hardware. Wenn das Programm länger als 10 Sekunden keine Informationen schickt (also bei Absturz oder Beendigung), werden alle Lüfter mit maximaler Geschwindigkeit angetrieben. Das verrichtet alles unter Windows zuverlässig seinen Dienst.
Jetzt habe ich aber auf einer anderen Festplatte Ubuntu 10.10 installiert. Mein Versuch, das externe Programm dort einzubinden, ist gescheitert, es kann die Informationen unter Linux nicht auslesen. Ist auch nicht weiter schlimm, ich will deshalb mein Programm verändern. Nun zu meinem Problem:
Ich wollte den Programmstrang von vornherein in 2 Teile spalten. Angefangen mit einer Abfrage über das Betriebssystem soll das Programm bei Windows seinem bisherigen Ablauf folgen, bei Linux allerdings sollen die Lüfter auf einer fest eingestellten Geschwindigkeit laufen. Das Problem ist die Betriebssystemabfrage.
Zuallererst eine generelle Frage: Wird mein Programm bei Linux seinen Dienst überhaupt verrichten?
Wenn ja, welche Befehle muss ich für die Linuxabfrage einbauen? Ich will die Klasse OperatingSystem benutzen. Oder muss ich für Linux speziell ein neues Programm in einer anderen Sprache schreiben?
Ich hoffe, ich habe mein Anliegen einigermaßen klar ausgedrückt :smiley:
Weitere Fragen beantworte ich natürlich gerne und würde mich über Anregungen freuen.

Danke schonmal im Voraus
Frutzel

Hallo,
üblicherweise sollte dir „Environment.OSVersion“ die das OS bzw ein OperatingSystem Objekt liefern.

Gruss
Joey

Hoi Frutzel,

wie joey schon richtig gesagt hat sollte dir die Environment-Klasse weiterhelfen. Allerdings habe ich unter Mono noch nicht versucht mir diese Infos ausgeben zu lassen (doch verfügbar ist die Klasse auch dort). Meist reicht die Auswertung der Platform um unterscheiden zu können…
Versuch mal mittels eines ähnlichen Konstruktes wie diesem:

switch(Environment.OSVersion.Platform)
{
 //die PlatformID kann alternieren!
 case PlatformID.Win32Windows:
 //deine aktion(en)...
 break;
 case PlatformID.Unix:
 //deine anderen aktion(en)...
 break;
}

die Version auszulesen und deine SW zu steuern. Ich hoffe Das hilft dir weiter…

Greetz, me