Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. QML - NFC
Forum Updated to NodeBB v4.3 + New Features

QML - NFC

Scheduled Pinned Locked Moved Unsolved Italian
2 Posts 2 Posters 463 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bilbo69
    wrote on last edited by
    #1

    Ciao a tutti,
    ho provato a scrivere una app minimale QML che legga un tag NFC con del testo al suo interno.

    Il risultato è (quasi) buono. Questo è il codice:

    (nel file .PRO)
    QT += quick nfc

    import QtQuick 2.9
    import QtQuick.Window 2.2
    import QtNfc 5.5
    
    Window
    {
        visible: true
        width: 640
        height: 480
        title: qsTr("NFC")
    
        Text
        {
            id: nfc_text
            anchors.centerIn: parent
            text: "Avvicina un tag NFC!!"
        }
    
        NearField
        {
            orderMatch: false
            polling: true
            onMessageRecordsChanged:
            {
                var i;
                for (i = 0; i < messageRecords.length; ++i)
                {
                    var data = "";
                    if (messageRecords[i].typeNameFormat === NdefRecord.NfcRtd) {
                        if (messageRecords[i].type === "T") {
                            data = messageRecords[i].text;
                        } else if (messageRecords[i].type === "U") {
                            data = messageRecords[i].uri;
                        }
                    }
                    if (!data)
                        data = "Unknown content";
    
                    console.log("NFC> "+data)
                    nfc_text.text=data
                }
            }
        }
    }
    

    Compilata su Samsung S9, tutto ok.

    L'unico problema è che quando si avvicina un tag per la PRIMA volta si apre la App Samsung di default che mostra il contenuto del Tag.
    A questo punto si ritorna sull'App e, riprovando ad avvicinare il Tag, dalla seconda volta in poi tutto funziona bene: l'App risponde e mostra il contenuto a centro pagina.
    E' come se la prima volta (quindi dopo l'avvio dell'App) non sia in ascolto quindi la gestione della lettura viene demandata dall'App di default.

    Nel codice però c'è polling: true, quindi qualcosa non torna.

    C'è qualcuno che ne ha già fatto le spese?
    Grazie
    Gianluca

    Gojir4G 1 Reply Last reply
    0
    • B bilbo69

      Ciao a tutti,
      ho provato a scrivere una app minimale QML che legga un tag NFC con del testo al suo interno.

      Il risultato è (quasi) buono. Questo è il codice:

      (nel file .PRO)
      QT += quick nfc

      import QtQuick 2.9
      import QtQuick.Window 2.2
      import QtNfc 5.5
      
      Window
      {
          visible: true
          width: 640
          height: 480
          title: qsTr("NFC")
      
          Text
          {
              id: nfc_text
              anchors.centerIn: parent
              text: "Avvicina un tag NFC!!"
          }
      
          NearField
          {
              orderMatch: false
              polling: true
              onMessageRecordsChanged:
              {
                  var i;
                  for (i = 0; i < messageRecords.length; ++i)
                  {
                      var data = "";
                      if (messageRecords[i].typeNameFormat === NdefRecord.NfcRtd) {
                          if (messageRecords[i].type === "T") {
                              data = messageRecords[i].text;
                          } else if (messageRecords[i].type === "U") {
                              data = messageRecords[i].uri;
                          }
                      }
                      if (!data)
                          data = "Unknown content";
      
                      console.log("NFC> "+data)
                      nfc_text.text=data
                  }
              }
          }
      }
      

      Compilata su Samsung S9, tutto ok.

      L'unico problema è che quando si avvicina un tag per la PRIMA volta si apre la App Samsung di default che mostra il contenuto del Tag.
      A questo punto si ritorna sull'App e, riprovando ad avvicinare il Tag, dalla seconda volta in poi tutto funziona bene: l'App risponde e mostra il contenuto a centro pagina.
      E' come se la prima volta (quindi dopo l'avvio dell'App) non sia in ascolto quindi la gestione della lettura viene demandata dall'App di default.

      Nel codice però c'è polling: true, quindi qualcosa non torna.

      C'è qualcuno che ne ha già fatto le spese?
      Grazie
      Gianluca

      Gojir4G Offline
      Gojir4G Offline
      Gojir4
      wrote on last edited by Gojir4
      #2

      @bilbo69 Ciao,
      Probabilmente questo bug: https://bugreports.qt.io/browse/QTBUG-64415

      Questo codice funziona per me:

      import QtQuick 2.9
      import QtQuick.Window 2.2
      import QtNfc 5.5
      
      Window
      {
          visible: true
          width: 640
          height: 480
          title: qsTr("NFC")
          Component.onCompleted: loader.sourceComponent = nfcComponent
      
          Text
          {
              id: nfc_text
              anchors.centerIn: parent
              text: "Avvicina un tag NFC!!"
          }
      
          Loader{
              id: loader
          }
      
          Component{
              id: nfcComponent
              NearField
              {
                  orderMatch: false
                  polling: true
                  onMessageRecordsChanged:
                  {
                      var i;
                      for (i = 0; i < messageRecords.length; ++i)
                      {
                          var data = "";
                          if (messageRecords[i].typeNameFormat === NdefRecord.NfcRtd) {
                              if (messageRecords[i].type === "T") {
                                  data = messageRecords[i].text;
                              } else if (messageRecords[i].type === "U") {
                                  data = messageRecords[i].uri;
                              }
                          }
                          if (!data)
                              data = "Unknown content";
      
                          console.log("NFC> "+data)
                          nfc_text.text=data
                      }
                  }
                  onTagFound: console.log("TAG found !!")
                  onTagRemoved: console.log("TAG removed!!")
              }
          }
      }
      
      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved