Kann man die Festplatten LED abfragen...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ghosty1967
Beiträge: 205
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Kann man die Festplatten LED abfragen...

Beitrag 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:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Kann man die Festplatten LED abfragen...

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Ghosty1967
Beiträge: 205
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Beitrag 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:
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Beitrag von dietmar »

Naja wenn die LED brennt sollte ein einfacher Rauchmelder genügen. :wink:
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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
Zuletzt geändert von AND51 am 03.04.2007 12:25, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten