Seite 1 von 2

Kann man die Festplatten LED abfragen...

Verfasst: 02.04.2007 22:22
von Ghosty1967
Hallo Leutz...

Ich habe mal die Suchfunktion bemüht, aber nichts zu diesem Thema gefunden.
Hat jemand von euch ein Codebeispiel, mit dem ich den Status einer Festplatten LED abfragen kann.
Der Hintergrund ist, das ich bei einem Messrechner wissen muß, ob die Platten gerade
aktiv oder inaktiv sind, dieser Rechner aber in einem anderen Raum steht.
Ich möchte gerne einen kleinen Monitor proggen, der mir dies anzeigen kann.
Es gibt zwar von O&O einen solchen Monitor, allerdings könnte ich div.
Ereignisse auslösen, wenn ich da was selber proggen würde.

Wäre dankbar für Anregungen. :mrgreen:

Re: Kann man die Festplatten LED abfragen...

Verfasst: 02.04.2007 22:29
von ts-soft
Ghosty1967 hat geschrieben: Wäre dankbar für Anregungen. :mrgreen:
Das einfachste wäre wohl eine Photozelle und diese über die Serielle- oder
Paralele-Schnittstelle auswerten. Ansonsten kann man wohl per System-
Monitor feststellen ob die Festplatte aktiv ist, aber nicht ob die LED brennt :mrgreen:

Verfasst: 02.04.2007 22:39
von Ghosty1967
*g* an die "Hardware-Lösung" habe ich auch schonmal gedacht... aber
iss irgendwie nen bischen unelegant und wenig herausfordernt :mrgreen:

Wenn man sich mal "O&O DriveLED" anschaut, ist das eigentlich die total
geniale Lösung für mich. Mich interessiert aber einfach brennend, wie man
sowas (und ob man sowas) in PB realisieren kann.

Schließlich wird die LED der HDD doch auch über einen Port geschaltet...
oder etwa nich. Wenn man also den Port kennen würde, könnte man doch
theoretisch per "Peek/Poke" oder "InpOut" auch die Werte dieses Ports
auslesen... oder bin ich da auf nem total falschen Dampfer ? :shock:

Verfasst: 03.04.2007 11:04
von dietmar
Naja wenn die LED brennt sollte ein einfacher Rauchmelder genügen. :wink:

Verfasst: 03.04.2007 11:11
von Kiffi
die hier vorgestellten Vorschläge sind witzig :lol: aber ich würde auch an
einer Lösung interessiert sein. Heutzutage sind die Festplatten ja so leise,
dass man ab und an unter den Tisch gucken muss, damit man kontrollieren
kann, ob der Rechner noch irgendwas tut.

Meines Erachtens ist die Abfrage der LED der falsche Ansatz. Irgendwie
müsste man sich in den Datenstrom der HD hängen können. Dann könnte
man auch unterscheiden, ob gelesen oder geschrieben wird.

Grüße ... Kiffi

Verfasst: 03.04.2007 11:26
von AND51
> ob gelesen oder geschrieben wird.
Ich hatte doch mal danach gerfragt, wie AntiViren-Guards wissen, welche Datei gerade gelesen oder geschrieben wird, und wollte mir das in PB anzeigen lassen.
Warum nicht den Code nehmen und davon ausgehen, dass die Festplatte benutzt wird, wenn eine Dateiaktivität aufgespürt wurde?

Verfasst: 03.04.2007 11:33
von Kiffi
AND51 hat geschrieben:Warum nicht den Code nehmen
hast Du mal einen Link?
AND51 hat geschrieben:und davon ausgehen, dass die Festplatte benutzt wird, wenn eine Dateiaktivität aufgespürt wurde?
mh, ich kenne den Code jetzt nicht, aber ich vermute stark, dass dieser beim
(Be-)Schreiben einer Datei lediglich ein einzelnes Event feuert und die
'Desktop-LED' nur ein mal zum kurzen Aufleuchten brächte, während der von
mir gesuchte Code die 'Desktop-LED' solange zum Leuchten bringen würde,
wie der Schreibvorgang tatsächlich dauert.

Grüße ... Kiffi

Verfasst: 03.04.2007 11:36
von Kaeru Gaman
darf ich mal mitraten?

das gerät "IDE Drive No. X" ist doch ein Windows-Objekt wie alle anderen auch...

gibt es keine GlobalMessages, die start und stop verkünden?

Verfasst: 03.04.2007 12:23
von AND51
> hast Du mal einen Link?
Müsste ich jetzt auch suchen. Aber warum suchen? Hab den Code gleich mitgeliefert!

> ich kenne den Code jetzt nicht
Kannte ich auch nicht, bis ich ihn geschrieben habe!


Hier mal ein Code. Habe ihn kurz mit der echten DriveLED verglichen, scheint zu funktionieren. Lasst bitte einen Virenscanner nebenbei laufen oder etwas, das Festplattenaktivität hervorruft, dait man den Effekt auch sehen kann!
Egal, ob dieser Code was taugt, er ist nebenbei auch ein schönes Beispiel für die Verwendung von Mutex.

Code: Alles auswählen

; Drive LED by AND51
EnableExplicit

Global mColor=CreateMutex(), laufwerk$="C:\" ; Define your Laufwerk here!

OpenWindow(0, 0, 0, 300, 150, "Drive LED by AND51", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
	ContainerGadget(0, 140, 20, 20, 20, #PB_Container_Raised)
	CloseGadgetList()
	TextGadget(#PB_Any, 120, 50, 100, 20, "Your Drive LED")
	CheckBoxGadget(1, 105, 100, 120, 20, "Enable acustic signal")

Procedure giveLEDstatus(temp)
	Protected hNotification
	hNotification=FindFirstChangeNotification_(@laufwerk$, 1, #FILE_NOTIFY_CHANGE_ATTRIBUTES|#FILE_NOTIFY_CHANGE_DIR_NAME|#FILE_NOTIFY_CHANGE_FILE_NAME|#FILE_NOTIFY_CHANGE_LAST_WRITE|#FILE_NOTIFY_CHANGE_SECURITY|#FILE_NOTIFY_CHANGE_SIZE)
	
	Repeat
		FindNextChangeNotification_(hNotification)
		
		LockMutex(mColor)
			While WaitForSingleObject_(hNotification, 1) = 0
				FindNextChangeNotification_(hNotification)
				SetGadgetColor(0, #PB_Gadget_BackColor, #Red)
				If GetGadgetState(1)
					Beep_(1500, 10)
				EndIf
			Wend
		UnlockMutex(mColor)
		
		Delay(10)
	ForEver
EndProcedure

CreateThread(@giveLEDstatus(), 0)

Repeat
	If TryLockMutex(mColor)
		SetGadgetColor(0, #PB_Gadget_BackColor, #White)
		UnlockMutex(mColor)
	EndIf
Until (GetAsyncKeyState_(#VK_ESCAPE) And GetForegroundWindow_() = WindowID(0)) Or WaitWindowEvent(1) = #PB_Event_CloseWindow
Edit: Sogar an das akustische Signal für Kiffi habe ich gedacht :D

Verfasst: 03.04.2007 12:24
von ts-soft
Das LED ist ja mit einem Kabel am Mainboard angesteckt (diese
Fusselsteckerchen :mrgreen: die ich so hasse), da kann man abzwacken ob
Strom oder kein Strom (PC liebt sowas :mrgreen: ) erspart die Fotozelle.