Ссылочный материал для [закрытого] LabVIEW

Функция, описанная ниже , доступна на NPM : var b64toBlob = require('b64-to-blob')

blockquote>

Функция atob будет декодировать строку с кодировкой base64 в новая строка с символом для каждого байта двоичных данных.

var byteCharacters = atob(b64Data);

Кодовая точка каждого символа (charCode) будет значением байта. Мы можем создать массив байтовых значений, применяя это, используя метод .charCodeAt для каждого символа в строке.

var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
    byteNumbers[i] = byteCharacters.charCodeAt(i);
}

Вы можете преобразовать этот массив байтовых значений в реальный типизированный массив байтов, пройдя это к конструктору Uint8Array.

var byteArray = new Uint8Array(byteNumbers);

Это, в свою очередь, можно преобразовать в Blob, обернув его в массив, передающий его конструктору Blob.

var blob = new Blob([byteArray], {type: contentType});

Выполняется код выше. Однако производительность может быть немного улучшена за счет обработки byteCharacters меньшими фрагментами, а не сразу. В моем грубом тестировании 512 байт кажется хорошим размером среза. Это дает нам следующую функцию.

function b64toBlob(b64Data, contentType, sliceSize) {
  contentType = contentType || '';
  sliceSize = sliceSize || 512;

  var byteCharacters = atob(b64Data);
  var byteArrays = [];

  for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    var slice = byteCharacters.slice(offset, offset + sliceSize);

    var byteNumbers = new Array(slice.length);
    for (var i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    var byteArray = new Uint8Array(byteNumbers);

    byteArrays.push(byteArray);
  }

  var blob = new Blob(byteArrays, {type: contentType});
  return blob;
}
var blob = b64toBlob(b64Data, contentType);
var blobUrl = URL.createObjectURL(blob);

window.location = blobUrl;

Полный пример:

function b64toBlob(b64Data, contentType, sliceSize) {
  contentType = contentType || '';
  sliceSize = sliceSize || 512;

  var byteCharacters = atob(b64Data);
  var byteArrays = [];

  for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    var slice = byteCharacters.slice(offset, offset + sliceSize);

    var byteNumbers = new Array(slice.length);
    for (var i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    var byteArray = new Uint8Array(byteNumbers);

    byteArrays.push(byteArray);
  }
    
  var blob = new Blob(byteArrays, {type: contentType});
  return blob;
}


var contentType = 'image/png';
var b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

var blob = b64toBlob(b64Data, contentType);
var blobUrl = URL.createObjectURL(blob);

var img = document.createElement('img');
img.src = blobUrl;
document.body.appendChild(img);

... или ES6:

'use strict';

const b64toBlob = (b64Data, contentType='', sliceSize=512) => {
  const byteCharacters = atob(b64Data);
  const byteArrays = [];
  
  for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    const slice = byteCharacters.slice(offset, offset + sliceSize);
    
    const byteNumbers = new Array(slice.length);
    for (let i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }
    
    const byteArray = new Uint8Array(byteNumbers);
    
    byteArrays.push(byteArray);
  }
  
  const blob = new Blob(byteArrays, {type: contentType});
  return blob;
}


const contentType = 'image/png';
const b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

const blob = b64toBlob(b64Data, contentType);
const blobUrl = URL.createObjectURL(blob);

const img = document.createElement('img');
img.src = blobUrl;
document.body.appendChild(img);
8
задан Don Kirkby 20 August 2013 в 12:56
поделиться

10 ответов

Потребуется некоторое обучение и некоторое время, чтобы узнать, что стиль должен был разработать удобный в сопровождении код.

Происходя из Java/C#/C ++, у Вас, вероятно, есть хорошая идея хорошей программной архитектуры. Теперь просто необходимо изучить особенности LabView и распространенных ошибок.

Для основ Национальные Инструменты предлагают учебные курсы. Посмотрите, может ли Ваш новый работодатель отправить Вас к Основы класс I/II, чтобы намочить ноги. Они предлагают некоторые онлайн-курсы также. После классов можно подписаться для взятия тестов для сертификации.

Получите ознакомительную версию Labview от Национальных Инструментов; у них есть хорошо сохраняемый справочный файл, что можно погрузиться прямо в с включенным примером кода. Взгляд на "Начало работы" и "Среду LabVIEW". Необходимо смочь перейти прямо в и познакомиться с dev средой довольно быстро.

LabVIEW, будучи графическим хорош, но не выводите свои лучшие практики с точки зрения проектирования приложений. Распространено закончиться с кодом, бывшим похожим на радугу sphaghetti или код, который расширяет несколько широких экранов. Используйте subvi's и сохраните каждый vi с определенной целью и функцией.

Официальные форумы поддержки NI и база знаний являются, вероятно, лучшими ресурсами там в данный момент.

Неофициальные сайты как Учебные руководства в G имеют подмножество информации, найденной на официальном сайте и документации, но все еще могут быть полезны для перекрестной ссылки, если Вы застреваете.

Править: Основы I/II разработаны, чтобы быть доступными для пользователей без предшествующего опыта разработки программного обеспечения. В зависимости от того, как Вы ищете использование ощупью пробной версии, Вы можете перемещаться непосредственно в Промежуточный I/II. NI имеет содержания курса в наличии на их веб-сайте также, таким образом, Вы знаете то, что Вы собираетесь покрыть в каждом.

5
ответ дан 5 December 2019 в 12:15
поделиться

LabVIEW для Всех недавно пересмотрен и довольно всесторонний. Кроме свободного имеющегося в сети материала, это - вероятно, лучшее место, чтобы начать учить язык.

Руководство по стилю LabVIEW является замечательной книгой по тому, как организовать и расположить Ваш код и файлы для максимального преимущества.

Объектно-ориентированное программирование является недавним дополнением к LabVIEW. Отчет LVOOP объясняет много о том, как он работает и почему способ, которым это - способ, которым это.

Это немного устарело, но LabVIEW Усовершенствованные Методы программирования Горьким, Mohiuddin и Nawrocki все еще полон полезного материала.

Национальные Инструментальные форумы являются великолепным местом для движения для основной справки. LabVIEW усовершенствованные виртуальные архитекторы (LAVA) являются общественным форумом для усовершенствованных тем.

3
ответ дан 5 December 2019 в 12:15
поделиться

Учебные руководства в G, также проверьте webring.

- Adam

2
ответ дан 5 December 2019 в 12:15
поделиться

Официальную страницу поддержки NI и форумы поддержки трудно разбить.

Это действительно помогает наличию гуру вокруг для LabVIEW.

1
ответ дан 5 December 2019 в 12:15
поделиться

Когда я запустил с LabVIEW несколько лет назад, мне дали ссылку на LabVIEW Графический Ход Программирования. Это покрывает основы и наличие твердых знаний других языков программирования, я думаю, помог мне взять вещи быстро.

0
ответ дан 5 December 2019 в 12:15
поделиться

Я запустил бы с LabVIEW wiki.

А именно, Учебное руководство LabVIEW. Существует много ссылок онлайн и ссылок на справочники LabVIEW. Добро пожаловать в мир LabVIEW!

0
ответ дан 5 December 2019 в 12:15
поделиться

Я предложил бы, чтобы Вы запустили с LabVIEW для Всех. Это - хорошая книга, которая касается основ LabVIEW хорошо.

0
ответ дан 5 December 2019 в 12:15
поделиться

'Дуга, ненормальное' в значительной степени закрепило точно, что нужно попытаться сделать для изучения LabVIEW. Однако я не пропустил бы I Basic и II. Классы действительно преподают основные концепции программирования и приспособлены непрограммистам, однако они действительно покрывают IDE экстенсивно. LabVIEW IDE является странным прибытием из основанного на тексте языка и проведением времени в классе, узнавая, что это с преподавателем может действительно ускорить Ваше приобретение знаний.

Я пропустил бы Промежуточный 1, если Вы - закаленный разработчик. Промежуточная 1 попытка преподавать методы разработки программного обеспечения в промежутке трехдневного курса. Если Вы учитесь для получения CLD, необходимо знать курс и терминологию для экзамена, иначе я не провел бы свое время или капитал в курсе.

1
ответ дан 5 December 2019 в 12:15
поделиться

Подпишитесь на Информационный-LabVIEW список рассылки. Это имеет намного более тихий недавно как NI, и форумы ЛАВЫ стали еще популярнее, но это все еще читается некоторыми очень опытными и услужливыми людьми, включая людей в NI, и если Вы не можете найти то, в чем Вы нуждаетесь в другом месте затем, хороший вопрос будет обычно получать хороший ответ.

Руководство по стилю NI, так уже упомянутое, является хорошей ссылкой - перечитывает его, как Вы узнаете о большем количестве вещей, которые это покрывает, это содержит некоторый плотно упакованный хороший совет.

Персональные главные подсказки: посмотрите на предоставленный пример кода (хотя это не обязательно прекрасно); учитесь использовать очереди и notifiers как можно скорее; не погружайтесь в к использованию структур события и управляйте ссылками, пока Вы не выяснили то, что Вы можете и не можете обойтись без них; и начните с малого и простой - необходимо быть легко снова использовать этот код позже путем переупаковки его в subVI's как объем увеличений стремлений. И развлекайтесь!

1
ответ дан 5 December 2019 в 12:15
поделиться

Для меня лучший способ изучить LabVIEW - это проанализировать встроенные примеры. Лучшие форумы - это NI Developer Zone Community и LAVA Forums

С LabVIEW действительно легко работать, но сложнее всего знать, как спроектировать ваше приложение, чтобы оно не превратилось в спагетти. Когда вы освоите основы (например, вводный курс LabVIEW ), узнайте, как использовать шаблоны проектирования, события, очереди, определения типов и ссылки. Используйте модульную архитектуру, избегайте больших структур, попробуйте «написать» свой код в маленьком окне.

Также важно знать различия между версиями LabVIEW (полная / профессиональная и версия 7.1.1, 8.2, 8.5, 8.6, 2009 г.) ), как использовать систему контроля версий с vi (двоичными файлами) и как сохранить ваши файлы в проекте, чтобы вы могли легко повторно использовать любой код и быть «СУХИМ» (не

1
ответ дан 5 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: