Перед записью указывается ее тип.
Writing TDMS Files
Боюсь что у меня проблема с чтением файлов, а не в записи. Мне предоставят файлы, а я должен построить графики
TDMS File Format
К сожалению я не могу выбирать формат подаваемых мне файлов. Может я чего то не понял, но вы мне предлагаете сначала сохранить в TDMS, чтобы потом пользоваться его инструментами и читать. Верно?
Я думаю должен пояснить, что пытаюсь открыть файлы в формате COMTRADE, стандарта 2013 года. Я знаю что
имеет инструмент для их просмотра, входящий в Electrical Power чего то там, но я так и не смог им воспользоваться-он во первых отказался открывать, а во вторых-вроде он был платный. Я уже не помню.
Поэтому изучил стандарт COMTRADE 2013 и написал собственный просмотрщик аналоговых сигналов
- Reader_Comtrade 06_06_2016.rar
- Просмотрщик комтрейд на 2 аналоговых сигнала. Файлы для просмотра (TrT1.cdf и TrT1.dat) внутри архива
- (77.94 КБ) 213 скачиваний
Файлы для просмотра (TrT1.cdf и TrT1.dat) внутри архива.
Когда я решил добавить туда считывание дискретных сигналов(по стандарту они упаковываются в переменные типа U16)-я столкнулся с проблемой, с которой и пришел на форум: как быстро считывать значения из бинарного файла, если там разные по длине переменные? Если хочешь использовать Read From Binary File-то нельзя указывать тип "массив", т.к. во первых сама функция чтения требует указания количества записей, а во вторых в массиве могут быть только переменные одного типа (и соответственно одинаковой длины).
Идеально подходит в качестве типа указывать кластер с нужной структурой (которую читаешь из *.cfg файла)-Read From Binary File его поддерживает, счетчиков в начале файла не нужно, но кластер с нужной структурой нельзя создавать динамически! Я могу руками открыть *.cfg файл, понять сколько переменных какой длины будет, и собрать кластер в качестве типа для Read From Binary File. Но я это делаю руками! Персонально под каждый файл! А значит я никому не могу дать свою программу, потому что ее под каждый файл надо переписывать! Кластеры нельзя динамически типизировать.
От отчаяния я сейчас доделываю следующее решение: читаю весь файл как массив U16, а потом в цикле начинаю объединять те ячейки массива, какие нужно в соответствии с информацией из *.cfg файла и создаю новые массивы U32, I32, I16 в зависимости от этого из исходного U16. Решение мне кажется уродливым, но это лучше чем ничего.
- не красивое решение
Может кто нибудь предложить способ лучше?
Тестовые файлы с 2 аналоговыми и 2 дискретными сигналами:
- TrT2.rar
- Тестовые файлы с 2 аналоговыми и 2 дискретными сигналами
- (581 байт) 211 скачиваний