Plik VI to kontener tzw. zasobów (Resources). Zasoby są identyfikowane 4-bajtowym identyfikatorem.
Na przykład Front Panel jest zapisany w zasobie FPHP, FPHb lub FPHc , zależnie od wersji. Albo w FPHX jeśli w Nedzie włączymy zapis do formatu XML.
Z innych zasobów jest tam lista typów danych (VCTP) oraz domyślne wartości wypełniające te typy (DFDS).
W każdym pliku VI znajduje się pewien konkretny typ - tablica 51 liczb całkowitych, i sekcja DFDS zawiera 51 wartości go wypełniających.
No i tak dobrnęliśmy do mojego pytania: ktoś wie może co oznaczają te wartości? To ewidentnie różne opcje programu oraz ilości i offsety różnych elementów w pliku; chciałbym znać tu jednak szczegóły - co każda z nich oznacza?
Na przykład wartość 12 zawiera "nConnectorPorts" - ilość konektorów który ma nasz instrument, ze względu na wybraną ikonkę konektorów w prawym górnym rogu. Znam jeszcze kilka, ale nie znam wszystkich.
Wartości można obejrzeć w Nedzie, ale nie mają tam nazw tekstowych czy opisów.
Format plików VI/RSRC i lista 51 wartości
-
- Posty: 12
- Rejestracja: 11 maja 2020 16:00
- Wersja środowiska: LabVIEW 2014
Re: Format plików VI/RSRC i lista 51 wartości
Głęboko zabrnąłeś!
Chcesz znać odpowiedzi - zapytaj u źródła. Strzelam, że Stephen Loftus-Mercer (Aristos Queue na niforums lub @AristosQ na tweeterze) będzie dobrym adresatem.
Mały szkopuł przez internet będzie raczej ciężko. Najlepiej to zrobić osobiście
Chcesz znać odpowiedzi - zapytaj u źródła. Strzelam, że Stephen Loftus-Mercer (Aristos Queue na niforums lub @AristosQ na tweeterze) będzie dobrym adresatem.
Mały szkopuł przez internet będzie raczej ciężko. Najlepiej to zrobić osobiście
-
- Posty: 12
- Rejestracja: 11 maja 2020 16:00
- Wersja środowiska: LabVIEW 2014
Re: Format plików VI/RSRC i lista 51 wartości
Pytałem. Chyba w NI się boją takich co za głęboko brną. Sam bym sobie sprawdził, ale nie mam binarek z wystarczającą ilością symboli.
-
- Posty: 12
- Rejestracja: 11 maja 2020 16:00
- Wersja środowiska: LabVIEW 2014
Re: Format plików VI/RSRC i lista 51 wartości
Już sobie poradziłem. Jakby ktoś był ciekaw:
Kod: Zaznacz cały
nHiliteTableEntries = 0,
hiliteTableOffset = 1,
hiliteTableTMI = 2,
nProbeTableEntries = 3,
probeTableOffset = 4,
probeTableTMI = 5,
nDCOs = 6,
fpdcoTableOfst = 7,
fpdcoTableTMI = 8,
nClumpQEs = 9,
clumpQEAllocOffset = 10,
clumpQEAllocTMI = 11,
nConnections = 12,
viParamTableOffset = 13,
viParamTableTMI = 14,
nExtraDCOInfoEntries = 15,
extraDCOInfoOffset = 16,
extraDCOInfoTMI = 17,
nLocalInputConnections = 18,
localInputConnIdxOffset = 19,
localInputConnIdxTMI = 20,
nNonLocalInputConnections = 21,
nonLocalInputConnIdxOffset = 22,
nCondIndicators = 23,
condIndIdxOffset = 24,
nOutputConnections = 25,
nOutPutLocalGlobals = 26,
outputConnIdxOffset = 27,
nInputConnections = 28,
inputConnIdxOffset = 29,
numInternalHiliteTableEntries = 30,
internalHiliteTableHandleAndPtrTMI = 31,
nSyncDisplays = 32,
syncDisplayIdxOffset = 33,
nSubVIPatches = 34,
subVIPatchTagsTMI = 35,
subVIPatchTMI = 36,
enpdTdOffsetsDso = 37,
enpdTdOffsetsTMI = 38,
nDDOs = 39,
spDDOTableOffset = 40,
spDDOTableTMI = 41,
nStepIntoNodes = 42,
stepIntoNodeIdxTableOffset = 43,
stepIntoNodeIdxTableTMI = 44,
hiliteIdxTableTMI = 45,
numGeneratedCodeProfileResultTableEntries = 46,
generatedCodeProfileResultTableTMI = 47,
lReRunPCOffset = 48,
lResumePCOffset = 49,
lRetryPCOffset = 50,