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.
O fpcupdeluxe é o instalador do lazarus já com atualização de pacotes automáticos e plataformas.
Qual a diferença de instalar o lazarus e o fpcupdeluxe?
No lazarus, voce instala apenas os compiladores para a plataforma alvo, ou seja, para o sistema que esta instalando. Isso quer dizer, que se instalar no windows 10, terá apenas os compiladores do windows 10.
Já o fpcupdeluxe, voce alem de instalar o lazarus do windows 10, no caso do nosso exemplo acima, tambem, já pode preparar binarios em linux i386, alem de arm, mac os, android entre outras plataformas que o lazarus permite compilar.
Existe um ótimo tutorial, para quem deseja instalar no linux i386, segue o link:
Neste exemplo, iremos mostrar uma janela simples, conforme apresentado abaixo:
Primeiramente precisamos apontar para o target correto, para isso, iremos em Project, selecionando a opção Project Options.
Selecione a opção Compiler Options, da arvore de opções do lado esquerdo.
Selecione a opção Config and Target, selecione agora a opção Target OS, indicando Linux.
Selecione o Target CPU family X86_64, conforme figura acima.
Para ter certeza que o processo de instalação esta correto, iremos clicar no botão Test, conforme figura acima.
Poderão surgir alguns avisos, dizendo que os fontes estão duplicados, dê ignore.
Click no botão OK.
Pronto! Podemos gerar o binário.
Agora iremos gerar o binário, simplesmente Clicando na opção de menu RUN, no sub item Build.
Estamos quase acabando, pois já geramos nosso binário. Agora devemos leva-lo para o linux e testar.
O nosso projeto foi originalmente gravado em
C:\fpcupdeluxe\fpcupdeluxe\projects\projetos\hello world
Podemos ver, que existem 2 arquivos hello, o primeiro com data de hoje, e o segundo com data de ontem. O primeiro já é o nosso aplicativo linux, e deve ser copiado para uma pasta no linux.
Conforme figura acima, podemos ver que copiamos o arquivo para a pasta do download.
O próximo passo é dar permissão de execução no arquivo.
Para tanto, iremos na pasta e em seguida dar o comando:
chmod +777 ./hello
Pronto, agora basta chamar nosso aplicativo.
Ao clicar no nosso botão, teremos o seguinte resultado:
Observando, que agora temos 3 opções de binário.
Gerando binário para o MAC OS
Agora iremos para nossa terceira etapa, gerando para o MAC.
Irei gerar o binário para este mac, um modelo 2009, já velinho.
Que venho apresentando em diversos posts.
Primeiramente precisamos saber a versão do processador.
No nosso exemplo usamos um processador INTEL Core 2 Duo, o que iremos parametrizar.
Agora iremos novamente entrar no nosso fpcupdeluxe-x86_64-win64.exe, localizado na pasta C:\fpcupdeluxe
Entraremos na aba CROSS, e em seguida selecionamos CPU i386.
Agora marcamos no OS, o sistema darwin, que é o MACOS.
Click em INSTALL COMPILER, e mostrará a aba abaixo, informando que para rodar o free pascal, necessita de versão superior ao 3.2, dê Yes.
Pronto, agora é só aguardar…
Para testar e fazermos testes, usaremos o RealVNC, pois facilita em muito.
Para tanto, configure em seu mac uma versão do RealVNC, e conecte com o view no seu PC, conforme demonstrado abaixo:
Crie uma pasta no MAC, para levar o binario.
Abra a pasta e já deixe pronto para a próxima etapa.
Pronto! A maquina cross esta pronta!
Agora iremos compilar no MAC
Para tanto, iremos abrir o Lazarus, que fica localizado em C:\fpcupdeluxe\fpcupdeluxe\lazarus.
Para rodar o Lazarus, execute o startlazarus, conforme figura acima.
Para gerar, entre no menu na opção Project, no sub item Project Options.
Agora, selecione a arvore de opções Compiler Options, e em seguida o sub item Config and Target, conforme figura acima.
Selecione no Target OS, o item Darwin, e para o Target CPU i386, conforme figura acima.
Selecione o Botão Test, conforme figura acima.
Por fim, click no botão OK.
Agora, iremos compilar nossa aplicação, para tanto click em RUN, selecionando a opção BUILD.
Agora se olharmos a pasta do projeto, eu instalei em C:\fpcupdeluxe\fpcupdeluxe\projects\projetos\hello world
Podemos ver que foi criado um arquivo hello e tambem uma pasta hello.app.
Devemos copiar ambos.
Pronto! Segue o executável, funcionando!
Gerando binário para o Android
Agora iremos criar um procedimento para criar aplicações android.
Para testar iremos utilizar um CubieTruck com SO Android 4.
O CubieTruck permite ser usado tanto como maquina linux, como máquina Android.
Para me auxiliar, instalei o aplicativo que cria um servidor ssh.
Pronto, agora tenho comandos e ftp para lançar minha aplicação.
A ilustração acima, demonstra que posso disponibilizar arquivos para o celular.
Na ilustração acima, o console terminal, permite rodar comandos.
Podemos ver também, que a atualização do cpu ARM, com SO android foi finalizada.
Agora irei compilar meu projeto.
Agora, clicando em Test, gerando
Instalação de Pacotes Adicionais
O FPCUPdeluxe permite tambem a instalação de pacotes adicionais, tal como Zeoslib.
Apresentaremos o procedimento de instalação de um pacote.
Para tanto, click na aba Modules, selecione a aba que deseja instalar e click no botão Install module.
Irei mostrar como configurar o touch screen eGalax no Linux Raspian.
Procedimento de configuração Linux
Instalação dos driver do linux
sudo apt-get install xserver-xorg-input-evdev
Vá na pasta /usr/share/X11/xorg.conf.d/ edite o arquivo 40-libinput.conf
Conforme pode ver a seguir
Match on all types of devices but tablet devices and joysticks Section "InputClass" Identifier "evdev pointer catchall" #Identifier "libinput pointer catchall" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" #Driver "libinput" Driver "evdev" EndSection
Perceba que os # são comentários.
Agora vá na pasta /usr/share/X11/xorg.conf.d, editando o arquivo 99-calibration.conf
Lembre-se os valores do Calibration voce pode obter através do aplicativo xinput_calibrator.
Ele mostrara algo como descrito abaixo:
Calibrating EVDEV driver for "eGalax Inc. USB TouchController" id=6
current calibration values (from XInput): min_x=1990, max_x=101 and min_y=1846, max_y=102
--> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' Section "InputClass" Identifier "calibration" MatchProduct "eGalax Inc. USB TouchController" Option "Calibration" "1965 98 1848 59" EndSection
Dê reboot na aplicação e verá que sua tela esta configurada com sucesso
Somos seres que transforma a adversidade em conquistas.
Eu me lembro bem, que a 5 anos atras, estava enfrentando uma das piores fases de minha vida.
Apenas superada quando minhas filhas foram embora.
Perdi o emprego, um relacionamento de 6 anos, até a auto estima havia perdido.
A única coisa, que não havia perdido foi a fé em Deus, pois sabia que Ele sempre guarda o melhor para o FIM.
Hoje, depois de muito sofrimento, de uma quebra, onde tive que me reconstruir a partir dos cacos que restaram, mudei.
Refiz-me profissionalmente, tendo eu, hoje encontrado novamente meu local ao sol.
Tambem, a partir do vácuo deixado, e da extrema paciência que dispuseram em me dar, fui reconstruindo-me.
Até porque também ela, estava na mesma situação.
Eramos duas pessoas, que não acreditavam mais no amor, mas que a fé em Deus não se abatia.
De fato ELE fez a graça, aos poucos nos colocou nos eixos.
Impôs sua vontade, acima das nossas, mas sempre fazendo o bem.
Melhorando e nos dando graças além do que podíamos pedir.
Sabe, caro leitor, a um tempo, achava que o amor não existia. Que na verdade eramos como o próprio ditado diz:
“Homem é o lobo do homem”.
Que por mais que considerássemos, que as pessoas que amávamos, eram aquelas que mais fortemente nos golpeavam.
Foi assim, nada, ou melhor, ninguém nessa vida, me causou mais mau, do que aquelas que dei meu coração.
Digo a vocês, caro leitor, por tempos achei que não mais amaria.
Que era de nossa natureza, ser assim, ovelhas e leões.
Hoje, reconstruído, farei novamente um pedido, ajoelhando perante uma igual, e prometendo, com a graça e sobre o olhar de Deus, até o fim de meus dias, amor e companheirismo.
Não espero aqui, que este seja o final, porque tenho fé que será o começo de uma longa e repleta jornada. Repleta de companheirismo e amizade.
Amizade que é fundamental, pois é a base do amor, e companheirismo, pois sem ele, o amor não se perpetua.
Aos erros e desamores, agradeço, pois se aqui estou, é porque aprendi muito, primeiramente a reconhecer as virtudes que encontrei nela.
Pois se a vida é como um livro, que para conquistar o “Gran Finale”, passam por diversas dificuldades, também eu aqui tive que passar por todas, para conquistar o ponto em que estou.
Amigos, caro leitor, agradeço de coração sua leitura até aqui.
Segue a vida seu curso, rezando sempre que Deus nos guie pelo longo rio da vida. Sempre nos mantendo no curso certo.