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

Objective-C Discussion :

Copier un NSString dans une trame


Sujet :

Objective-C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Copier un NSString dans une trame
    Voici une partie de ma trame codé :

    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
     
    - (IBAction)BTEcrirePage;{
    	ligne1=[champLigne1 text];
    	ligne2=[champLigne2 text];
    	ligne3=[champLigne3 text];
    	ligne4=[champLigne4 text];
    	ligne5=[champLigne5 text];
    	ligne6=[champLigne6 text];
    	ligne7=[champLigne7 text];
    	ligne8=[champLigne8 text];
     
    	[cmdAfficheur ecrirePage:ligne1 withChmp2:ligne2 withChmp3:ligne3 withChmp4:ligne4 withChmp5:ligne5 withChmp6:ligne6 withChmp7:ligne7 withChmp8:ligne8]; //envoi du contenu a CAfficheur
    }
    </code>
     
    <code type="c">
    - (void) ecrirePage:(NSString *)l1 withChmp2:(NSString *)l2 withChmp3:(NSString *)l3 withChmp4:(NSString *)l4 withChmp5:(NSString *)l5 withChmp6:(NSString *)l6 withChmp7:(NSString *)l7 withChmp8:(NSString *)l8 {
    	int octet =0;
    	int i;
     
    	//récupère le contenu des champs remplis par l'utilisateur
    	ligne1Afficheur=l1;
    	ligne2Afficheur=l2;
    	ligne3Afficheur=l3;
    	ligne4Afficheur=l4;
    	ligne5Afficheur=l5;
    	ligne6Afficheur=l6;
    	ligne7Afficheur=l7;
    	ligne8Afficheur=l8;
     
    	//trame pour ecrire dans une page
    	uint8_t tabBytesEcrirePage[5];
    	tabBytesEcrirePage[octet++]=0x02; //debut de trame
    	tabBytesEcrirePage[octet++]=0x01; //numero de l'afficheur (ici le 1)
    	tabBytesEcrirePage[octet++]=0x09; //séparateur
    	tabBytesEcrirePage[octet++]=0x01; //numero de la page (ici la première /156)
    	tabBytesEcrirePage[octet++]=0x0D; //séparateur
    	tabBytesEcrirePage[octet++]=0x06; 
    	tabBytesEcrirePage[octet++]=0x1D;
    	for (i=0; i<8; i++) {
                    //copie les 20 caractères composants la ligne i
    		/*for (i=0; i<20; i++) {
    			??
    		}*/
    		tabBytesEcrirePage[octet++]=0x0D;
    		tabBytesEcrirePage[octet++]=0x30;
    		tabBytesEcrirePage[octet++]=0x0D;
    		tabBytesEcrirePage[octet++]=0x30; //0x30 pour affichage fixe et 0x31 pour affichage clignotant
    		tabBytesEcrirePage[octet++]=0x1D;
    	}
    	tabBytesEcrirePage[octet++]=0x32; //nombre de secondes d'affichage de la page (compris entre 0x30 et 0X39 (ici 2secondes))
    	tabBytesEcrirePage[octet++]=0x39;
     
    	//configuration de l'heure (hh/mm)
    	tabBytesEcrirePage[octet++]=0x00; //dizaines des heures de début d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités des heures de début d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x00; //dizaines des minutes de début d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités des minutes de début d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x00; //dizaines des heures de fin d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités des heures de fin d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x00; //dizaines des minutes de fin d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités des minutes de fin d'affichage de la page
     
    	//configuration de la date (jj/mm/aa)
    	tabBytesEcrirePage[octet++]=0x00; //dizaines du jour de début d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x01; //unités du jour de début d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x00; //dizaines du mois de début d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x01; //unités du mois de début d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x09; //dizaines de l'année de début d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités de l'année  de début d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x03; //dizaines du jour de fin d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités du jour de fin d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x01; //dizaines du mois de fin d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x02; //unités du mois de fin d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x02; //dizaines de l'année de fin d'affichage de la page
    	tabBytesEcrirePage[octet++]=0x00; //unités de l'année de fin d'affichage de la page
     
    	tabBytesEcrirePage[octet++]=0x03; //fin de trame de page
     
    	int j = 0;
    	for (j=0; i<5; j++) NSLog(@"	tabBytesFormaterPages[%d]= %d", j, tabBytesEcrirePage[j]);
     
    	[socketTrame sendTrame:tabBytesEcrirePage]; //envoi de la trame à la classe CClientSocket
    }
    Voila donc mon problème ce situe au niveau de ma boucle for de 20 imbriqué ds ma boucle for de 8, je doit a partir de mes objets ligne les inscrire dans ma trame, pour afficher ensuite ce contenu sur un afficheur a LED. J'espère avoir été assez clair, je vous remerci d'avance.
    Dernière modification par kOrt3x ; 23/02/2011 à 18h49.

  2. #2
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    Quel encodage de texte peut être lu de l'autre côté par l'afficheur? ASCII?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui, ASCII. J'ai trouvé ma methode qui va me permettre de faire cela, il me reste a faire la copy ds la trame.

    J'utilise la methode :
    texte etant un char*
    texte = [l1 UTF8String];

    Le problème c'est que j'ai besoin que ce soit un tableau pour mon algo.. Mais je n'arrive pas a comprendre le fonctionnement..
    Dernière modification par Invité ; 23/02/2011 à 08h29.

  4. #4
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    Tu me dis que l'afficheur va lire de l'ASCII et toi tu récupères une chaîne UTF8...??

    Sinon tu peux essayer de regarder -[NSString dataUsingEncoding:allowLossyConversion:] pour récupérer de l'ASCII en particulier. Et ensuite -[NSData bytes] pour accéder aux données.

    Par contre je ne vois pas pourquoi tu parles de tableau en particulier. Si tu as un pointeur sur des données, tu peux y accéder comme avec un tableau...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mon afficheur li également une chaine UTF8, mais pour l'instant
    j'aimerais recuperer 8 contenu provenant de 8 UITextField :
    pour sa j'ai codé :

    dans mon .h de mon AppDelegate
    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
     
    NSString *ligne1; //object qui va enregistrer la valeur des champLigne[i] du Wysiwyg
    	NSString *ligne2;
    	NSString *ligne3;
    	NSString *ligne4;
    	NSString *ligne5;
    	NSString *ligne6;
    	NSString *ligne7;
    	NSString *ligne8; 
     
    	IBOutlet UITextField *champLigne1; //zone d'edition qui va recevoir le contenu des objets ligne[i] du Wysiwyg
    	IBOutlet UITextField *champLigne2;
    	IBOutlet UITextField *champLigne3;
    	IBOutlet UITextField *champLigne4;
    	IBOutlet UITextField *champLigne5;
    	IBOutlet UITextField *champLigne6;
    	IBOutlet UITextField *champLigne7;
    	IBOutlet UITextField *champLigne8;
     
    - (IBAction)BTEcrirePage;
    dans mon .m de mon AppDelegate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    - (IBAction)BTEcrirePage;{
    	//recupere la valeur des champ de texte
    	ligne1=[champLigne1 text];
    	ligne2=[champLigne2 text];
    	ligne3=[champLigne3 text];
    	ligne4=[champLigne4 text];
    	ligne5=[champLigne5 text];
    	ligne6=[champLigne6 text];
    	ligne7=[champLigne7 text];
    	ligne8=[champLigne8 text];
     
    	[cmdAfficheur ecrirePage:ligne1 withChmp2:ligne2 withChmp3:ligne3 withChmp4:ligne4 withChmp5:ligne5 withChmp6:ligne6 withChmp7:ligne7 withChmp8:ligne8]; //envoi du contenu a CAfficheur
    }
    dans ma classe CAfficheur.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    NSString *ligne1Afficheur;
    	NSString *ligne2Afficheur;
    	NSString *ligne3Afficheur;
    	NSString *ligne4Afficheur;
    	NSString *ligne5Afficheur;
    	NSString *ligne6Afficheur;
    	NSString *ligne7Afficheur;
    	NSString *ligne8Afficheur;
     
    - (void) ecrirePage:(NSString *)l1 withChmp2:(NSString *)l2 withChmp3:(NSString *)l3 withChmp4:(NSString *)l4 withChmp5:(NSString *)l5 withChmp6:(NSString *)l6 withChmp7:(NSString *)l7 withChmp8:(NSString *)l8;
    dans mon CAfficheur.m
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    - (void) ecrirePage:(NSString *)l1 withChmp2:(NSString *)l2 withChmp3:(NSString *)l3 withChmp4:(NSString *)l4 withChmp5:(NSString *)l5 withChmp6:(NSString *)l6 withChmp7:(NSString *)l7 withChmp8:(NSString *)l8 {
     
    	//récupère le contenu des champs remplis par l'utilisateur
    	ligne1Afficheur=l1;
    	ligne2Afficheur=l2;
    	ligne3Afficheur=l3;
    	ligne4Afficheur=l4;
    	ligne5Afficheur=l5;
    	ligne6Afficheur=l6;
    	ligne7Afficheur=l7;
    	ligne8Afficheur=l8;
    Ce code doit me permettre de récupérer le contenu rentrer par l'utilisateur, puis de les envoyés via une trame.
    J'aimerais avoir des indications, pour créer ses objets en passant par un tableaux, pour optimiser et utiliser au mieux mon code.
    J'ai beau regarder, je sais qu'il faut utiliser la classe NSArray, mais je n'y parvient vraiment pas..

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pour les tableaux c'est bon finalement, j'ai reussi a faire fonctionner

Discussions similaires

  1. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/05/2010, 23h17
  2. Insérer une image dans une trame
    Par mugexeus dans le forum Scheme
    Réponses: 2
    Dernier message: 06/01/2007, 09h23
  3. [OpenGL] Copier l'écran dans une image
    Par lXT95l dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/01/2007, 23h34
  4. Copier un formulaire dans une autre base
    Par Bercud dans le forum IHM
    Réponses: 2
    Dernier message: 08/06/2006, 12h15
  5. Copier un fichier dans une chaine
    Par Fry dans le forum C++
    Réponses: 4
    Dernier message: 30/09/2005, 00h02

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