Temperatura, Prędkość wiatraków i Napięcia

0

Krótko,

Jak to zrobić, żeby odczytać te wartości z płyty głównej z poziomu Delphi ??

//Proszę odpowiadać na temat lub w ogóle - wszelkie pogawędki będą kasowane - m.M

0

ZlPortio (komponent do odczytu BIOSu pod winda)
musisz tylko miec mape zeby odczytac dobre wartosci)
w jakims archiwalnym CHIPie byl o tym artykul

0

Od razu uprzedzam: Nawet nie próbowałem tego robić bo mój komp nie ma termometru.
Ale wiem jak to wygląda i że można to odcztać w BIOS... Więc chyba jest gdzies w pamięci. Poszukaj może znajdziesz gdzieś informację gdzie, a wtedy możesz np. posłużyć się czymś takim:

[code]int a=0xFE061;//W tym wypadku jest to chyba nr. seryjny plyty glownej.
char M[255];
strcpy(M, (char*)a);
Label1->Caption = M;[/code]

i zmienić zmienną "a" na dany adres w pamięci

0

Sam chcialbym napisac taki program, co to sa te mapy? :-/

0

Poza tym ten kod (od krecika) nie zadziała pod żadną nt-podobną windą... tam nie da się tak po prostu odczytać zawartości jakiejś komórki pamięci. Niestety nie dokopałem się jak to zrobić pod tymi systemami i w C++B, nie używająć magicznych wstawek w asm-ie... jak ktoś wie to proszę o dopisek ...

0

W ASMie też się najpewniej nie uda...

Ale pozostaje WinApi (MOŻE) i sterowniki...

0

Zauważyłem że jest możliwość odczytu pod windą np xp bo na takiej sprawdzałem, ale z poziomu programu napisanego pod dosa i uruchamianego z konsoli... może bys ię dało jakoś oszukać windę że prog napisany w BCB jest dosowy... jak kogoś interesuje to dam kod przepisany z książki Taylora...

0

Witam,

Pomęczyłem troszke ludzi z Solteka, bo tej firmy mam płyte, i przysłali mi opis techniczny mojej płyty :-). 2 MB textu w PFD. Pogubiłem się przeglądając to, ale zauważyłem że sa podane jakieś adresy, offsety itd.

Nie udało się wyciągnąc od nich kodów ich firmowego programu :-( niestety. Teraz tylko zrozumieś tego "manuala" i program napisać :-D

Jak ktoś chce moge podasłać tego PDF'a.

0

--- odczyt szybkości procesora ---

function TForm1.GetCpuSpeed: Extended;
var
  t: DWORD;
  mhi, mlo, nhi, nlo: DWORD;
  t0, t1, chi, clo, shr32: Comp;
begin
  shr32 := 65536;
  shr32 := shr32 * 65536;
  t := GetTickCount;
  while t = GetTickCount do begin end;

asm

    DB 0FH
    DB 031H
    mov mhi,edx
    mov mlo,eax
end;

  while GetTickCount < (t + 1000) do begin end;

  asm

    DB 0FH
    DB 031H
    mov nhi,edx
    mov nlo,eax

  end;
  chi := mhi; if mhi < 0 then  chi := chi + shr32;
  clo := mlo; if mlo < 0 then  clo := clo + shr32;
  t0 := chi * shr32 + clo;
  chi := nhi; if nhi < 0 then  chi := chi + shr32;
  clo := nlo; if nlo < 0 then  clo := clo + shr32;
  t1 := chi * shr32 + clo;
  Result := (t1 - t0) / 1E6;
end;

procedure Button1.onClick;
begin
 label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz';
end;

jeżeli chodzi o temperature to pozostawiam tylko jedną metodę:

  • instalujemy Hardware Sensor Monitor (hmonitor)
  • ustalamy w konfiguracji że log ma byc co jakiś czas np. 15 sek. i zaznaczyc pole "EventLog.csv"
  • plik "EventLog.csv" zpaisywać w stałej lokalizacji, np. "c:\hmonitor\log\EventLog.csv"
  • dodaj na formę Memo1, Button1, i Captrion1
  • (plik csv, to dane oddzielone od siebie znakiem średnika ; ) wpisać w Delphi funkcję (button1.onclick)
procedure TForm1.Button1Click(Sender: TObject);
var
   List: TStringList;
   begin
   List := TStringList.Create;
   try
   memo1.Lines.LoadFromFile('c:\hmonitor\log\EventLog.csv');{lokalizacja, np.: c:\hmonitor\log\EventLog.csv }
   text := memo1.Lines.Text;
   Extract(';', text, List);
      Label1.Caption := List[2] + '*C oraz ' + List[3] + '*C';
   finally
      List.Free;
   end;
end;

powinno działać

ShowMessage('Niech Delphi będzie z Tobą');

1 użytkowników online, w tym zalogowanych: 0, gości: 1