Interrupt bei einem GPIO Pin des RasPi

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Interrupt bei einem GPIO Pin des RasPi

Beitrag von af0815 »

BTW: Wie sieht es jetzt mit dem Interrupt bei einem GPIO aus ? Gibt es eine Konklusion ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Interrupt bei einem GPIO Pin des RasPi

Beitrag von Socke »

mschnell hat geschrieben:
Mo 17. Mai 2021, 11:54
Socke hat geschrieben:
Mi 12. Mai 2021, 14:46
Geht. Ist aber nicht schön und gehört verboten.
Was genau "gehört verboten" (explizit, nicht Beispiel)
Ich wollte niemanden auf dumme Gedanken bringen. Als Beispiel wenn du den Objektzeiger einfach austauschst und auf eine vollkommen andere Datenstruktur zeigst oder zur Datenübergabe eines Integers oder so missbrauchst. Damit runierst du die Typsicherheit, für die wir hier Pascal verwenden.

Es gibt auch durchaus legitime Gründe, den Objektzeiger auszutauschen: Wenn ich per RTTI den Methodenzeiger ermittle ist dies vergleichsweise langsam. Dann kann man durch Austauschen des Objekts recht zügig über die Objekte einer Liste iterieren anstatt die Methode erneut suchen zu müssen. Aber auch hier ist die Typenkompatibilität manuell sicherzustellen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Interrupt bei einem GPIO Pin des RasPi

Beitrag von mschnell »

Hmm.
Für einen "Fake Closur" braucht man das nicht.
Einfach eine Klasse mit der Datenstrutur und einer in "Queue();" anzugebende Funktion, die die Daten ausgibt und dann mit "free;" endet. Da bleibt die Objektstruktur doch "sauber".
Klar ist, dass der Sender-Thread nach "Queue()" das Objekt nicht mehr anpacken darf, da der Empfänger-Thread es ja schon zerstört haben könnte.
-Michael

Antworten