Jump to content

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 to post
Share on other sites

Hi,

19 hours ago, Overlander said:

Aber sobald ich versuche die Daten zu verändern, die geschrieben werden sollen, geht krieg nur noch Fehlermeldungen. 

Zeige am besten mal, wie du das Beispiel verändert hast, sowas sieht man "am Objekt" am besten.

Link to post
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 to post
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 to post
Share on other sites

Hi

Vielen danke für die schnelle Antwort :). Versuche mal den Code anzupassen.

Der Speicherplatz müsste reichen. Ich habe vor der Bestellung vom NFC Bricklet mit Hilfe von NFC Karten (800Byte) und verschiedenen Handy Apps rum experimentiert. Es haben immer alle Daten auf die Karten gepasst.   

 

Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...