Jump to content

Mit NFC Bricklet schreiben


Recommended Posts

Schönen Guten Tag alle mit einander

Ich bin etwas am verzweifeln mit meinem NFC bricklet. Ich versuch Sensor daten auf einen NFC karten zu schreiben mit Hilfe von Python. 

Ich habe das Beispiel vom Shop als Basis genommen und versucht dieser zu verändern. Die Beispiele selbst funktionieren ich habe UID Localhost, etc habe ich alles angepasst auch auf die anderen Sensoren habe ich Zugang und kann die Daten in einer GUI nutzen. Aber sobald ich versuche die Daten zu verändern, die geschrieben werden sollen, geht krieg nur noch Fehlermeldungen. 

Könnte mir einer hier im Forum erklären wie ich ein einfaches Hello Word auf eine NFC Type2 Karten schreiben kann, steh echt auf der Leitung. Wenn ich so weit kommen kann ich den Code anpassen für die Sensordaten.  

 

Vielen dank im voraus

Overlander

Link zu diesem Kommentar
Share on other sites

Hi

Schon mal vielen dank für die Hilfe:)

Ich habe den entsprechenden Teil raus kopiert.

 

HOST = "192.168.178.35"
PORT = 4223
UIDGPS ="PuV"
UIDnfc ="RSN"
UIDBut ="QnZ"

import tkinter as tk
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_gps_v2 import BrickletGPSV2
from tinkerforge.bricklet_nfc import BrickletNFC
from tinkerforge.bricklet_dual_button_v2 import BrickletDualButtonV2

ipcon = IPConnection()  # Create IP connection
ipcon.connect(HOST, PORT)  # Connect to brickd

def buttom2():
    BUT = BrickletDualButtonV2(UIDBut, ipcon)
    BUT1, BUT2 = BUT.get_button_state()
    gps = BrickletGPSV2(UIDGPS, ipcon)
    nfc = BrickletNFC(UIDnfc, ipcon)
    nfc.MODE_READER = 3
    nfc.TAG_TYPE_TYPE2 = 2

    if BUT2 == 0:
        latitude, ns, longitude, ew = gps.get_coordinates()
    strNFC = ("Latitude: " + str(latitude / 1000000.0) + " ° " + ns + " Longitude: " + str(longitude / 1000000.0) + " ° " + ew)
    lb15.config(text=strNFC)# Show data in GUI
    if nfc.READER_STATE_IDLE != 128:
        return
    nfc.reader_write_ndef(strNFC)
    lb15.after(1000, buttom2)

 

Link zu diesem Kommentar
Share on other sites

Hi,

Da geht einiges durcheinander:

  • Du musst die Konstanten wie MODE_READER usw nicht neu definieren, das hat keinen Effekt.
  • Das NFC-Bricklet funktioniert wie ein Zustandsautomat. Du musst also die Zustandsübergänge auslösen bzw. abwarten. An der jeweiligen Funktion, ist dokumentiert, welche Zustände du durchlaufen musst. Vergleiche am besten mal die Dokumentation von z.B. reader_write_page und dem Write Read Type2-Beispiel. Folgender Abschnitt der Hardware-Doku erklärt das auch nochmal.
  • Die Beispiele benutzen alle das state_changed-Callback als Signal, dass sich der Zustand des NFC-Bricklets geändert hat. Das würde ich dir auch empfehlen. Wenn deine Programmstruktur das nicht zulässt, kannst du auch (blockierend) den Zustand immer wieder abfragen, bis er sich ändert. (dann mit nfc.get_state() in einer Schleife)
  • Du versuchst die GPS-Koordinaten als Text als NDEF-Record zu schreiben, NDEF-Nachrichten haben aber ein spezifisches Format, vermutlich musst du stattdessen eine Page direkt schreiben.
  • Das wird bei Typ-2-Tags aber knapp, wenn ich unsere Hardware-Doku richtig verstehe, hast du pro Page 4 Byte Platz, du müsstest also für Breiten- und Längengrad (binär, nicht als Zeichenkette) jeweils eine Page verwenden und noch eine für die Vorzeichen von beidem.
Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...