Media-Server im Eigenbau

Schon seit längerer Zeit habe ich das Projekt eines eigenen Media-Servers im Auge gehabt, der grundsätzlich zwei Kriterien erfüllen soll:

Erstens soll er zur Archivierung meiner DVD-, Musik- und Fotosammlung dienen und zugleich als zweiten Punkt als zentrale Station zum Streamen diverser Medien bereitstehen, bzw. selbst die Wiedergabe dieser Medien auf HD-Geräten ermöglichen.

Als Hardware kommen hier folgende Komponenten zum Einsatz:

  • CPU: Intel DualCore E5200 @ 2x 2,5GHz
  • Mainboard: Asus P5QL-CM
  • Sound: 7.1 OnBoard
  • Ethernet: GBit onBoard
  • Arbeitsspeicher: 2x 1GB DDR2 800MHz
  • Grafikkarte: ATI Radeon 3450 passiv
  • Festplatten: insgesamt 4,5TB nonRAID, WD800JD, Samsung HD103UJ, Samsung HD203WI, Segate ST31500341AS
  • Opt. Laufwerk: LG GH-22LS DVD-Brenner
  • TV Karte: Hauppauge HVR-1300
  • Kartenlesegerät: 52in1
  • Netzteil: Sharkoon Rushpower M 500Watt
  • Lüfter: 4x Noiseblocker Multiframe MF8-S1
  • Lüftersteuerung: Aerocool Touch-1000
  • Gehäuse: Silverstone SST-GD01B-R Grandia
  • Tastatur: MS-Tech LT-390 Wireless
  • Maus: Logitech: Bluetooth Maus

Einzelheiten zu der Hardware:
So einige Komponenten waren noch in meinem Hardwarebestand vorhanden, wodurch das ganze Projekt wesentlich einfacher realisiert werden konnte. Obendrein haben sie sich als äußerst kompatibel und effizient erwiesen.
Beginnen wir mit dem Prozessor:

Intel Dual Core E5200:
Mit seinen zwei Kernen die jeweils mit 2,5GHz arbeiten, hat der Server genügend Power, um Filme in 1080p wiederzugeben und nebenbei noch etliche andere Anwendungen zeitgleich auszuführen. Genau das ist auch die Hauptaufgabe des Systems. Obendrein ist der Prozessor mit ca. 29 Watt im idle für seine Rechenleistung relativ sparsam. Und auch unter Last geht die Wattzahl kaum merklich nach oben.

Asus P5QL-CM:
Die Wahl fiel auf das Board, da zum einen durch den bereits vorhandenen Prozessor mit Sockel 775 die Auswahl eingeschränkt war, dieses Board dennoch alles bietet, was ich für das Projekt benötigt habe. Mit dem Intel G43-Express-Chipsatz wird mir die HD Wiedergabe gewährleistet. Obendrein befinden sich genügend Anschlüsse an Board, um alle Komponenten anschließen zu können. Darunter fallen 2 DDR2 Speicherbänke für max. 8GB RAM, 6 S-ATA II Ports mit Intel ICH10 Controller, 1 IDE Port, und 12 USB Anschlüsse. Ebenfalls ist eine 7.1 Soundkarte onBoard und ein GBit Ethernetport. Auf den vorhandenen Grafikchipsatz mit VGA, DVI und DisplayPort habe ich nicht allzu viel Wert gelegt, da ich eine zusätzliche Grafikkarte einsetze, Dazu aber mehr. Punktabzug bekommt das Board, da es keinen digitalen Audioausgang an der Rückseite bietet. Allerdings ist der Anschluss auf dem Board vorhanden, sodass dieser erweitert werden kann. Aber auch dieses ist für das Projekt nicht von Bedeutung, da die Tonausgabe auf anderem Weg funktioniert. Aber auch dazu später mehr.

2GB DDR2 Arbeitsspeicher:
Den Speicher hatte ich noch in meinem Repertoire und reicht völlig für das derzeitige Projekt aus. Bei Bedarf kann dieser ja erweitert werden.

