IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Projet lecteur NFC\RFID sur Beagle


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    assistant web design et erp
    Inscrit en
    Octobre 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : assistant web design et erp

    Informations forums :
    Inscription : Octobre 2017
    Messages : 23
    Par défaut Projet lecteur NFC\RFID sur Beagle
    bonjour ,
    je travail sur un projet de lecteur rfid sur un beaglebone black wifi le but etant de scanné une carte et d'écrire le token resultant dans une base de donnée mysql ,
    pour le moment le printf affiche correctement le token dans la console tty le probléme c'est que je n'arrive pas a délcaré convenablement une chaine unsigned char je vous présente le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include "linux_nfc_api.h"
     
    static nfc_tag_info_t g_TagInfo;
    static nfcTagCallback_t g_TagCB;
     
     
     
    /********************************** CallBack **********************************/
     
    void onTagArrival(nfc_tag_info_t *pTagInfo)
    {
     
    	int i;
    	memcpy(&g_TagInfo, pTagInfo, sizeof(nfc_tag_info_t));
     
    	for(i = 0x00; i < g_TagInfo.uid_length; i++)
    		{
    			printf("%02X ", (unsigned char) g_TagInfo.uid[i]);
    		}
    	printf("\n");
    	printf("TAG OK\n");
    }
     
    void onTagDeparture(void)
    {	
    }
     
     
    int InitMode()
    {
    	int res = 0x00;
     
    	g_TagCB.onTagArrival = onTagArrival;
    	g_TagCB.onTagDeparture = onTagDeparture;
     
    	if(0x00 == res)
    	{
    		res = nfcManager_doInitialize();
    		if(0x00 != res)
    		{
    			printf("NfcService Init Failed\n");
    		}
    		nfcManager_registerTagCallback(&g_TagCB);
    		nfcManager_enableDiscovery(DEFAULT_NFA_TECH_MASK, 0x00, 0x00, 0);
    	}
     
     
    	return res;
    }
     
    int DeinitPollMode()
    {
    	int res = 0x00;
     
    	nfcSnep_stopServer();
     
    	nfcManager_disableDiscovery();
     
    	nfcSnep_deregisterClientCallback();
     
    	nfcManager_deregisterTagCallback();
     
    	nfcHce_deregisterHceCallback();
     
    	res = nfcManager_doDeinitialize();
     
    	if(0x00 != res)
    	{
    		printf("NFC Service Deinit Failed\n");
    	}
    	return res;
    }
     
     
     
     int main(int argc, char ** argv)
     {
    	 int res = 0x00;
     
    	if(InitMode() == 0)
    	{
    			while(1)
    			{
     
    			}
    	}
     
    	res = DeinitPollMode();
     
    	// CleanEnv();
     
    	return 0;
     }
    la chaine de caractere a recupérer est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%02X ", (unsigned char) g_TagInfo.uid[i]);
    donc je cherche a ecrire le contenu de g_taginfo.uid dans une bdd mysql
    jai deja init ma connection sql sur une 2eme version de mon code mais je n'arrive pas a compilé.
    la 2eme version du code qui n'attend plus que la requete sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    #include <mysql/mysql.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include "linux_nfc_api.h"
     
    static nfc_tag_info_t g_TagInfo;
    static nfcTagCallback_t g_TagCB;
     
    static MYSQL mysql;
     
    /********************************** CallBack **********************************/
     
    void onTagArrival(nfc_tag_info_t *pTagInfo)
    {
    	int ret;
    	ret = mysql_real_connect(&mysql,"localhost","root","root66","BEAGLEBONE",3306,NULL,0))
     
    	if(!ret){
    		printf("erreur connection");
    	}
     
    	int i;
    	memcpy(&g_TagInfo, pTagInfo, sizeof(nfc_tag_info_t));
     
    	for(i = 0x00; i < g_TagInfo.uid_length; i++)
    		{
    			unsigned char token = g_TagInfo.uid[i];
    		}
    	printf("\n");
    	printf("%02X ",token)
    	printf("TAG OK\n");
    	if(ret){
    		///requette
    		/// ferme connexion
    	}
    }
     
    void onTagDeparture(void)
    {	
    }
     
     
    int InitMode()
    {
    	int res = 0x00;
     
    	g_TagCB.onTagArrival = onTagArrival;
    	g_TagCB.onTagDeparture = onTagDeparture;
     
    	if(0x00 == res)
    	{
    		res = nfcManager_doInitialize();
    		if(0x00 != res)
    		{
    			printf("NfcService Init Failed\n");
    		}
    		nfcManager_registerTagCallback(&g_TagCB);
    		nfcManager_enableDiscovery(DEFAULT_NFA_TECH_MASK, 0x00, 0x00, 0);
    	}
     
     
    	return res;
    }
     
    int DeinitPollMode()
    {
    	int res = 0x00;
     
    	nfcSnep_stopServer();
     
    	nfcManager_disableDiscovery();
     
    	nfcSnep_deregisterClientCallback();
     
    	nfcManager_deregisterTagCallback();
     
    	nfcHce_deregisterHceCallback();
     
    	res = nfcManager_doDeinitialize();
     
    	if(0x00 != res)
    	{
    		printf("NFC Service Deinit Failed\n");
    	}
    	return res;
    }
     
    void init_mysql_mode()
    {
    	//Initialisation de MySQL
          mysql_init(&mysql);
    	//Options de connexion
          mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
    }
     
     
     int main(int argc, char ** argv)
     {
    	 int res = 0x00;
    	init_mysql_mode();
     
    	if(InitMode() == 0)
    	{
    			while(1)
    			{
     
    			}
    	}
     
     
    	res = DeinitPollMode();
     
    	// CleanEnv();
     
    	return 0;
    si quelqu'un peut m'aider a débloquer mon problème sa fait un moment que j'avais pas mis les main dans du c =)
    merci.

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i = 0x00; i < g_TagInfo.uid_length; i++)
    		{
    			unsigned char token = g_TagInfo.uid[i];
    		}
    La variable déclarée ainsi est propre au bloc de la boucle.
    Vois le comme un bloc de fonction.

    Si tu déclares une variable en dehors d'une fonction c'est une globale au fichier.
    Si tu déclares une variable dans une fonction c'est une locale à la fonction qui est inconnu des autres parties de ton fichier.
    Si tu déclares une variable dans un bloc {} tu déclares un autre espace du coup.
    Remontes la déclaration de ta variable en haut de ta fonction.

    Voici un petit cours sur le sujet de la portée des variables :
    https://c.developpez.com/cours/berna...ne/node109.php

  3. #3
    Membre averti
    Homme Profil pro
    assistant web design et erp
    Inscrit en
    Octobre 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : assistant web design et erp

    Informations forums :
    Inscription : Octobre 2017
    Messages : 23
    Par défaut re:
    bonjour transgohan merci de ta réponse mais j'ai du mal à suivre sur certain point car si je comprend bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%02X ", (unsigned char) g_TagInfo.uid[i]);
    c'est se printf qui affiche ma chaîne de caractère dans ma tty
    sauf que je ne trouve pas comment declaré la char renvoyé par le printf en tant que variable pour l'utiliser dans une requête sql insert into

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Bon... On va aller à l'essentiel alors.
    Quelle est l'erreur indiquée par le compilateur ?

  5. #5
    Membre averti
    Homme Profil pro
    assistant web design et erp
    Inscrit en
    Octobre 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : assistant web design et erp

    Informations forums :
    Inscription : Octobre 2017
    Messages : 23
    Par défaut
    aucune pour le moment car le numero de token resort dans la tty pour le moment sauf que je veux faire le fprint dans une table mysql pas dans la tty

    en gros j'ai se code la dans mon main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    /******************************************************************************
     *
     *  Copyright (C) 2015 NXP Semiconductors
     *
     *  Licensed under the Apache License, Version 2.0 (the "License")
     *  you may not use this file except in compliance with the License.
     *  You may obtain a copy of the License at
     *
     *  http://www.apache.org/licenses/LICENSE-2.0
     *
     *  Unless required by applicable law or agreed to in writing, software
     *  distributed under the License is distributed on an "AS IS" BASIS,
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     *  See the License for the specific language governing permissions and
     *  limitations under the License.
     *
     ******************************************************************************/
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include "linux_nfc_api.h"
     
    static nfc_tag_info_t g_TagInfo;
    static nfcTagCallback_t g_TagCB;
     
     
     
    /********************************** CallBack **********************************/
     
    void onTagArrival(nfc_tag_info_t *pTagInfo)
    {
     
    	int i;
    	memcpy(&g_TagInfo, pTagInfo, sizeof(nfc_tag_info_t));
     
    	for(i = 0x00; i < g_TagInfo.uid_length; i++)
    		{
    			printf("%02X ", (unsigned char) g_TagInfo.uid[i]);
    		}
    	printf("\n");
    	printf("TAG OK\n");
    }
     
    void onTagDeparture(void)
    {	
    }
     
     
    int InitMode()
    {
    	int res = 0x00;
     
    	g_TagCB.onTagArrival = onTagArrival;
    	g_TagCB.onTagDeparture = onTagDeparture;
     
    	if(0x00 == res)
    	{
    		res = nfcManager_doInitialize();
    		if(0x00 != res)
    		{
    			printf("NfcService Init Failed\n");
    		}
    		nfcManager_registerTagCallback(&g_TagCB);
    		nfcManager_enableDiscovery(DEFAULT_NFA_TECH_MASK, 0x00, 0x00, 0);
    	}
     
     
    	return res;
    }
     
    int DeinitPollMode()
    {
    	int res = 0x00;
     
    	nfcSnep_stopServer();
     
    	nfcManager_disableDiscovery();
     
    	nfcSnep_deregisterClientCallback();
     
    	nfcManager_deregisterTagCallback();
     
    	nfcHce_deregisterHceCallback();
     
    	res = nfcManager_doDeinitialize();
     
    	if(0x00 != res)
    	{
    		printf("NFC Service Deinit Failed\n");
    	}
    	return res;
    }
     
     
     
     int main(int argc, char ** argv)
     {
    	 int res = 0x00;
     
    	if(InitMode() == 0)
    	{
    			while(1)
    			{
     
    			}
    	}
     
    	res = DeinitPollMode();
     
    	// CleanEnv();
     
    	return 0;
     }
    je lance mon executable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debian@beaglebone:~/linux_libnfc-nci$ sudo ./nfcDemoApp
    je scan une carte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    debian@beaglebone:~/linux_libnfc-nci$ sudo ./nfcDemoApp
     
    11 5B FC F9
    TAG OK
    mais je cherche un moyen pour que le code 11 5B FC F9 soit print dans une table mysql avec une requête insert into au lieu d'etre afficher dans la tty debian mais je suis un peu dépassé dans la transformation de mon fprint en variable pour m'en servir dans une requete mysql

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Sais-tu rédiger la requête SQL avant de parler d'appeler les fonctions de la librairie ?
    A savoir faire une requête INSERT dans ton cas je suppose.

Discussions similaires

  1. Formater avec un lecteur CD Externe sur ordi portable
    Par judk59 dans le forum Composants
    Réponses: 7
    Dernier message: 29/07/2010, 17h29
  2. Commet faire un lecteur enregistreur audio sur web (pour un client) ?
    Par Karys dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 13/04/2007, 09h18
  3. [Projet scolaire] IDE java sur PDA
    Par benef dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 27/02/2007, 14h18
  4. les projets delphi 6 marche sur delphi 2005 ?
    Par Nadirov dans le forum Delphi
    Réponses: 2
    Dernier message: 13/08/2006, 13h33
  5. [CV] Projets qui peuvent figurer sur un CV
    Par afrikha dans le forum CV
    Réponses: 20
    Dernier message: 09/12/2005, 06h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo