Page 1 of 1

Flatten To String баг или фича?

PostPosted: 11 Sep 2017, 18:15
by Usss
На вход подаем кластер с пустым массивом или кластер с пустой строкой. На выходе получаем какие-то левые 4 байта. Как так то? Можно вылечить?

upd: решение - viewtopic.php?f=21&t=9486&p=76195#p76195

Re: Flatten To String баг или фича?

PostPosted: 11 Sep 2017, 18:38
by dadreamer

Re: Flatten To String баг или фича?

PostPosted: 12 Sep 2017, 10:32
by Usss
Требуется преобразовать кластер в массив байт. Кластеров много разных, содержимое у каждого свое, в том числе числа, массивы и строки. Пока не придумал ничего лучше чем преобразовывать каждый элемент кластера отдельно

Re: Flatten To String баг или фича?

PostPosted: 12 Sep 2017, 10:53
by dadreamer

Re: Flatten To String баг или фича?

PostPosted: 12 Sep 2017, 11:48
by AndreyDmitriev

Re: Flatten To String баг или фича?

PostPosted: 15 Sep 2017, 17:47
by Usss
Решено!
Было ощущение, что изобретаю велосипед. Не понятно, почему такой vi нет по умолчанию в LV.
Я разобрал только нужные мне типы: все integer, Uinteger, double, массивы из этих типов, кластеры, массив кластеров. Если кому, нужны остальные типы, тот без труда дополнит.

Re: Flatten To String баг или фича?

PostPosted: 15 Sep 2017, 18:54
by dadreamer

Re: Flatten To String баг или фича?

PostPosted: 15 Sep 2017, 19:41
by Usss
Вот щас ваще красоту навел. На самом деле мне надо эти данные передавать по TCP, принимающая сторона имеет протокол данных и сможет их расшифровать. Так что мне совсем не нравится что Flatten To String передает всякие мета данные

Re: Flatten To String баг или фича?

PostPosted: 15 Sep 2017, 21:43
by Kosist

Re: Flatten To String баг или фича?

PostPosted: 15 Sep 2017, 22:37
by Borjomy_1
Вообще-то flatten To string это чемпион по компактности. И ежели у вас размер массива фиксированный, то обычно делают кластер с заданным количеством элементов. Передавать динамический массив без размера - глупость. Если размер массива находится не перед ним в посылке, то совершенно не возбраняется закидывать элементы в строку раздельно, а потом их собрать в одну строку. И разбор можно делать также, последовательно.

Re: Flatten To String баг или фича?

PostPosted: 16 Sep 2017, 00:07
by Kosist

Re: Flatten To String баг или фича?

PostPosted: 16 Sep 2017, 12:37
by dadreamer

Re: Flatten To String баг или фича?

PostPosted: 16 Sep 2017, 12:51
by Usss
Длина данных от пользователя к серверу всегда известна, а длина данных от сервера к пользователю вычисляется исходя из параметров, которые пользователь ему отправляет. ПО сервера написано не на LAbview, но его позже тоже надо будет переписать на Labview

Re: Flatten To String баг или фича?

PostPosted: 16 Sep 2017, 14:39
by Blackman

Re: Flatten To String баг или фича?

PostPosted: 16 Sep 2017, 22:12
by dadreamer
Хотя при первом взгляде кажется, что решение Usss выглядит малость "велосипедно", что-то в нём есть. Если представить, что есть превеликое множество кластеров с совершенно различными типами данных в них, включая вложенные кластеры, то конвертация в поток байтов может быть изрядным "гемором" - каждый кластер надо разобрать на элементы, каждый элемент прогнать через Type Cast, затем все эти выходы объединить в одно целое. Это займёт ощутимое время и не менее ощутимое место на БД. ВИ-айка Usss практически могла бы обеспечить компактность на диаграмме и простоту преобразования, а также универсальность, что немаловажно. Другое дело, что её потребуется допилить, чтобы она "ела" все возможные типы данных :labview: . Ну, и нельзя не заметить, что случай, когда потребуется подобное преобразование без "левых" данных, может вовсе не представиться. На мой практике я припоминаю ровно один такой случай - нужно было преобразовать несколько кластеров в массив U8 для отправки через Profinet плату. Мне было проще разобрать кластеры, благо что их было не более 5 штук.