Mittels Explore NFC Board am Raspberry vom Smartphone NFC Tag einlesen und dann Schloss ansteuern

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
MoritzMaurer
User
Beiträge: 3
Registriert: Dienstag 3. Januar 2017, 17:31

Ich habe ein Problem:
wir machen in der Schule ein Projekt, indem wir ein Spindschloss über den Raspberry Pi ansteuern wollen, zuerst wollen wir aber über das Smartphone
ein NFC Signal(ich habe es jetzt mit einer Emulation eines NFC Tags realisiert) an den Raspberry Pi 3 senden. Am Raspberry Pi 3 habe ich das explore-nfc Board von NXP. Ich habe dazu ein funktionierendes Programm mit dem ich die ID des NFC Tags einlesen kann. Ich habe auch schon ein 2. Programm mit dem ich das 12V Schloss ansteuere. Jetzt komme ich zu meinem Problem: Wie kann ich diese beiden Programme verbinden? Meine Versuche die beiden Programme in eines zu schreiben waren erfolglos.
Ich hoffe Sie können mir weiterhelfen :)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@MoritzMaurer: was hast Du versucht? Woran bist Du gescheitert? Gab es Fehlermeldungen? Sind das beides Python-Programme? Wie sehen die aus?
BlackJack

@MoritzMaurer: Eventuell können wir helfen, aber nicht ohne zu wissen wo das oder die konkreten Probleme liegen.

Ganz wichtig, weil häufig das Problem (speziell in diesem Unterforum): Programmieren funktioniert nicht so, dass man sich den Beispielcode für verschiedene Bibliotheken, der für die Einzelprobleme funktioniert, irgendwie in eine Datei zusammen kopiert und dann anfängt herum zu raten wie man jetzt die Zeilen verschieben könnte, dass es funktioniert. Grundlage ist Python an sich zu können beziehungsweise zu lernen und dann wirklich den Code den man bereits hat zu verstehen. Und dann am besten nichts kopieren, sondern das neue Programm wirklich von Null *selber schreiben*. Dabei die Dokumentation von den verwendeten Bibliotheken zu rate ziehen und eventuell auch mal in Beispiele schauen, aber nichts (ab)schreiben was man nicht verstanden hat.
Benutzeravatar
framp
User
Beiträge: 52
Registriert: Samstag 9. Oktober 2010, 22:16
Wohnort: bei Stuttgart
Kontaktdaten:

@BlackJack: Prinzipell stimme ich Dir zu. Aber u.U. kann man die beiden Programme doch irgendwie zusammenbringen - wenn auch nicht elegant - aber so dass es funktioniert.

Allerdings habe ich auch das Gefühl dass wohl eher die beiden Teile zu einem neuen Programm zusammengeworfen werden müssen. Ich würde dann aber nicht von Scratch anfangen sondern schon versuchen den jeweilgen Code zu verstehen und dann Code Reuse betreiben.

@MoritzMaurer: Wie hast Du probiert die beiden zusammenzubringen? Was hat nicht funktioniert ? Wenn Du konkrete Fragen hast kann Dir hier sicherlich geholfen werden. Aber es wird Dir keiner die Arbeit des Zusammenführens bzw Neuschreibens des Codes abnehmen :roll:
MoritzMaurer
User
Beiträge: 3
Registriert: Dienstag 3. Januar 2017, 17:31

Erstmals Danke für die schnellen Antworten :)

Das ist mein code:

Code: Alles auswählen

import nxppy 
import time

mifare = nxppy.Mifare()

while True:
try:
uid = mifare.select()
print(uid)
except nxppy.SelectError:
pass

time.sleep(1)
und jetzt möchte ich die id des NFC Tags am besten mit einer IF-Schleife überprüfen(die uid sollte 01020304 sein) wenn ich das in die
Endlosschleife einbaue funktioniert das nicht. Wo kann ich die IF-Abfrage sonst hineinprogrammieren?

Das andere Programm ist einfach einen GPIO Port anzusteuern, ich glaube dazu brauche ich den Code nicht hereinkopieren.
Zuletzt geändert von Anonymous am Mittwoch 4. Januar 2017, 18:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@MoritzMaurer: Bei dem Quelltext fehlt die Einrückung.

Ganz wichtig: http://if-schleife.de/

Was heisst ”funktioniert nicht”? Wenn Du den Wert von `uid` gegen einen bekannten, konstanten Wert prüfen möchtest und darauf hin etwas passieren soll, macht man das mit ``if``. Und wenn es jedes mal nach dem Zuweisen von `uid` passieren soll, dann gehört das in die Schleife.
BlackJack

@framp: Das Problem bei dieser Art von Code-Reuse bei genau dieser Art von Benutzern ist, das die meistens Code kopieren den sie schon an sich nicht ganz verstanden haben, weil ihn irgend jemand anders geschrieben hat, und dann auch noch versuchen nicht verstandenen Code aus zwei Quellen zu etwas lauffähigem zu kombinieren. Und wenn die Beispiele aus den jeweiligen Dokumentationen oder Blog- oder Foren-Beiträgen nicht 100% auf das Problem passten, dann ist da oft noch irgendwelcher unnötiger Code drin, der von da an immer mit kopiert wird, weil man es ja nicht besser weiss. Nicht selten ist das schon bei den Originalquellen der Fall. Darum denke ich es ist für Anfänger besser sich selbst Gedanken über den Sinn (oder Unsinn) jeder einzelnen Zeile und jedes einzelnen Ausdrucks zu machen. Sonst sieht das irgendwann so aus wie typischer PHP-Quelltext (jenweits von Ausnahmen). ;-)
MoritzMaurer
User
Beiträge: 3
Registriert: Dienstag 3. Januar 2017, 17:31

@BlackJack: Ich habe das mit der IF-Abfrage jetzt zusammengebracht :D Danke dafür
Benutzeravatar
framp
User
Beiträge: 52
Registriert: Samstag 9. Oktober 2010, 22:16
Wohnort: bei Stuttgart
Kontaktdaten:

@BlackJack: Ich sehe Deinen Punkt. Aber existierender Code hilft auf der anderen Seite einem Anfänger Python besser zu verstehen und zu lernen. Aber dazu muss er den Code wirklich verstehen, denn sonst kommt wirklich nur krudes Zeug raus.
Antworten