This page has been translated from Italian
January
08

File structure. NET Mobile Radio

| Nessun commento | TrackBack | | | No Comments | TrackBack |
una stelladue stelletre stellequattro stellecinque stelle (Rate this article!)
Loading ... Loading ...

The results of a Saturday afternoon spent studying the structure of the binary file. Net software simulation of propagation of electromagnetic waves Mobile Radio in which all points are enclosed and the electromagnetic characteristics of each device that are then used by this software to generate simulations of coverage.

For this study I used a binary file such as looking at him with a xxd and a file. bas Visual Basic which is on the support forum of the program.

Unfortunately the file. Bas file references. Net version 2000 and 3000 while the files generated by the latest versions of Mobile Radio show version number 4000.

I write here my conclusions and the parties still unknown, which I hope eventually to fill.

The file begins with a frame header consists of 10 bytes

  # HEADER STRUCTURE - Len 10 bytes
 # VERSION ([f] single-precision float - VB type Single - 4 bytes)
 # NETWORK ELEMENTS ([s] signed short - VB Integer type - 2 bytes)
 # UNIT ELEMENTS ([s] signed short - VB Integer type - 2 bytes)
 # SYSTEM ELEMENTS ([s] signed short - VB Integer type - 2 bytes) 

where, incidentally, I transcribed the structure as seen from the work pack / unpack of Perl and, later, as seen from the Visual Basic.

Using a bit 'code, and in particular these lines

  my $ HeaderLen = 10;
 my $ HeaderPack = 'fsss';
 my @ HeaderItems = qw / version networkCount unitCount systemCount /;
 struct (HeaderType => {map {$ _ => '$' @ HeaderItems}});
 # Unpack and read the header
 my @ struct = unpack ($ HeaderPack, $ f-> get_bytes ($ HeaderLen));
 my $ header = new HeaderType ($ HeaderItems map {[$ _] => $ struct [$_]} (0 .. @ HeaderItems-1));
 print Data:: Dumper:: Dumper ($ headers); 

where $ f is an object of class File:: Binary pointing to a file. net opened for reading, we obtain the following self-explanatory structure

  $ VAR1 = bless ({
  'HeaderType: systemCount' => 25,
  'HeaderType:: version' => '4000 ',
  'HeaderType: unitCount' => 200,
  'HeaderType: networkCount' => 50
  }, 'HeaderType'); 

indicating precisely the version number and the space allocated for the network and make use of it, the points (unit) and the types of systems (system) supported on this file. net.

Continue reading the binary file, immediately after, is, repeated as many times as there are a number of points in the file, the following structure 44 bytes long

  # UNIT STRUCTURE - Len 44 bytes </ pre>
 # LON ([f] single-precision float - VB type Single - 4 bytes)
 # LAT ([f] single-precision float - VB type Single - 4 bytes)
 # H ([f] single-precision float - VB type Single - 4 bytes)
 ENABLED # ([s] signed short - VB Integer type - 2 bytes)
 TRANSPARENT # ([s] signed short - VB Integer type - 2 bytes)
 # ForeColor ([l] signed long - VB Integer type - 4 bytes)
 # BackColor ([l] signed long - VB Integer type - 4 bytes)
 # NAME ([A] ASCII string - VB String * 20 to 20 bytes) 

then follows the definition of the system, with the following structure, 50 bytes long

  # SYSTEM STRUCTURE - Len 50 bytes
 # TX ([f] single-precision float - VB type Single - 4 bytes)
 # RX ([f] single-precision float - VB type Single - 4 bytes)
 # LOSS ([f] single-precision float - VB type Single - 4 bytes)
 # ANT ([f] single-precision float - VB type Single - 4 bytes)
 # H ([f] single-precision float - VB type Single - 4 bytes)
 # NAME ([A] ASCII string - VB String * 30 - 30 bytes) 

repeated many times by the number of system defined in the header.

After this the file. Bas reported structures of two-dimensional matrix form of bytes of size equal to the product of the number of units and the networks. I, I found instead, as 4000, three. The VB file identifies the first and the second as as net_role net_system. Probably that identifies each network unit is located and which radio system. Obviously it is to be investigated.

Then came the establishment of networks with a structure of 72 bytes

 # NET STRUCTURE - 72 bytes # MINFX Len ([f] single-precision float - VB type Single - 4 bytes), # MAXFX ([f] single-precision float - VB type Single - 4 bytes), # POL ([s ] signed short - VB Integer type - 2 bytes), EPS # ([f] single-precision float - VB type Single - 4 bytes), # SGM ([f] single-precision float - VB type Single - 4 bytes) # ENS ([f] single-precision float - VB type Single - 4 bytes), # CLIMATE ([s] signed short - VB Integer type - 2 bytes), # MDVAR ([s] signed short - VB Integer type - 2 bytes) # TIME ([f] single-precision float - VB type Single - 4 bytes), # LOCATION ([f] single-precision float - VB type Single - 4 bytes), # Location ([f] single-precision float - VB type Single - 4 bytes), # HOPS ([s] signed short - VB Integer type - 2 bytes) # topology ([s] signed short - VB Integer type - 2 bytes), # NAME ([A] ASCII string - VB String * 30 - 30 bytes) 

repeated many times for those networks are defined in the header.

Then follows a structure called Coverage that essentially contains the parameters of the window "Single Polar Radio Coverage" Radio Mobile.

The structure, 74-byte is made so

 # COVERAGE STRUCTURE - 74 bytes # DMAX Len ([f] single-precision float - VB type Single - 4 bytes), # THMIN ([f] single-precision float - VB type Single - 4 bytes), # THMAX ([f ] single-precision float - VB type Single - 4 bytes), # THINC ([f] single-precision float - VB type Single - 4 bytes), # ANTAZT ([f] single-precision float - VB type Single - 4 bytes ) # FILE ([A] ASCII string - VB String * 20 to 20 bytes) # Threshold ([s] signed short - VB Integer type - 2 bytes), # LEVEL ([f] single-precision float - VB Single Type - 4 bytes), AREA # ([S] unsigned short - VB Boolean - 2 bytes, I do not bool) # CARE ([l] signed long - VB Integer type - 4 bytes), # CONTOUR ([S] unsigned short - VB Boolean - 2 bytes) # CCONTOUR ([l] signed long - VB Integer type - 4 bytes), # VHS ([f] single-precision float - VB type Single - 4 bytes), # VHT ([f] Singles float-precision - VB type Single - 4 bytes), # DMIN ([f] single-precision float - VB type Single - 4 bytes), # VCOL ([l] signed long - VB Integer type - 4 bytes) 

and probably is here to cover the management of batch . Finally, following a signed-short of 2 bytes with the length of a string that contains the path to the file. Map that follows immediately after, and after that string, you enter a loop until the file ends or the next 2 bytes are not zero, which reads a signed-short of 2 bytes containing the length of the string that contains the path next to each picture to open when opening the file. net.

Then, at least for the VB file, there is the loading of a single matrix of size equal to the product of the number of units and the networks, then a list that identifies the icons of each unit, byte type and length equal to the number of units and, finally, the single lineLossPerMeter type of length equal to the number system.

The problem with this last part is that, apart from not having well identified structures, and that's to be done, but the fact is that, while the VB file, the file. Net should be done, in reality there the other stuff, including an elusive path to file landheight.dat obsoleda stuff that seems well.

There is yet to be studied but obviously, if someone knows more than me, let him come forth.

Tags
  • Share
Print this article
This article has been viewed 69 times

Leave a comment

Categories