This page has been translated from Italian
Janvier
08

La structure du fichier. NET Mobile Radio

| Nessun commento | TrackBack | | | Pas de commentaire | TrackBack |
una stelladue stelletre stellequattro stellecinque stelle (Noter cet article!)
Loading ... Chargement en cours ...

Les résultats de samedi après-midi passé à étudier la structure du fichier binaire. Logiciel de simulation net de propagation des ondes électromagnétiques Mobile Radio dans laquelle tous les points sont jointes et les caractéristiques électromagnétiques de chaque appareil, qui sont ensuite utilisés par ce logiciel pour générer des simulations de la couverture.

Pour cette étude, j'ai utilisé un fichier binaire comme le regardant avec un xxd et un fichier. bas Visual Basic qui est sur le forum de support du programme.

Malheureusement le fichier. Références de fichier Bas. Net version 2000 et 3000 tandis que les fichiers générés par les dernières versions de Mobile Radio numéro de version voir 4000.

J'écris ici mes conclusions et les parties encore inconnues, qui je l'espère éventuellement à combler.

Le fichier commence par une entête de la trame se compose de 10 octets

  # Header STRUCTURE - Len 10 octets
 # VERSION ([f] en simple précision float - VB type Single - 4 octets)
 # Éléments de réseau ([s] a signé court - VB type Integer - 2 octets)
 # Éléments unitaires ([s] a signé court - VB type Integer - 2 octets)
 # Éléments du système ([s] a signé court - VB type Integer - 2 octets) 

où, d'ailleurs, j'ai transcrit la structure comme le montrent les travaux pack / unpack de Perl et, plus tard, comme on le voit à partir de Visual Basic.

En utilisant le code un peu ", et en particulier ces lignes

  mon HeaderLen $ = 10;
 my $ HeaderPack = 'FSSS;
 my @ HeaderItems = qw / systemCount unitCount version networkCount /;
 struct (headertype => {{map $ _ => '$' HeaderItems @}});
 # Déballer et lire l'en-tête
 my @ struct = unpack ($ HeaderPack, $ f-> get_bytes (HeaderLen $));
 ma tête = $ headertype nouvelles ($ map HeaderItems {[$ _] => $ struct [$_]} (0 .. @ HeaderItems-1));
 Imprimer Data:: Dumper:: Dumper ($ headers); 

où $ f est un objet de la classe File:: binaire dans un fichier. pointage net ouvert pour la lecture, on obtient l'auto-explicative structure suivante

  VAR1 = $ bénisse ({
  «Headertype: systemCount '=> 25,
  «Headertype:: version '=> '4000',
  «Headertype: unitCount '=> 200,
  «Headertype: networkCount '=> 50
  }, 'Headertype'); 

en indiquant précisément le numéro de version et l'espace alloué pour le réseau et de s'en servir, les points (unité) et les types de systèmes (système) pris en charge sur ce dossier. net.

Continuer la lecture du fichier binaire, immédiatement après, est répétée autant de fois qu'il ya un certain nombre de points dans le fichier, la structure suivante 44 octets de long

  # UNITE STRUCTURE - Len 44 bytes </ pre>
 # LON ([f] en simple précision float - VB type Single - 4 octets)
 # LAT ([f] en simple précision float - VB type Single - 4 octets)
 # H ([f] en simple précision float - VB type Single - 4 octets)
 PERMIS # ([s] a signé court - VB type Integer - 2 octets)
 TRANSPARENT # ([s] a signé court - VB type Integer - 2 octets)
 # ForeColor ([l] a signé de long - VB type Integer - 4 octets)
 # BackColor ([l] a signé de long - VB type Integer - 4 octets)
 # NOM ([A] ASCII string - VB String * 20 à 20 octets) 

suit alors la définition du système, avec la structure suivante, 50 octets de long

  # Structure du système - Len 50 octets
 # TX ([f] en simple précision float - VB type Single - 4 octets)
 # RX ([f] en simple précision float - VB type Single - 4 octets)
 # PERTE ([f] en simple précision float - VB type Single - 4 octets)
 # ANT ([f] en simple précision float - VB type Single - 4 octets)
 # H ([f] en simple précision float - VB type Single - 4 octets)
 # NOM ([A] ASCII string - VB String * 30 à 30 octets) 

répété de nombreuses fois par le nombre de système défini dans l'en-tête.