ATI Radeon 3450 passiv:
Ich habe diese Grafikkarte gewählt, da sie zum einen durch die passive Kühlung den Geräuschverminderungsaspekt mit sich bringt, zum anderen mir mit den 2 DVI Ausgängen, wenn auch mit Hilfe von Adaptern, alle aktuellen Anschlussmöglichkeiten bietet. So funktioniert die Ausgabe auf einem VGA-Anschluss genauso gut, wie auf einem 1080p HDMI-Adapter. Zusätzlich ist noch ein analoges FBAS Signal via Adapter möglich.
Mit der Grafikkarte realisiere ich auch den Ausgang des Tonsignals. Ihr denkt euch nun bestimmt, wie das gehen soll. Naja nun, dank HDMI und dem richtigen Treiber ist heute alles möglich. 😉 Solltet ihr auch im Besitz einer ATI 3400er Grafikkarte sein, ladet euch den ATI HDMI Audio R242 Treiber runter und installiert ihn. Unter Windows7 funktioniert die Erkennung des HDMI-Ports als Audiogerät problemlos und liefert mir in Verbindung mit dem Windows Media-Player feinste Dolby Digital und DTS Ausgaben.

Festplatten:
Die Festplatten sind zur Zeit noch ein bisschen zusammengewürfelt. Das Betriebssystem, Windows7, läuft zurzeit auf einer 80GB Platte von WD. Diese kommt mit Sicherheit als erstes raus, erfüllt ihre ersten Testzwecke aber sehr gut. Als Neuanschaffung musste die Samsung HD203WI mit 2TB Speicherkapazität her, die dank ihrer 5.400 U/Min sehr leise und sparsam läuft. Dennoch schreibt sie fleißig 90MB/s. Dies ist kein Spitzenwert, betrachte man die Seagate-Platte, die mit ihren 150MB/s fast schon doppelt so viel verarbeitet. Allerdings wird die Samsung Festplatte ja auch „nur“ zur Wiedergabe von Medien benötigt und nicht zum dauerhaften „Datenschieben“. Somit überwiegen die zuvor genannten Argumente. Das Schicksal der beiden anderen Platten steht noch nicht fest, bleiben aber auch als „Übergangsspeicher“ vorhanden. Irgendwann soll mal ein RAID6 entstehen… 🙂

LG GH-22LS DVD-Brenner:
LG bietet nun schon seit Jahren die beste Qualität auf dem Markt. Auch dieses Gerät steht mal wieder ganz oben an der Spitze. Es ist super leise und ich habe bereits beim ersten DVD Auslesen Spitzenwerte von 22MB/s gemessen. Vielmehr geht da technisch auch nicht, es sei denn, man möchte die DVD testen, ob sie auch zum Mond fliegen darf. Stichwort: Zentrifugalkraft. 😉

Hauppauge HVR-1300:
Bietet den hybriden TV-Empfang, man kann also genauso über Kabel / Antenne das Fernsehprogramm genießen, wie auch über den integrierten DVB-T Tuner. Tolle Qualität!

Kartenlesegerät 52in1:
Was wäre ein Media Server ohne ein Kartenlesegerät? Für meine verschiedenen Kameras habe ich auch verschiedene Speicherkarten und verschiedene Anschlusskabel. Es gibt nichts simpleres als alles in einem Gerät zu vereinen. Welche Medien mampft das Gerät? Lest selbst:
Smart Media:
SM, SSFDC, SM Ram, XD
Compact Flash: CF I, CF II, Hitachi Microdrive, IBM Microdrive, Magicstor, HS-CF, Extreme CF, Extreme III CF, Ultra CF, Ultra II CF, Ultra-X CF
Secure Digital: SD, HS SD, Extreme SD, Extreme III SD, Ultra SD, Ultra II SD, Ultra II SD plus, SD Elite Pro, *Mini-SD, *Micro SD, T Flash, C-Flash
Multimedia: MMCI, MMCII, HS MMC, DV-RS-MMC, MMC Mobile, RS MMC, RS MMC Mobile, HS RS MMC
Memodery Stick: MS, MS Magic Gate, MS Pro, MS Pro(MG), Extreme MS Pro, Extreme III MS Pro, HS MS Pro, HS MS MG Pro, MS Select, MS Pro Ultra II, MS Duo, MS Duo(MG), MS Pro Duo, MS Pro Duo(MG), HS MS Pro Duo, HS MS MG Pro Duo, MS Pro Duo Ultra II, MS Rom

Sharkoon Rushpower M 500Watt:
Die Wahl des Netzteils war für mich besonders von Bedeutung. Das Sharkoon Rushpower M500 bietet einen extrem leisen Lüfter, der selbst unter Last nicht zu hören ist. Obendrein kommt es mit einem kompletten Kabelmanagementsystem. Das bedeutet, generell ist an dem Netzteil nur der 24Pin Anschluss für das Mainboard, sowie die 2x 12V Anschlüsse vorhanden. Alles was man zusätzlich braucht, kann man einzeln anschließen. So kommen bei mir lediglich die Stromkabel für die 4 Festplatten und DVD-RW zum Einsatz und 1x für die Lüftersteuerung. Mehr nicht. Den Kabelsalat kann man sich sparen und die Luftzirkulation durch das Gehäuse kann auch wirklich zirkulieren.
Obendrein bietet das Sharkoon Rushpower eine super Effizienz von 85% laut Hersteller. Und das merkt man. So hatte ich zuvor zum Test ein Netzteil von LC Power mit 400Watt angeschlossen, das mir für das System 104Watt im Schnitt aus der Steckdose gezogen hat. Nun habe ich das 500Watt Netzteil von Sharkoon angeschlossen und man glaubt es kaum: Bei gleicher Aktivität der vorhandenen Komponenten zieht das Netzteil maximal 78 Watt. Es ist also eine Ersparnis von sauberen 26 Watt, also rund 25% entstanden. Damit hat sich der Preis von 60,- € schon fast bezahlt gemacht.

4x Noiseblocker Multiframe MF8-S1 und Aerocool Touch-1000:
In dem Silverstone Grandia waren bereits 2 Lüfter von Silverstone integriert, die ihre Leistung auch brav verrichtet haben. Dennoch soll der Server so leise wie möglich werden. Und dafür kann man nur auf eine Wahl setzen: Noiseblocker Multiframe der S-Serie! In mehreren Tests waren sie so leise, dass sie von den Messgeräten nicht gemessen werden konnten. Und das kann ich absolut bestätigen. Man hört sie einfach nicht. Bei Volllast laufen sie auf 1200 U/Min, durch die Lüftersteuerung kann  sie allerdings auf 600 U/Min runter geregelt werden, wodurch die Lautstärke zur reinen Einbildung wird. Es kommen sowohl zwei Lüfter an dem Festplattenkäfig zum Einsatz, die die Luft aus der Front in den hinteren Bereich schaufeln und dabei hauptsächlich die Festplatten kühlen und auch noch entstandene Wärme der Grafikkarte mittransportieren. Zwei weitere Lüfter sitzen an der Rückseite des Gehäuses, um die warme Luft nach draußen zu leiten. In direkter Nähe des Prozessors kann die Hauptwärmequelle so gut gekühlt werden. Die komfortable Steuerung geschieht über die Aerocool Touch-1000 Lüftersteuerung. An ihr können 4 Lüfter angeschlossen werden, die zwischen 50% und 100% geregelt werden können und dessen Leistung auf einem schicken Farbdisplay wiedergegeben wird. Zusätzlich wird die Wärme über 4 separate Sensoren im gesamten Gehäuse ausgelesen. Wie der Name schon verrät, bietet die Steuerung ein Touch-Display, das in dieser Preisklasse einzigartig ist. So können die Lüfter leicht und intuitiv eingestellt werden. Schickt ist auch der schwarz-gebürstete Alu-Look, der zum Rest des Gehäuses passt.

Silverstone SST-GD01B-R Grandia:
Eine Klasse für sich. Anforderungen wie klein, schick und dennoch viel Platz besonders für Festplatten meistert das Grandia von Silverstone mit Leichtigkeit. Es kommt in einem schwarz-gebürstetem Alu-Look daher und integriert sich mit seinem edlen, schlichten Aussehen traumhaft in meine Media-Welt.
Das Gehäuse ist in einer 6,7 Zoll-Höhe, in der heute viele Receiver und ähnliches gefertigt werden. Auf den 4 gummibeschichteten Füßen bietet es sicheren Halt. Geöffnet wird es von der Rückseite aus, wo der Deckel mit 4 Schrauben fixiert werden kann. Einmal geöffnet bieten sich neue Welten an:

Das Silverstone Grandia. Die HDD-Käfige sind ausgebaut.

Das Silverstone Grandia. Die HDD-Käfige sind ausgebaut.

Das Herzstück des Gehäuses ist der Festplattenkäfig. Er bietet Platz für 7(!) 3,5 Zoll Festplatten, und erlaubt obendrein noch die Kühlung durch 2 80mm Lüfter oder 2 92mm Lüftern. Der Käfig ist mit einer Schaumstoffart ausgelegt, sodass Vibrationen sanft abgefangen werden. Die Herausnahme des Käfigs erleichtert den Einbau von Geräten ungemein.

Festplattenkäfig

Der Festplattenkäfig lässt sich ausbauen und mit 2 Lüftern versehen.

Festplattenkäfig

Insgesamt passen 7(!) Festplatten in den Käfig des Grandias.

Ebenso verhält es sich mit dem Käfig für die 5 1/4 Zoll Geräte. Auch er lässt sich leicht herausnehmen. In ihm findet der DVD-Brenner sowie die Lüftersteuerung Platz.

Laufwerkskäfig

Laufwerkskäfig mit DVD-Brenner und Lüftersteuerung

Der Ein- und Ausbau der Käfige gestaltet sich einfach, denn sich werden in eine Schiene eingeschoben und mit einigen Schrauben fixiert.

Käfige

Die Käfige im Grandia

Lüfter

Hier zu sehen die Original-Lüfter an der Rückseite des Gehäuses, die durch Noiseblocker ersetzt wurden.

Silverstone Grandia

Noch ein wenig unaufgeräumt finden aber alle Komponenten Platz im Silverstone Grandia.

Silverstone Grandia von vorne

Schick kommt es daher im gebürsteten Alu-Look...

Receiver

...und integriert sich wunderbar in die vorhandene Unterhaltungselektronik.

Grandia front

Das DVD Laufwerk versteckt sich geschickt hinter einer Klappe...

Grandia Front

... genauso wie das Kartenlesegerät und die Front-Anschlüsse.

MS-Tech LT-390 Wireless:
Zu einem vernünftigen Media-Server gehört natürlich auch eine Fernbedienung. Damit man aber auch im Internet ein bissel Server kann kommt hier eine Funktastatur von MS-Tech zum Einsatz, die mit ihren superkompakten Maßen mal schnell in der Couchritze deponiert werden kann. 😉 Die Bluetooth Maus von Logitech erledigt die übrigen Dienste.

Schick, oder?

Ein paar mehr Daten zu Geräusch- und Wärmeentwicklung sowie Verbrauch und Optimierung der Komponenten folgt demnächst in einem weiteren Bericht. Bis dahin viel Spaß mit dem neuen Media-Server.

Flüsterleise Spiele-Grafikkarte

Es ist verzwickt. In vielen Fällen muss man sich zwischen Leistung und einem angenehmen, ruhigen Arbeiten entscheiden. Die richtig guten Grafikkarten gibt es meistens nur mit riesigen Kühl- und Lüfteranlagen, sodass die Lüftergeräusche beim „normalen“ Arbeiten recht unangenehm werden können. Da die Hybridtechnologie auch noch nicht auf ihrem Leistungshoch ist, muss man sich vorerst selbst helfen.
In diesem Artikel baue ich eine ATI Radeon 4850 um, die ich schon seit längerer Zeit besitze. Dennoch bringt sie noch jede Menge Performance und bietet heutzutage ein super Preis-Leistungs-Verhältnis.
Nun aber zum praktischen Teil:

01_active_cooler

Der Originalkühler der ATI Radeon 4850

Der alte Kühler inklusive Lüfter ist schnell abmontiert. Auf der Rückseite, also dort wo nicht der Lüfter sitzt, befinden sich 12 Schrauben. Es müssen alle 12 gelöst werden, damit sich der Kühler abnehmen lässt.

Als Ersatzkühler kommt nun der Accelero S1 Rev.2 der Firma Arctic Cooling zum Einsatz.
Da ich diesen Kühler auch schon seit einiger Zeit bei mir hatte, die Packung jedoch geöffnet war, sind sowohl Wärmeleitpaste und Kleber für die Speicherkühlung leicht ausgetrocknet. Aber kein Problem, so kann ich hier auch gleich zeigen, wie man diese beiden Probleme spielend in den Griff bekommt.

Zunächst muss der alte Klebstoff, eine Art doppelseitiges Klebeband, von den Kühlern für den Arbeitsspeicher entfernt werden. Kleine „Fingerspitzenarbeit“. 😉

Kühlkörper für den Arbeitsspeicher

Ebenso werden die Reste der Wärmeleitpaste vom Prozessor mit einem weichen, kratzfreiem Tuch entfernt. Die Paste sollte sich ohne große Mühen entfernen lassen. Passt dabei auf, dass ihr keine Kratzer auf dem Prozessor oder dem Board selber macht.

Grafikprozessor der ATI Radeon 4850

Nun geht es an den Arbeitsspeicher, der auch gekühlt werden möchte. Auch hier muss drauf geachtet werden, dass er frei von Restkleber, staub und fett ist, sonst haften die neuen Kühler nicht. Sollte der Speicher nicht mit einem normalen Tuch gereinigt werden können, kann man den Speicher entweder mit Hilfe eines Föhnes leicht erwärmen (Erwärmen! Nicht erhitzen!!!), oder man greift auf spezielle Reinigungsmittel aus dem Fachhandel zurück. Ich habe alles ohne Hilfsmittel sauber bekommen.

Um die Kühler zu befestigen, empfehle ich einen Methylmethacrylatklebstoff, der aus zwei Teilen besteht. Zum einen ist es der Methacrylsäuremethylester, einem C5H8O2-Verbund, der durch Zugabe des zweiten Teils, einem Peroxid, also H2O2 in eine radikale Kettenreaktion versetzt wird und so polymerisiert, also die Moleküle miteinander verbindet und somit aushärtet. Einen solchen Kleber gibt es z.B. von Zalman (Adhesive A + Adhesive B, ca. 5,- €).
Der Vorgang des Aushärtens dauert bei Zimmertemperatur (20°C) ca. 15 Minuten. Anschließend hält der Klebstoff auch bei starker Erhitzung.

Methylmethacrylatklebstoff

Die zwei Klebstoffkomponenten werden auf den Arbeitsspeicher aufgebracht und die Kühler unverzüglich leicht aufgedrückt.

07_memory_glued

Der Klebstoff wird auf dem Arbeitsspeicher aufgebracht

In der Zwischenzeit kann sich um die Kontaktfläche der Heatpipes gekümmert werden. Auch diese müssen wie immer rückstandslos gereinigt werden. Anschließend kann hier hauchdünn eine Wärmeleitpaste aufgebracht werden, die die Verbindung zwischen Prozessor und Kühler herstellt. Es sollte darauf geachtet werden, dass der Silikonanteil relativ gering ist, da die Wärmeleitfähigkeit hierduch erheblich beeinträchtigt wird. Es sollte mehr darauf geachtet werden, dass Stoffe wie Kupfer oder Silber enthalten sind, da sie eine wesentlich höhere Wärmeleitfähigkeit besitzen.

Wärmeleitpaste

Aufbringung der Wärmeleitpaste

Nun ist der Kühler soweit vorbereitet. Ist der Kleber auf dem Arbeitsspeicher auch ausgehärtet, kann der neue Kühler mit Hilfe der vier Schrauben rund um den Prozessor festgeschraubt werden. Um den massiven Kühlkörper zusätzlich zu stabilisieren, werden zwei Plastikträger mitgeliefert, die den Abstand zwischen Kühler und Grafikkarte halten. Nun nur noch die Grafikkarte einbauen und den ruhigen Spielspaß genießen.

Accelero S1 Rev.2

ATI Radeon 4850 mit Accelero S1 Rev.2 Passiv-Kühler

Instrumente für DIE Akustikband

Bereits zu Beginn des Jahres ist diese wunderschöne Tambourine in meinem Hause angekommen:

Es handelt sich um eine MILLENIUM HT200BK mit 16 Paar Schellen, die doppelreihig angeordnet sind.

Obendrein gab es noch dieses 3-er Set Shaker der Marke „Studio 49“, die jeweils eine andere Klangfarbe haben.

Nun kann das akustische Musizieren weitergehen! 🙂

