2012. szeptember 17., hétfő

MMCARC fájl struktúra

Hosszas próbálkozás után sikeresen kiderült a Siemens SE520 CNC -ből kinyerhető arhívum felépítése.
Az alábbiak saját nyomozás eredményei. Teszteltem az említett CNC-ben, ahol működött is, de ez nem garancia arra, hogy máshol is fog. A leírás inkább csak iránymutatás.

A bináris fájl a következő fájl azonosítóval kezdődik:

40 40 4D 4D 43 41 52 43 2E 30 30 30          (@@MMCARC.000)

A fájl 512 byte-os darabokból áll. Ahol az adatok mérete nem éri el az 512 byte-ot (vagy annak többszörösét), ott 0x00 karakterrel van kitöltve a fennmaradó hely.
Az első darab minden esetben a fájl fejléce ami a következő információkat tartalmazza:

Pozíció   Név                           Méret
--------------------------------------------------------
0         azonosító                    14byte
116       szerkesztő program verzió     7byte (nem kötelező)
124       fájl lista mérete            11byte
148       ellenőrző összeg              7byte

A második szakasz a fájl lista, ami az archív fájlok teljes útvonalát és nevét tartalmazza.

Például:
/_N_WKS_DIR/_N_CONTOUR_WPD/_N_MUNKADARAB_MPF

Minden fájlnév a 0x0A (újsor) karakterrel végződik. A lista hossza a fejlécben található.

A fájllistát a fájlok követik. Minden fájlnak van saját fejléce a következők szerint:


Pozíció    Név                          Méret
---------------------------------------------------------
0          fájl neve                  100byte
101        attribútum lista             5byte
125        fájl hossza                 11byte
137        időbélyegző                 11byte
149        ellenőrző összeg             7byte
258        a fájl eredeti könyvtára   255byte

Ezek után következnek a fájl adatok.

Ha esetleg gyártani szeretnénk egy olyan fájlt, amit olvas a CNC, akkor a pontos 512byte -os daraboláson kívül az ellenőrző összeget kell kiszámolni.

Az ellenőrző összeg a fájlban található hexa számok összege.
Például:

@@MMCARC.000=40+40+4D+4D+43+41+52+43+2E+30+30+30=2F1 => 753
00000006877=30+30+30+30+30+30+30+36+38+37+37    =22C => 556
                                                       -----
                                    Ellenőrző összeg =>1309

A fejléc ellenőrző összege a következőkből áll:

azonosító+szerkesztő verzió+fájl lista méret = ellenőrző összeg

A fájl ellenőrző összege:

fájlnév+attribútum lista+fájlhossz+időbélyeg=ellenőrző összeg