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

JavaScript Discussion :

Spliter et formater des messages en évitant le bouclage (Node-Red)


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Spliter et formater des messages en évitant le bouclage (Node-Red)
    Bjr,
    J'ai besoin d'aide concernant le split et le formatage de 2 messages js, le second msg incluant le premier

    Le problème : le second message fait 1 boucle, dès lors qu'il inclut le premier message. Je n'arrive pas à trouver de solution pour stopper cette erreur. Évidemment, pour corser le tout, les strings sont de qté variable... Je ne peux donc pas utiliser de séparateurs qui comptent pour splitter.

    msg 0 : IWAP02,zh_cn,0,7,460,0,9520|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7#

    ici, split et formatage sont parfaits, qd le msg 0 est exécuté, seul :

    460,0,9520,3671
    460,0,9520,3672
    460,0,9520,3673
    460,0,9520,3674
    460,0,9520,3675
    460,0,9520,3676
    460,0,9520,3677


    js message 0 :

    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
    //Prepare JS object and fill out fields before conversion to XML
     
    var LocationRQ = {"$":{"xmlns":"http://skyhookwireless.com/wps/2005","version":"2.26","street-address-lookup":"full"},"authentication":[{"$":{"version":"2.2"},"key":[{"$":{"key":"XYXYXXYXYXYXYXYXYXYXXYXYXYXYYXYXYXXY","username":"ABABABABABABABABAAB"}}]}],"gsm-tower":[]}
     
     
    // IWAP02,zh_cn,0,7,226,10,1440|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7#
     
    let elements = msg.elements; 
    LocationRQ.flag = msg.flag; // true or false - A or V
    LocationRQ.gsmTowerStrings = msg.gsmTowerStrings
     
    // Get LBS datas
    let i;
    let gsmTowerStrings = LocationRQ.gsmTowerStrings;
    let j;
    let gsmTower = [];
    for (j = 6; j < msg.elements.length; j++) {
     let spl = msg.elements[j].split("|")
     gsmTower.push({ mcc: msg.mmc, mnc: msg.mnc, lac: spl[0], ci: spl[1] }) // 460,0,9520|3671|
    }
    // adjust baseCountgsmTower just in case the number actually there didn't match that expexted
    LocationRQ.baseCountgsmTower = gsmTower.length
    LocationRQ["gsm-tower"] = gsmTower;
     
    msg.payload = {LocationRQ: LocationRQ};
    return msg


    message 1 :

    IWAP02,zh_cn,1,[B]7,460,0,9520|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7,4,1|D8-24-BD-79-FA-1F|59&2|3C-46-D8-6D-CE-01|81&3|0C-4C-39-1A-7C-65|69&4|70-A8-E3-5D-D7-C0|65#

    Ici, qd on associe les 2 commandes dans un même function node... y a systématiquement une boucle qui se crée :

    460,0,9520,3671
    460,0,9520,3672
    460,0,9520,3673
    460,0,9520,3674
    460,0,9520,3675
    460,0,9520,3676
    460,0,9520,3677
    460,0,4 <= la boucle commence ici. Normalement, je ne devrai trouver que 11 objets (7 gsmTower + 4 ap) mais j'en ai 13 au final...
    460,0,1 <= end ...


    js message 1 :

    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
    //Prepare JS object and fill out fields before conversion to XML
     
    var LocationRQ = {"$":{"xmlns":"http://skyhookwireless.com/wps/2005","version":"2.26","street-address-lookup":"full"},"authentication":[{"$":{"version":"2.2"},"key":[{"$":{"key":"XYXYXXYXYXYXYXYXYXYXXYXYXYXYYXYXYXXY","username":"ABABABABABABABABAAB"}}]}],"access-point":[],"gsm-tower":[]}
     
     
    // flag = 1
    // IWAP02,zh_cn,1,7,460,0,9520|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7,    4,1|D8-24-BD-79-FA-1F|59&2|3C-46-D8-6D-CE-01|81&3|0C-4C-39-1A-7C-65|69&4|70-A8-E3-5D-D7-C0|65#
     
    let elements = msg.elements; 
    LocationRQ.flag = msg.flag; // 0 or 1
    LocationRQ.gsmTowerStrings = msg.gsmTowerStrings
     
    // Get LBS datas
    let i;
    let gsmTowerStrings = LocationRQ.gsmTowerStrings;
    let j;
    let gsmTower = [];
    for (j = 6; j < msg.elements.length; j++) {
     let spl = msg.elements[j].split("|")
     gsmTower.push({ mcc: msg.mmc, mnc: msg.mnc, lac: spl[0], ci: spl[1] }) // 460,0,9520|3671|
    }
    // adjust baseCountgsmTower just in case the number actually there didn't match that expexted
    LocationRQ.baseCountgsmTower = gsmTower.length
    LocationRQ["gsm-tower"] = gsmTower;
     
    // Get WIFI datas 
    let k;
    let wifiAccessPointsStrings = elements[14].split("&");
    let l;
    let ap = [];
    for (l = 0; l < wifiAccessPointsStrings.length; l++) {
     let baseElements = wifiAccessPointsStrings[l].split("|")
     ap.push({ mac: baseElements[1].replace(/:/g,""), ssid: baseElements[0], ["signal-strength"]: baseElements[2] }) 
    }
    // adjust baseCountwifiAccessPoints just in case the number actually there didn't match that expexted
    LocationRQ.baseCountwifiAccessPoints = ap.length
    LocationRQ["access-point"] = ap;
     
     
    msg.payload = {LocationRQ: LocationRQ};
    return msg

    Merci d'avance de votre aide... et de ne ne pas me renvoyer vers les grand chapitres du codage js... c'est déjà lu, et mon salut c'est ici, tout de suite... et maintenant!

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Tout ça n’est pas très clair… Qu’est-ce que tu veux dire par « le second message inclut le premier message » ?

    Et ces messages en IWAP, ça m’évoque vaguement du NMEA mais ça n’en est pas. C’est quoi comme protocole ? Tu n’as pas une grammaire ou un analyseur fourni avec ?

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    à voir si ta solution ne se trouverait pas dans cette discussion récente : Splitter suivant plusieurs critères.

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Points : 2
    Points
    2
    Par défaut C'est un autre protocole...
    Citation Envoyé par Watilin Voir le message
    Tout ça n’est pas très clair… Qu’est-ce que tu veux dire par « le second message inclut le premier message » ?

    Et ces messages en IWAP, ça m’évoque vaguement du NMEA mais ça n’en est pas. C’est quoi comme protocole ? Tu n’as pas une grammaire ou un analyseur fourni avec ?


    Bonjour,
    ce n'est pas du NMEA, il existe environ 150 protocoles différents. J'ai toute la grammaire pour coder, décoder... mais le sujet est le split et le formatage en js, sous Node-Red.

    A bientôt...

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Points : 2
    Points
    2
    Par défaut You are the king ! On est au moins 2 à utiliser le même appareil... :)
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    à voir si ta solution ne se trouverait pas dans cette discussion récente : Splitter suivant plusieurs critères.

    That's the answer!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/11/2012, 15h12
  2. Réponses: 10
    Dernier message: 06/05/2010, 20h51
  3. [Pilotage d'Excel]Comment définir les formats des cellules
    Par Masmeta dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/04/2008, 18h34
  4. Comment imposer le format des dates ?
    Par Arfigado dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 05/09/2006, 18h51
  5. Comment vider la pile des Messages ?
    Par monnoliv dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/07/2004, 11h16

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