Windows Sharepoint Server umbenennen

Diese Aufgabe ist mit ein paar gekonnten Clicks und Befehlszeilen relativ simple und schnell durchzuführen…

In der Sharepoint-Zentraladministration -> Vorgänge -> Alternative Zugriffszuordnungen müssen alle Namenseinträge geändert werden.

Anschließend cmd öffnen und folgendes eintippen:
cd C:\Programme\Gemeinsame Dateien\Microsoft Shared\web server extensions\12\BIN
stsadm -o renameserver -newservername <neuerservername> -oldservername <alterservername>

Nun den Namen des Server umbenennen unter:
Arbeitsplatz -> rechtsklick -> Eigenschaften -> Computername -> ändern

Server neustarten!

Nach dem Neustart folgendes in cmd eingeben:
cd C:\Programme\Gemeinsame Dateien\Microsoft Shared\web server extensions\12\BIN
stsadm -o updatefarmcredentials -userlogin <domainuser> -password <passwort>

Zum Schluss noch:
iisreset /noforce

und voilà, der Server hat einen neuen Namen!

Windows 7

Windows 7 Features

In der neusten Version von Windows gibt es so einige Neuerungen, die nicht unbedingt auf den ersten Blick erkennbar sind.
Hier habe ich einige rausgesucht und vermerkt:

1. Geöffnete Fenster lassen sich nicht nur mit der Maus an einem Seitenrand andocken, sondern sie reagieren auch auf Hotkeys. Benutzt man die Windows-Taste in Verbindung mit den Pfeiltasten, so docken die Fenster an der Seite an, zu der die Pfeiltaste zeigt. “Pfeil-Oben” maximiert das Fenster, “Pfeil-Unten” verkleinert, bzw. minimiert es.

2. “Aero-Shake” heißt das Zauberwort! Hält man ein Fenster mit der Maus fest und schüttelt es hin und her, so minimieren sich alle anderen geöffneten Fenster.

3. Möchte man wirklich alle Fenster auf ein Mal minimieren, so versteckt sich in der Taskleiste ein kleiner durchsichtiger Balken, auf den man klicken kann.

4. In die Taskleiste kommt man auch per Tastatur! Mit der Windows-Taste + T gelangt man dort hin, navigiert wird mit den Pfeiltasten.

5. Eingabeaufforderung mit Ortspositionierung: Hält man die Shift-Taste gedrückt, während man mit der rechten Maustaste auf einen Ordner klickt, so erscheint der Eintrag “Eingabeaufforderung hier öffnen”. Diese Funktion öffnet den CMD mit der aktuellen Verzeichnisposition.

6. Praktisches Support Tool: PSR.exe (in der Systemsteuerung) zeichnet komplette Abläufe auf dem Desktop auf, macht Screenshots und dokumentiert sie. Anschließend werden sie in ein .zip-file verpackt.

7. Unter “Ansicht” findet man beim (Taschen-) Rechner eine Version für Programmierer!

Open door volume control (ODVC)

DOWNLOAD: Open Door Volume Control

Open Door Volume Control (ODVC)
Für den Club Heartbeat soll ein kleines Tool mit einer simplen Hardwarelösung gefunden werden, um die Lautstärke der Musik automatisch nach unten zu regeln, sobald eine der beiden Türen geöffnet wird, um so den Lautstärkepegel außerhalb zu minimieren.

Die Hardwareumsetzung erfolgt mittels eines Arduino Duemilanove und zwei Reedkontakten. Das Board wird per USB an den Rechner angeschlossen und so auch mit Strom versorgt.

Hier der Code für das Arduino Board:

—–begin—–
int ledPin = 13; // LED connected to digital pin 13
int button1Pin = 8; // Button1 connected to digital pin 8
int button2Pin = 7; // Button2 connected to digital pin 7
boolean doorOpen = false; // door status flag

// The setup() method runs once, when the sketch starts

void setup() {
// initialize the serial interface
Serial.begin(9600);
// initialize the digital LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the digital Button1 pin as an input
pinMode(button1Pin,INPUT);
// enable the internal pullup resistor
digitalWrite(button1Pin,HIGH);
// same procedure for Button2 pin
pinMode(button2Pin,INPUT);
digitalWrite(button2Pin,HIGH);
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()
{
// check if input on one of both pins is low (means door is open) and door status flag is set to false (door was opened while this cycle of the loop)
if (((digitalRead(button2Pin) == LOW) | (digitalRead(button1Pin) == LOW))& (doorOpen == false)) {
digitalWrite(ledPin, HIGH); // lighten the control LED
Serial.print(“1″); // send status 1 over serial interface (door open)
doorOpen = true; // set door status flag to true (avoids “spam” in the communication over the serial interface )
}

// check if input on both pins is high (means doors are closed) and door status flag is set to true (door was closed while this cycle of the loop)
if ((digitalRead(button2Pin) == HIGH) & (digitalRead(button1Pin) == HIGH) & (doorOpen == true)) {
digitalWrite(ledPin, LOW); // switch off the control LED
Serial.print(“0″); // send status 0 over serial interface (doors closed)
doorOpen = false; // set door status flag to false
}
}
—–end—–

Hier der Code für das eigentliche Open Door Volume Control Tool (C#):


namespace VolumeTool
{
    partial class Form1
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Windows Form-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.trackWave = new System.Windows.Forms.TrackBar();
            this.button1 = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            ((System.ComponentModel.ISupportInitialize)(this.trackWave)).BeginInit();
            this.SuspendLayout();
            // 
            // trackWave
            // 
            this.trackWave.Location = new System.Drawing.Point(12, 12);
            this.trackWave.Name = "trackWave";
            this.trackWave.Size = new System.Drawing.Size(268, 42);
            this.trackWave.TabIndex = 0;
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(205, 60);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 1;
            this.button1.Text = "Test";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Visible = false;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label1.ForeColor = System.Drawing.Color.Yellow;
            this.label1.Location = new System.Drawing.Point(12, 65);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(130, 13);
            this.label1.TabIndex = 2;
            this.label1.Text = "Volume Control: False";
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(12, 89);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
            this.textBox1.Size = new System.Drawing.Size(265, 159);
            this.textBox1.TabIndex = 3;
            this.textBox1.Visible = false;
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(20, 255);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(35, 13);
            this.label2.TabIndex = 4;
            this.label2.Text = "label2";
            this.label2.Visible = false;
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(19, 45);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(13, 13);
            this.label3.TabIndex = 5;
            this.label3.Text = "0";
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(254, 45);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(25, 13);
            this.label4.TabIndex = 6;
            this.label4.Text = "100";
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 88);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.trackWave);
            this.MaximumSize = new System.Drawing.Size(300, 115);
            this.MinimumSize = new System.Drawing.Size(300, 115);
            this.Name = "Form1";
            this.Text = "ODVC (Open Door Volume Control)";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.trackWave)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TrackBar trackWave;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.Label label4;
    }
}


An dieser Stelle bedanke ich mich nochmal kräftig bei Florian Weinert für seine Hilfe und Einsatzbereitschaft.

Willkommen

Ein Blog [blɔg] oder auch Weblog [ˈwɛb.lɔg], engl. [ˈwɛblɒg], Wortkreuzung aus engl. World Wide Web und Log für Logbuch, ist ein auf einer Website geführtes und damit – meist öffentlich – einsehbares Tagebuch oder Journal. Häufig ist ein Blog „endlos“, d. h. eine lange, abwärts chronologisch sortierte Liste von Einträgen, die in bestimmten Abständen umgebrochen wird.
Der Herausgeber oder Blogger steht, anders als etwa bei Netzzeitungen, als wesentlicher Autor über dem Inhalt, und häufig sind die Beiträge in der Ich-Perspektive geschrieben. Das Blog bildet ein für Autor und Leser einfach zu handhabendes Medium zur Darstellung von Aspekten des eigenen Lebens und von Meinungen zu spezifischen Themen. Meist sind aber auch Kommentare oder Diskussionen der Leser zu einem Artikel zulässig. Damit kann das Medium sowohl dem Ablegen von Notizen in einem Zettelkasten, dem Austausch von Informationen, Gedanken und Erfahrungen als auch der Kommunikation dienen. Insofern ähnelt es einem Internetforum, je nach Inhalt aber auch einer Internet-Zeitung.
(http://de.wikipedia.org/wiki/Blog)

Nach oben