ich beschäftige mich gerade mit dem Auslesen mehrerer GPIO Pins bzw. deren Zustände.
Nach dieser Anleitung funktioniert das auslesen eines Pins wunderbar:
http://wiki.freepascal.org/Lazarus_on_R ... ._PascalIO
Ich versuche mehrere Pins auszulesen und in eine Listbox einzutragen.
Allerdings erhalte ich eine Fehlermeldung:
"Error: Incompatible typ for arg no.1 Got "Boolean", expected "QWord""
Warum kommt die Meldung? Eigentlich ist die Ausgabe doch In oder Out?
Code: Alles auswählen
program Project1;
uses fpgpio;
var
pin_21: TGpioPin;
pin_22: TGpioPin;
pin_23: TGpioPin;
pin_24: TGpioPin;
[...]
begin
pin_21 := TGpioLinuxPin.Create(21);
pin_21.Direction := gdIn;
pin_22 := TGpioLinuxPin.Create(23);
pin_22.Direction := gdIn;
pin_23 := TGpioLinuxPin.Create(23);
pin_23.Direction := gdIn;
[...]
WriteLn('Pin 21 hat den Wert: ', pin_21.Value); //Original aus dem Beispiel
pin_21.Destroy;
////////////////////////////////
ListBox1.Items.AddStrings(IntToStr(pin_21.Value)); // Mein Versuch, den Ausgabewert in eine Listbox einzufügen
pin_21.Destroy;
[...]
end.
Ich kompiliere und schreibe übrigens auf einem Linux_x86 Rechner, da mir Lazarus und das kompilieren auf dem RPi viel zu langsam ist. Das heißt, ich werde wenn das Programm soweit funktioniert, es auf dem RPi kompilieren und einsetzen.
Mit cross-compiling habe ich mich auch schon versucht, allerdings funkionierte das vorne und hinten nicht. Weder auf meinem Linux, noch auf einem Windows Rechner. Daher fällt das aus.
Ich hoffe ihr könnt mir helfen, danke.

EDIT: Die Ausgabe ist doch kein Integer, sondern Boolean. Mit einem einfachen BoolToStr verschwindet die Fehlermeldung...
EDIT2:
Ich habe das gesamt Projekt 1:1 auf meinen Raspberry kopiert und will kompilieren, da kommt eine Fehlermeldung:
"Error: Incompatible typ for arg no.1 Got "AnsiString", expected "TStrings""
Der Code sieht folgendermaßen aus:
Code: Alles auswählen
ListBox1.Items.AddStrings(BoolToStr(pin_21.Value));