Чтение данных разного числового типа

Работа с файлами и базами данных
Ответить
tumanovalex

Activity
assistant
assistant
Сообщения: 132
Зарегистрирован: 23 ноя 2007, 16:44
Награды: 1
Версия LabVIEW: 7.1;8.5.1
Откуда: Москва
Благодарил (а): 2 раза

Чтение данных разного числового типа

Сообщение tumanovalex »

Хотелось бы сделать программу, которая позволяла бы считывать данные разного типа. Хотелось бы использовать одну функцию для считывания данных из файла в строку, в затем в зависимости от указанного типа преобразовать данные строки в нужный числовой формат. Получилось у меня только с unsigned char, а вот как преобразовать данные строки в 16 битовые числовые значения не знаю. Помогите, пожалуйста. Прикрепил свой недоделанный проект.
Вложения
Чтение данных.zip
(456.4 КБ) 166 скачиваний
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение Forward »

Ну так и в чем проблема? Из U8 можно без проблем куда угодно преобразовать: см. например функцию Join Numbers. Или еще проще: функция Unflatten From String - просто указываешь какой тип вытаскивать из строки.
tumanovalex

Activity
assistant
assistant
Сообщения: 132
Зарегистрирован: 23 ноя 2007, 16:44
Награды: 1
Версия LabVIEW: 7.1;8.5.1
Откуда: Москва
Благодарил (а): 2 раза

Re: Чтение данных разного числового типа

Сообщение tumanovalex »

Что-то у меня не получилось.
Вложения
Обработка данных.vi
(2.02 МБ) 161 скачивание
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение mzu2006 »

проще всего так:
ReadingData.png
ReadingData.png (11.47 КБ) 4830 просмотров
(внимание: это snipplet)
Вложения
Data Processing.vi
(909.36 КБ) 171 скачивание
Pavel

Activity
developer
developer
Сообщения: 271
Зарегистрирован: 31 июл 2009, 08:07
Награды: 1
Версия LabVIEW: 8.5

Re: Чтение данных разного числового типа

Сообщение Pavel »

Если данные записаны в файл лвэшной программой то свапирование делать не всегда нужно. И хоть предложенный тобой вариант более симпатичнее но вто же время не стоит забывать про Unflatten from string. Если данных много было бы не плох проверить оба эти варианта на скорость.
Вложения
ex6.JPG
ex6.JPG (9.34 КБ) 4827 просмотров
Eugene

Activity Bronze
leader
leader
Сообщения: 548
Зарегистрирован: 20 авг 2009, 17:58
Награды: 2
Версия LabVIEW: 2011
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение Eugene »

не забывайте только для type в type cast function задать representation I16 (defoult == I32)
We live in a graphical world.
Why not program in one?
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение mzu2006 »

Pavel писал(а):Если данные записаны в файл лвэшной программой
:labview: записывает flattened данные в big-endian форме. (тяжелое наследие PowerPC Macintosh). Т.е. на PC, каждый раз при flattening байты меняются местами(чтение-запись бинарного файла итд). И при первом typecast байты тоже переставляются
Pavel писал(а):не стоит забывать про Unflatten from string
Да, забыл про вывод "Data inludes array or string size". Спасибо. так должно быть быстрее
Pavel

Activity
developer
developer
Сообщения: 271
Зарегистрирован: 31 июл 2009, 08:07
Награды: 1
Версия LabVIEW: 8.5

Re: Чтение данных разного числового типа

Сообщение Pavel »

Вроде при записи в бинарный файл можно выбрать тип записи (big-endian или little-endian). На работе пробовал с 2 мб данных. Если результат (массив полученных значений) сразу выводить на экран то type cast чуточку побыстрее, надо было конечно попробовать с shift register но на тот момент не додумался.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение Eugen Graf »

Можно сразу использовать Read Binary File. Там сверху задаёшь тип данных и готово.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Чтение данных разного числового типа

Сообщение mzu2006 »

eg писал(а):Можно сразу использовать Read Binary File. Там сверху задаёшь тип данных и готово.
О, а так ещё проще и быстрее, собственно так и надо делать. На данном файле раза в 2.5 быстрее чем любой из вышеприведённых способов.
Pavel писал(а):то type cast чуточку побыстрее
Интересное дело, я решил померять сколько времени отнимает тот или иной способ преобразования. И получилось, что цепочка typecast-swap отнимает процентов на 10
меньше времени чем Unflatten from string. Это не зависит от версии :labview: (2009, 8.6) и от разрядности( :labview: 32bit, :labview: 64bit).
Это нелогично. Я открыл новый топик по этому поводу. (http://www.labviewportal.org/viewtopic. ... 67&start=0)

Я мерял вот такой программулькой (8.6):
Вложения
TestSpeed.vi
(15.55 КБ) 166 скачиваний
tumanovalex

Activity
assistant
assistant
Сообщения: 132
Зарегистрирован: 23 ноя 2007, 16:44
Награды: 1
Версия LabVIEW: 7.1;8.5.1
Откуда: Москва
Благодарил (а): 2 раза

Re: Чтение данных разного числового типа

Сообщение tumanovalex »

Спасибо за интересные ответы, попробую разные решения
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»