Este projeto, implementa uma camada, que permite ler as informações da BIOS do computador.
Com ela é possível acessar informações, como memória, temperatura, e tantas outras informações.
Um exemplo de uso, esta no projeto relógio, a função GetMemorySize lê a quantidade de memória disponível no seu PC.
function GetMemorySize : DWORD;
Var
SMBios : TSMBios;
LPhysicalMemArr : TPhysicalMemoryArrayInformation;
begin
SMBios:=TSMBios.Create;
try
if SMBios.HasPhysicalMemoryArrayInfo then
for LPhysicalMemArr in SMBios.PhysicalMemoryArrayInfo do
begin
if LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.MaximumCapacity<>$80000000 then
begin
result := LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.MaximumCapacity div 1024;
break;
end
else
begin
result :=LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.ExtendedMaximumCapacity div 1024;
break;
end;
end
else
result := 0;
finally
SMBios.Free;
end;
end;
Existem diversos exemplos de código nesta maravilhosa biblioteca, e vale a pena rever e estudar este código.
O Projeto do Relógio contem vários módulos, mas vc pode baixar os códigos do HMI, dentro da pasta Nextion
Exemplo de Código em Lazarus
Montei um pequeno exemplo em Lazarus que interage com o projeto do displaypc.HMI
Neste tópico vou falar um pouco sobre o programa que montei para testar.
O projeto esta dentro da pasta teste do git.
relogio\teste\lazarus
E pode ser chamado pelo Lazarus 2.0, conforme figura abaixo:
Neste pequeno exemplo faço a integração com lazarus do display Nextion, apresentando como o protocolo do mesmo funciona.
No fragmento abaixo, chamo a page com indice 1.
LazSerial1.WriteData(‘page 1’+#255+#255+#255);
Podemos perceber, que ao final, sempre será necessário incluir o FF FF FF, pois é padrão do protocolo.
Neste pequeno exemplo, fazemos a barra de progresso, sair de 0 ate 100%
procedure TForm1.Button5Click(Sender: TObject); var a : integer; begin for a:= 0 to 100 do begin LazSerial1.WriteData(‘val02.val=’+inttostr(a)+#255+#255+#255); LazSerial1.WriteData(‘prog02.val=’+inttostr(a)+#255+#255+#255); sleep(100); end; end;
Abaixo, vemos a tela, de status, onde aparece os componentes prog02 e val02.
Em breve falarei mais sobre o casemod, apresentando o exemplo do fonte.