pascalIO: Frage zum sinnvollen Nutzen der lib

Rund um die LCL und andere Komponenten
sporex
Beiträge: 8
Registriert: Sa 5. Jan 2013, 15:28

Re: pascalIO: Frage zum sinnvollen Nutzen der lib

Beitrag von sporex »

Mathias hat geschrieben:
Ich habe die fraglichen Zeilen herauskopiert und in eine simple Konsolanwendung umgewandelt.
Es scheint tatsächlich ein Problem zu sein, welches mit der GUI zusammenhängt:

Wenn ich die Anwendung nach einem reboot zum ersten mal aus der GUI starte passiert nichts (d.h. alle GPIO bleiben inputs).
Erst beim zweiten Aufruf werden die Pins korrekt initialisiert.

Kannst du mal dein GUI-Code hier posten, vielleicht hast du ein simpler Fehler eingebaut.


Das kannst Du dir gern antun.
Aber ich glaube nicht dass da ein Fehler drin ist.


Code: Alles auswählen

program gpiotst;
 
{$mode objfpc}{$H+}
 
uses
 
  fpgpio;
 
var REL_A_HON,REL_A_USB,HON_A_BUSY,HON_A_CALL: TGpioPin;
    REL_B_HON,REL_B_USB,HON_B_BUSY,HON_B_CALL: TGpioPin;
    LED_A_GN ,LED_A_RT ,LED_B_GN  ,LED_B_RT  : TGpioPin;
    HON_A_SON_1,HON_A_SON_2,HON_A_SON_TST    : TGpioPin;
    HON_B_SON_1,HON_B_SON_2,HON_B_SON_TST    : TGpioPin;
    REL_A_SON,REL_B_SON,HOOK_A_IN,HOOK_B_IN  : TGpioPin;
    LED_RJ45                                 : TGpioPin;
const lo=false; hi=true;
begin
  REL_A_HON:=TGpioLinuxPin.create(20);
  REL_A_HON.Direction:=gdOut;
  REL_A_HON.Value:=lo;
 
  REL_A_USB:=TGpioLinuxPin.create(19);
  REL_A_USB.Direction:=gdOut;
  REL_A_USB.Value:=lo;
 
  HON_A_BUSY:=TGpioLinuxPin.create(6);
  HON_A_BUSY.Direction:=gdOut;
  HON_A_BUSY.Value:=hi;
 
  HON_A_CALL:=TGpioLinuxPin.create(12);
  HON_A_CALL.Direction:=gdOut;
  HON_A_CALL.Value:=hi;
 
  REL_B_HON:=TGpioLinuxPin.create(26);
  REL_B_HON.Direction:=gdOut;
  REL_B_HON.Value:=lo;
 
  REL_B_USB:=TGpioLinuxPin.create(21);
  REL_B_USB.Direction:=gdOut;
  REL_B_USB.Value:=lo;
 
  HON_B_BUSY:=TGpioLinuxPin.create(16);
  HON_B_BUSY.Direction:=gdOut;
  HON_B_BUSY.Value:=hi;
 
  HON_B_CALL:=TGpioLinuxPin.create(13);
  HON_B_CALL.Direction:=gdOut;
  HON_B_CALL.Value:=hi;
 
  LED_A_GN:=TGpioLinuxPin.create(7);
  LED_A_GN.Direction:=gdOut;
  LED_A_GN.Value:=lo;
 
  LED_A_RT:=TGpioLinuxPin.create(5);
  LED_A_RT.Direction:=gdOut;
  LED_A_RT.Value:=lo;
 
  LED_B_RT:=TGpioLinuxPin.create(8);
  LED_B_RT.Direction:=gdOut;
  LED_B_RT.Value:=lo;
 
  LED_B_GN:=TGpioLinuxPin.create(11);
  LED_B_GN.Direction:=gdOut;
  LED_B_GN.Value:=lo;
 
 
  HON_A_SON_1:=TGpioLinuxPin.create(24);
  HON_A_SON_1.Direction:=gdOut;
  HON_A_SON_1.Value:=hi;
 
  HON_A_SON_2:=TGpioLinuxPin.create(3);
  HON_A_SON_2.Direction:=gdOut;
  HON_A_SON_2.Value:=hi;
 
  HON_A_SON_TST:=TGpioLinuxPin.create(2);
  HON_A_SON_TST.Direction:=gdOut;
  HON_A_SON_TST.Value:=hi;
 
 
  HON_B_SON_1:=TGpioLinuxPin.create(10);
  HON_B_SON_1.Direction:=gdOut;
  HON_B_SON_1.Value:=lo;
 
  HON_B_SON_2:=TGpioLinuxPin.create(18);
  HON_B_SON_2.Direction:=gdOut;
  HON_B_SON_2.Value:=hi;
 
  HON_B_SON_TST:=TGpioLinuxPin.create(17);
  HON_B_SON_TST.Direction:=gdOut;
  HON_B_SON_TST.Value:=hi;
 
  REL_A_SON:=TGpioLinuxPin.create(25);
  REL_A_SON.Direction:=gdOut;
  REL_A_SON.Value:=lo;
 
  REL_B_SON:=TGpioLinuxPin.create(9);
  REL_B_SON.Direction:=gdOut;
  REL_B_SON.Value:=hi;
 
  HOOK_A_IN:=TGpioLinuxPin.create(23);
  HOOK_A_IN.Direction:=gdIn;
 
  HOOK_B_IN:=TGpioLinuxPin.create(22);
  HOOK_B_IN.Direction:=gdIn;
 
  LED_RJ45:=TGpioLinuxPin.create(27);
  LED_RJ45.Direction:=gdOut;
  LED_RJ45.Value:=hi;
 
end.
 
 

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: pascalIO: Frage zum sinnvollen Nutzen der lib

Beitrag von Thandor »

Also ich musste immer mit Rootrechte meine GPIO-Programme ausführen, damit es funktioniert.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: pascalIO: Frage zum sinnvollen Nutzen der lib

Beitrag von pluto »

Aber er scheibt doch: Einmal geht es, wenn es nur mit Root Rechten laufen würde, würde es gar nicht gehen.
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: pascalIO: Frage zum sinnvollen Nutzen der lib

Beitrag von Mathias »

Mal eine Frage zu der GPIO-Classe.
Kann man mit dieser zB. eine Matrix-Anzeige im Multiplex ansteuern ?
Ist diese Classe dafür schnell genug dafür ?

Bei einem Arduino greife ich für solch eine Funktion direkt auf die GPIO-Port zu, so wie hier beschrieben: https://www.arduino.cc/en/Reference/PortManipulation
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten