Auteur Sujet: Projet partagé d'un gestionnaire de réseau  (Lu 301092 fois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 367
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #525 le: avril 10, 2025, 05:59:17 pm »

Oui, lis le Json et essaie extraire toutce qui est nécessaire pour instancier les zones, puis les autres (aiguilles, signaux, …).

Je ne vois pas trop l'utilité du TCO pour l'instant.

Bon courage

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #526 le: avril 10, 2025, 06:05:10 pm »
Je suis d'accord qu'on n'a pas l'utilité du TCO pour l'instant.
Je l'ai dessiné dans l'éditeur , en 2 versions (Une pour vérifier les infos et une pour m'en servir dans le gestionnaire.

Je lis un répertoire dans lequel des fichiers sont identifiés (dont le JSON et le TCO), alors je lis tout.
Mais je ne ferai rien avec le TCO pour l'instant, évidemment.

Merci pour ton aide

Denis :P
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #527 le: avril 14, 2025, 02:42:51 pm »
Bonjour,

Je viens de démarrer la lecture du JSON et les ennuis commencent...

println("LECTURE");
json=loadJSONObject("data.json");
if (json==null) { println("lecture ratee "); exit(); }
println(json); // affichage de tout
println("FIN LECTURE");

J'ai vu qu'il n'aimait pas l'adressage absolu. Il ne veut même pas d'un répertoire "data".
Aussi j'ai fait dans le simple : j'ai mis le fichier directement avec les .pde et appelé "data.json", comme dans l'exemple de Processing, en attendant mieux.

Et j'ai une réponse que je ne comprends pas :

LECTURE
RuntimeException: Expected a ',' or ']'

Pour le "LECTURE", c'est tout à fait normal, mais l'autre message...
Sachant que le JSON doit être à l'extérieur du programme, j'y tiens.

Pour info, l'exemple de Processing :

 void loadData() {
  // Load JSON file
  // Temporary full path until path problem resolved.
  json = loadJSONObject("data.json");
....

Par avance, merci
Denis  :P
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

MCPA

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #528 le: avril 14, 2025, 02:55:57 pm »
Bonjour,

Peut-être un problème avec le fichier JSON. Il existe des vérificateurs en ligne tel que celui-ci

Vérificateur

Il suffit de faire un copier-coller du contenu de votre fichier JSON et de cliquer sur Validate JSON. En cas d'erreur il vous indiquera où se trouve l'erreur

Philippe


DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #529 le: avril 14, 2025, 03:12:11 pm »
Merci beaucoup Philippe,

Je croyais que l'erreur était dans la recherche du fichier. Mais non, c'est dans le JSON. Dans un sens, je préfère...

Denis :P

"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

MCPA

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #530 le: avril 14, 2025, 03:17:23 pm »
Content d'avoir pu vous aider.

Philippe

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #531 le: avril 14, 2025, 03:27:51 pm »
Voilà ce qu'il trouve comme erreur :
            "A0" : {
                    "nom" : "A0",
                    "voisP" : "C29",
                    "voisI" : [["C28","a0","gauche","999""],["A1","a0","droite","999""]],
                    "no" : 11

:
Il n'aime pas les [[. OK, mais comment fait-on une ArrayList d'ArrayList ?

Lecture :
zone A0
Le voisin pair, c'est C29
Le voisin impair, c'est C28 si l'aiguille a0 est à gauche et A1 si l'aiguille a0 est à droite.
Les 999, ce sont les longueurs par défaut. On n'en est pas là...

« Modifié: avril 14, 2025, 03:45:47 pm par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 367
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #532 le: avril 14, 2025, 04:34:45 pm »

Cette écriture n'est pas correcte : "999""

Tu pourrais publier le fichier Json ?

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #533 le: avril 14, 2025, 04:49:43 pm »
Bonjour,

Voilà mon fichier pour mon réseau d'essai (moins gros que Luzy)

Denis :P
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #534 le: avril 14, 2025, 05:03:15 pm »
En fait, il traine de-ci de-là quelques bugs dans le JSON.
"999"", quelques virgules, dans les triples,....
Le vérificateur est très bien, on ne loupe rien.
il faut que je revérifie l'éditeur.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #535 le: avril 14, 2025, 07:49:57 pm »
Et voilà, la chasse aux bugs est terminée et j'ai la validation du JSON.

Merci beaucoup à Philippe pour ce site qui traque les bugs des JSON ;)

Quand je lance dans mon gestionnaire, la lecture est OK, affichage de tout le JSON.
Bon, ça plante un peu plus loin, mais on verra demain.

Merci aussi à Pierre pour son programme.

A suivre
Denis  :P

"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #536 le: avril 15, 2025, 08:19:33 pm »
Bonsoir,

Il restait des bugs (erreurs de saisie dans les infos, bugs du programme, ...)
Maintenant, tous les JSON ont été vérifiés, validés par le site.

Vous verrez le réseau de Dominique, mes 2 réseaux d'essai et Luzy dans les PJ.

Le programme de gestion lit bien le JSON, l'affiche et se bloque dans l'initialisation.
J'ai retiré pas mal de choses dans le gestionnaire de Pierre pour ne tester que la récupération de données. J'ai certainement été trop violent  ::)

Hors JSON, je récupère le TCO (les droites seulement, pour l'instant)
Enfin, les fichiers à lire sont tous au même endroit. Ceux qui servent sont : JSON.json, TCO_G.tsv, TCO_A.tsv, TCO_S.tsv. Les autres n'ont aucune utilité, sauf en développement. Je les supprimerai bientôt.

A suivre
Denis :P
« Modifié: avril 16, 2025, 07:33:12 am par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3142
  • 100% Arduino et N
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #537 le: avril 15, 2025, 09:39:58 pm »
Merci Denis et Pierre.
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 803
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #538 le: avril 16, 2025, 12:25:40 pm »
Bonjour à tous,

J'ai progressé, en ce sens que j'affiche maintenant le JSON complet, les clés et les valeurs.
Je n'ai pas encore compris ce qu'il considère comme des clés et comme valeurs...  ???

Puis il part dans l'initialisation et tourne en rond.
Il manque des choses ?

L'état actuel en PJ

Voici ce qu'il trouve :

LECTURE
FIN LECTURE
cles = "Z18" "Z17" "Cv3" "Cv6" "Z19" "Cv8" "Cv7" "Z21" "Z20" "Z25" "Z24" "Z27" "Z26" "Z29" "Z28" "a51/1" "a51/0" "Cv21" "Z30" "Cv25" "Z32" "Z31" "Z34" "Cv29" "Z33" "Z36" "Z35" "Z38" "S1" "Z37" "S2" "a11" "S3" "a10" "Z39" "S4" "a13" "S5" "a12" "S6" "a15" "S7" "a14" "S8" "Bs19" "a17" "Bs18" "a16" "a19" "Bs16" "a18" "Bs14" "Bs12" "C1" "Bs10" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "Z41" "C9" "Z40" "Z43" "Z42" "Z45" "Z46" "a20" "Bs29" "Bs28" "Bs27" "Bs26" "Bs25" "Bs24" "Bs23" "Bs22" "Bs21" "Bs20" "Z500" "Z52" "Z51" "Z54" "Z53" "Bs38" "Bs36" "Bs35" "Bs34" "Br11" "Bs32" "Br10" "Bs31" "Bs30" "Z61" "Z60" "Z63" "Z62" "Z65" "Bb17" "Z64" "Bb15" "Z66" "Cvi1" "Bb13" "Cvi4" "Bb11" "Cvi5" "signI" "Bs48" "zones" "Bs46" "Bs45" "Bs44" "Bs43" "Bs42" "Bs41" "Bs40" "Z70" "Z400" "Z71" "signP" "a53" "a52" "perm" "panneau" "Bs59" "Bs58" "Bs57" "nom" "Bs56" "Bs55" "Bs54" "Bs53" "Bs52" "Bs50" "Bb39" "a60" "Bb37" "a62" "a61" "a64" "Bb33" "a63" "Bb51" "Cvi9" "super_appareils" "Bs65" "Bs63" "parite" "Bs61" "Bs60" "Bb49" "a71" "a70" "Bb47" "type" "Cvi23" "Cvi22" "Cvi20" "Z0" "Z1" "Z2" "Z3" "appareils" "Z4" "Z5" "Z6" "Cvi27" "Z7" "Z8" "Z9" "balises" "params" "Cvi12" "Cvi19" "Cvi17" "Cvi16" "Cvi14" "Z230" "Z231" "max" "bretelles" "Z221" "Z220" "signaux" "C11" "C10" "C13" "liste" "C12" "C15" "C14" "C17" "C16" "positions" "C19" "C18" "S10" "voisI" "S12" "transit" "S14" "S16" "position" "S18" "voisP" "Br1" "C20" "Br0" "no" "Br3" "C22" "Br2" "C21" "Br5" "Br4" "Br7" "Br6" "Br9" "Br8" "balP" "S20" "Cv10" "S22" "Cv11" "Cv13" "Cv15" "Cv18" "Bs2" "Bs1" "Bs4" "Bs3" "Bs6" "Bs5" "Bs8" "Bs7" "Bs9" "Su1" "a0" "a1" "Su3" "a2" "Su2" "balI" "Su5" "a4" "Su4" "a5" "Su7" "a6" "Su6" "a7" "a8" "a9" "Z10" "Z12" "Z11" "Z14" "Z13" "Z16" "Cv2" "Z15"

vals =  "Z18" "Z17" "Cv3" "Cv6" "Z19" "Cv8" "Cv7" "Z21" "Z20" "Z25" "Z24" "Z27" "Z26" "Z29" "Z28" "-" "a51/1" "0" "a51/0" "Cv21" "Z30" "Cv25" "Z32" "921" "Z31" "Z34" "Cv29" "Z33" "Z36" "Z35" "Z38" "S1" "S2" "Z37" "a11" "S3" "a10" "S4" "Z39" "A" "a13" "S5" "B" "a12" "S6" "a15" "S7" "a14" "S8" "E" "Bs19" "a17" "a16" "Bs18" "G" "a19" "Bs16" "a18" "Bs14" "Br11-" "Bs12" "C1" "Bs10" "C2" "C3" "C4" "C5" "C6" "499" "C7" "butoir" "C8" "Z41" "C9" "Z40" "CVi" "Z43" "Z42" "RR30, " "Z45" "Z46" "a20" "Bs29" "Bs28" "Bs27" "Bs26" "Bs25" "Bs24" "Bs23" "Bs22" "Bs21" "Bs20" "Z500" "Br0-" "Z52" "Z51" "Z54" "Z53" "M, " "VL, " "Bs38" "Bs36" "Bs35" "Bs34" "Br11" "Bs32" "Br10" "Bs31" "Bs30" "Br1-" "Cv" "Z61" "Z60" "Z63" "Z62" "Z65" "Bb17" "Z64" "TripleSDa" "Bb15" "TripleSDb" "Cvi1" "Z66" "signal" "Bb13" "Cvi4" "Bb11" "Cvi5" "Br10-" "Bs48" "Bs46" "Bs45" "Bs44" "Bs43" "Bs42" "Bs41" "Bs40" "Z70" "Z400" "Z71" "a53" "a52" "Bs59" "Bs58" "Bs57" "Bs56" "Bs55" "Bs54" "Bs53" "Bs52" "Bs50" "Br3-" "Bb39" "a60" "Bb37" "a62" "a61" "a64" "a63" "Bb33" "Bb51" "Cvi9" "Bs65" "Bs63" "Bs61" "Bs60" " R30, " "C, " "Cv sol, G" "a71" "Bb49" "a70" "Bb47" "S, " "Cvi23" "Cvi22" "Cvi20" "Z0" "Z1" "Br5-" "Z2" "aiguilleG" "999" "Z3" "Z4" "Z5" "Z6" "Cvi27" "Z7" "aiguilleD" "Z8" "Z9" "souple" "Cvi12" "Cvi19" "Cvi17" "Cvi16" "Cvi14" "oui" "Br7-" "Z230" "Z231" "RR60, " "Cv, " "A, " "Br8-" "Z221" "Z220" "Br9-" "C11" "C10" "C13" "C12" "C15" "C14" "C17" "C16" "C19" "C18" "TJDb" "S10" "TJDa" "S12" "S14" "S16" "S18" "Br1" "C20" "Br0" "traversee simple" "Br3" "C22" "Br2" "C21" "Br5" "Br4" "Br7" "Br6" "Br9" "Br8" "S20" "S22" "Cv10" "Cv11" "Cv13" "Cv15" " R60, " "Cv18" "Bs2" "Bs1" "Bs4" "Bs3" "Bs6" "Bs5" "Bs8" "Bs7" "Bs9" "Su1" "a0" "a1" "Su3" "a2" "Su2" "Su5" "a4" "Su4" "a5" "Su7" "a6" "Su6" "a7" "a8" "a9" "Z10" "Z12" "902" "Z11" "Z14" "903" "904" "Z13" "Z16" "Cv2" "Z15"

zones = [Z18, Z17, Z19, Z61, Z60, Z0, Z63, Z1, Z62, Z2, Z21, Z65, Z3, Z20, Z64, Z4, Z5, Z66, Z6, Z25, Z7, Z24, Z8, Z27, Z9, Z26, Z29, Z28, Z70, Z400, Z71, Z30, Z32, Z31, Z34, Z33, Z36, Z35, Z38, Z37, Z39, Z41, Z40, Z43, Z42, Z45, Z230, Z46, Z231, Z500, Z52, Z51, Z10, Z54, Z53, Z12, Z11, Z14, Z13, Z16, Z221, Z15, Z220]

Premier constat : malgré de gros efforts pour trier les infos, là c'est c'est le chantier... Drôle d'idée.
En lisant bien, je vois que les clés sont ce qui précède les ":". Je pense qu'il y a toutes les occurences.
Quant aux valeurs, là si c'est la liste de toutes les valeurs, il en manque plein ("gauche", par exemple)

Je regarde internet pour essayer de comprendre comment on en tire des objets.

A suivre
Denis :P
« Modifié: avril 16, 2025, 01:45:42 pm par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 367
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #539 le: avril 16, 2025, 02:44:16 pm »

Un JsonObject est un ensemble de clé/valeur, en fournissant la clé on peut obtenir la valeur, si la clé n'existe pas on peut avoir une valeur par défaut.

C'est pas plus compliqué que cela, et faut pas chercher plus loin.

Il va falloir choisir : soit on utilise le json comme structure de donnée comme dans GestJ3, soit on instancie tous les objets trouvés dans le fichier Json et on se sert de ces objets comme structure de donnée avec une vraie programmation objet proche des articles rédactionnels du gestionnaire en C++.

Pierre