Après ce dossier, le. Bas signalé structures de forme d'une matrice à deux dimensions d'octets de taille égale au produit du nombre d'unités et les réseaux. Moi, je trouve plutôt que, comme 4000, trois. Le fichier VB identifie le premier et le deuxième comme net_system net_role. Probablement qui identifie chaque unité de réseau se trouve et qui système radio. Évidemment, il doit être étudiée.

Puis vint la création de réseaux avec une structure de 72 octets

 # NET STRUCTURE - 72 octets # MINFX Len ([f] en simple précision float - VB type Single - 4 octets), # MAXFX ([f] en simple précision float - type VB simples - 4 octets), # POL ([s ] signé à court - VB type Integer - 2 octets), EPS # ([] f simple précision float - type VB simples - 4 octets), # SGM ([] f simple précision float - VB type Single - 4 octets) # ENS ([f] en simple précision float - VB type Single - 4 octets), # CLIMATIQUES ([s] a signé court - VB type Integer - 2 octets), # MDVAR ([s] a signé court - VB type Integer - 2 octets) # TIME ([f] en simple précision float - VB type Single - 4 octets), # LIEU ([f] en simple précision float - VB type Single - 4 octets), # Emplacement ([f] en simple précision float - type VB simples - 4 octets), # HOUBLON ([s] a signé court - VB type Integer - 2 octets) # topologie ([s] a signé court - VB type Integer - 2 octets), # NOM ([A] chaîne de caractères ASCII - VB String * 30 à 30 octets) 

répété de nombreuses fois pour les réseaux sont définis dans l'en-tête.

Vient ensuite une structure appelée la couverture qui contient essentiellement les paramètres de la fenêtre "Single Polar couverture radio" Radio Mobile.

La structure, 74-octet est constitué de sorte

 # COUVERTURE STRUCTURE - 74 octets # DMAX Len ([f] en simple précision float - VB type Single - 4 octets), # THMIN ([f] en simple précision float - type VB simples - 4 octets), # THMAX ([f ] flottant simple précision - type VB simples - 4 octets), # THINC ([] f simple précision float - VB type Single - 4 octets), # ANTAZT ([] f simple précision float - VB type Single - 4 octets ) # FILE ([A] ASCII string - VB String * 20 à 20 octets) # Seuil ([s] a signé court - VB type Integer - 2 octets), # NIVEAU ([f] en simple précision float - VB unique Type - 4 octets), ZONE # ([S] unsigned short - VB Boolean - 2 octets, je ne bool) # CARE ([l] a signé de long - VB type Integer - 4 octets), # CONTOUR ([S] unsigned short - VB Boolean - 2 octets) # CCONTOUR ([l] a signé de long - VB type Integer - 4 octets), # VHS ([f] en simple précision float - type VB simples - 4 octets), # VHT ([f] Singles décimaux - VB type Single - 4 octets), # DMIN ([f] en simple précision float - type VB simples - 4 octets), # VCOL ([l] a signé long - VB type Integer - 4 octets) 

et est probablement ici pour couvrir la gestion des lots . Enfin, après un court-signé de 2 octets à la longueur d'une chaîne qui contient le chemin vers le fichier. Plan qui suit immédiatement après, et après cette chaîne, vous entrez dans une boucle jusqu'à la fin du fichier ou les 2 octets ne sont pas zéro, qui lit un court-signé de 2 octets contenant la longueur de la chaîne qui contient le chemin à côté de chaque image pour ouvrir l'ouverture du fichier. net.

Puis, du moins pour le fichier VB, il ya le chargement d'une seule matrice de taille égale au produit du nombre d'unités et les réseaux, puis une liste qui identifie les icônes de chaque unité, le type et la longueur d'octets égal au nombre d'unités et, enfin, le type lineLossPerMeter unique, de longueur égale à la système de numération.

Le problème avec cette dernière partie, c'est que, en dehors de ne pas avoir des structures bien identifiées, et c'est à faire, mais le fait est que, alors que le fichier VB, le fichier. Net devrait être fait, en réalité, il les autres choses, y compris un chemin difficile à déposer landheight.dat stuff obsoleda qui semble bien.

Il doit encore être étudiée, mais évidemment, si quelqu'un en sait plus que moi, laissez-lui de venir.

Tags
  • Partagez
Imprimer cet article
Cet article a été lu 69 fois

Laissez un commentaire