LabView:вопросы и ответы

Обсуждаем цифровые устройства...
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):
Victor Gordienko писал(а):Да вроде как более удобная функция Decimate 1D Array можно и на больше разбить чем на 2.
с МК отправляю примерно так

i++;
if (i==100)
{i=0;}
printf ("%i\n\r",i);

проблема в том если преобразовать с помощью "String To Byte" получаеться что я например отправляю число 58
то я получаю после "String To Byte" 53 56 10 13 (код АSCII), если использовать Scan from string после "VISA Read Function" то все нормально получаю свои значения переменной i (1,2,3,4.....99,0,1.....) Как можно подключить Decimate 1D Array к Scan from string ?


Ну так вы определитесь, что вы посылаете в порт - либо число в виде строки, либо в виде байта. Это две большие разницы, как говорят у нас в Одессе :) . Тогда вам нужно выделить из строки все числа, преобразовать из в массив, а потом делить на группы. Как то так, как на картинке.
(забыл дорисовать проводок между числом 0(неподключенный) и сдвиговым регистром)


А вы не могли бы подписать что это за компоненты ? Или скинь у Labview
Изображение
Большое вам спасибо )
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Первая - "Match Pattern". Находится "Programming -> String"
Вторая - "Decimal String To Number". Находится "Programming -> String -> String/Number Conversion"
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):Первая - "Match Pattern". Находится "Programming -> String"
Вторая - "Decimal String To Number". Находится "Programming -> String -> String/Number Conversion"

Спасибо все сделал, только с 0 не понял куда подключать, вы сказали к сдвиговом р., никак не могу разобраться (в Labview только начинаю изучать...)

Изображение
Вложения
1.rar
(32.18 КБ) 292 скачивания
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Вот сюда...
9bdc54bfe4cc.jpg
(48.04 КБ) 879 скачиваний
Вложения
1.rar
(32.24 КБ) 278 скачиваний
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):Вот сюда...
Вложение 9bdc54bfe4cc.jpg больше недоступно

Ваш файл не хочет открывань, у меня 9 ЛВ.
Но спасибо, понял куда нужно подключить. Запускаю программу, МК, отправляет значения
вот так :
1
2
3
4
...
100
1
.....
Но вот что получаю
Изображение
Почему то не получаеться, в чем может быть ошибка ?
Вложения
1.rar
(32.28 КБ) 237 скачиваний
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Пройдитесь внимательно с "лампочкой".
А вообще, зачем вам "Build Table"? Это, по моему, из пушки по воробьям. Давайте так: я счас расскажу, что говорит мой телепатор по поводу решаемой вами задачи, а вы меня поправите.
1. С МК вы отсылаете числа в символьном виде. Каждое число заканчивается кодом 0x0D и 0x0A (возврат каретки и перенос строки)
2. Вам нужно заполнять 2 таблицы по очереди - одно число налево, одно число направо. Таблицы просто должны заполняться числами в столбик.

Правильно?
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):Пройдитесь внимательно с "лампочкой".
А вообще, зачем вам "Build Table"? Это, по моему, из пушки по воробьям. Давайте так: я счас расскажу, что говорит мой телепатор по поводу решаемой вами задачи, а вы меня поправите.
1. С МК вы отсылаете числа в символьном виде. Каждое число заканчивается кодом 0x0D и 0x0A (возврат каретки и перенос строки)
2. Вам нужно заполнять 2 таблицы по очереди - одно число налево, одно число направо. Таблицы просто должны заполняться числами в столбик.

Правильно?


Да я снимаю ВАХ диода, нужно сделать так
1. Построить функцию I=f(U).
2. Сделать рядом табличку с значиниями. I=f(U).

да все верно с МК оправляю например :

(значиния U) 0x0D 0x0A (значиния I) 0x0D 0x0A (значиния U) 0x0D 0x0A (значиния I) 0x0D 0x0A (значиния U) 0x0D 0x0A
вот что вижу в терминале :
0.1 (это U)
0.0 (это I)
0.2 (это U)
0.01 (это I)
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Нужно понять принцип работы программ, написанные на LV. Плюс вы не до конца представляете, что же всё таки ваш МК передаёт в порт. Ваша программы сейчас работает так:
1. С СОМ-порта ожидается пакет длиной 100 байт (именно байт, не чисел)
2. 100 полученных байт преобразуется в массив чисел. Причём, как я отметил, так как вы принимаете байты, число в символьном представлении плюс символы возврата каретки никогда не будет равно одному байту. Например, число 67 у вас передаётся четырьмя байтами - 0x36 0x37 0x0D 0x0A (или тремя - без 0x0A).
Я не пишу на Си для МК, я пишу на ассемблере. И поэтому я чётко знаю, что у меня ушло в порт, так как буфер передачи я заполняю сам. А у вас он формируется без вас ))
3. Возвращаемся к процессу приёма байт с порта. А вот тут дальше интереснее. В прошлый раз мы не приняли пакет из 100 чисел. Значит в этот раз мы фактически продолжаем приём предыдущего пакета, этот блок из 100 байт опять обрабатываем и из ЭТОГО нового массива формируем таблицы по новой.

По-моему, как-то так.

Ага, так у вас ещё и числа с плавающей точкой.
Хочу вам дать совет - предусмотрите в программе перед началом каждого блока из 100 пар данных символ начала блока данных, например "{", а после блока - символ конца, например "}" - и тогда всё упростится.
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):Нужно понять принцип работы программ, написанные на LV. Плюс вы не до конца представляете, что же всё таки ваш МК передаёт в порт. Ваша программы сейчас работает так:
1. С СОМ-порта ожидается пакет длиной 100 байт (именно байт, не чисел)
2. 100 полученных байт преобразуется в массив чисел. Причём, как я отметил, так как вы принимаете байты, число в символьном представлении плюс символы возврата каретки никогда не будет равно одному байту. Например, число 67 у вас передаётся четырьмя байтами - 0x36 0x37 0x0D 0x0A (или тремя - без 0x0A).
Я не пишу на Си для МК, я пишу на ассемблере. И поэтому я чётко знаю, что у меня ушло в порт, так как буфер передачи я заполняю сам. А у вас он формируется без вас ))
3. Возвращаемся к процессу приёма байт с порта. А вот тут дальше интереснее. В прошлый раз мы не приняли пакет из 100 чисел. Значит в этот раз мы фактически продолжаем приём предыдущего пакета, этот блок из 100 байт опять обрабатываем и из ЭТОГО нового массива формируем таблицы по новой.

По-моему, как-то так.

Ага, так у вас ещё и числа с плавающей точкой.


1. Что бы было проще буду передавать значение6 ацп у виде от 0 до 1023.
2. На счет числа все верно 67 \n \r будет как 0x36 0x37 0x0D 0x0A
3. Не знаю как лучше поставить буфер (пакет байт) ???
4. Ничего не получаеться ... .((((
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Решите, пожалуйста, следующие вопросы:
1. что будет являться идентификатором начала пакета данных (символ(ы))
2. что вы всё-таки решите передавать в качестве данных
3. что будет являться идентификатором конца пакета данных (символ(ы))

Например:
Вариант 1 (если оставить символьную передачу)
"{"
U1
I1
U2
I2
...
U100
I100
"}"

Вариант 2 (в виде значений АЦП)
0x7A 0x7A [U1_Hi] [U1_Low] [I1_Hi] [I1_low] ..... [U100_Hi] [U100_Low] [I100_Hi] [I100_Low] 0x7F 0x7F
[начало] [U1 (ADC)] [I1 (ADC)] .... [U100 (ADC)] [I100 (ADC)] [конец]

И я вам попытаюсь наваять что-нибудь.
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

Начало пакета пускай будет { - 0x7B, конец { -0х7D.
Вариан 1 наверно будет проще...
Спасибо вам большое за помощь !!!!
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Ну... в общем, как-то так
1pic.GIF
Диаграмма
(54.14 КБ) 806 скачиваний
Вложения
1_lv90.rar
программа в LV90
(13.07 КБ) 324 скачивания
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):Ну... в общем, как-то так
1pic.GIF

БОЛЬШОЕ ВАМ СПАСИБО !!!!, проверил работает, буду разбираться, LV полезная штука.....
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

Victor Gordienko писал(а):
orinoko писал(а):Ну... в общем, как-то так
1pic.GIF

БОЛЬШОЕ ВАМ СПАСИБО !!!!, проверил работает, буду разбираться, LV полезная штука.....


Возникли небольшие вопросы
Изображение
1. Что делает ф. Property Node ?
Trim Whitespace прибор, который убирает табуляторы и пробелы ( переход на новый рядок не убирает, правильно ? )
2. Empty String возвращает логическое значение ИСТИНА, если находит пустую строку. Это когда у нас данные закончились мы выходим с цикла ? Если да, то не помойму где береться пустая строка, у нас же одни данные.
3. Зачем нужен здесь сдвиговый регистр ?
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

1. Как видно из названия (синим), происходит запрос, сколько байт данных у нас есть в буфере VISA, и столько же читаем из порта. Таким образом, мы не ждём неизвестно сколько, а читаем, сколько есть и сразу.
2. Если внимательно прочитать описание функции "Scan From String", то там написано, что на выходе у нас имеется остаток от строки после поиска очередного числа, и мы его передаём через сдвиговый регистр (3) на следующую итерацию. Естественно, что после нахождения всех чисел в остатке останется банан (пустая строка), что и является условием выхода из цикла.
3. Если прочитать опять же описание по "Trim Whitespaces", то там пишется дословно "Removes all ASCII white space (spaces, tabs, carriage returns, and linefeeds) from the beginning, end, or both ends of string."
Пройдитесь по программе с включённой лампочкой и пошагово. Вам многое станет ясно - что где происходит и почему.

Я, конечно, понимаю, что русский человек инструкцию читает только в двух случаях - когда всё сломано и когда читать больше нечего. ))
В LV замечательный Хелп, на любой функции ПКМ -> "Help"
Приобретите книжку Суранова "LabVIEW 8.20: Справочник по функциям". Фактически это перевод хелпа на русский. Найдите "LabVIEW 8.2 Basic I Course" - он на русском. Есть уроки на сайте пикада, тоже на русском, вот ссылка - http://www.picad.com.ua/lesson.htm. Извините, если немного грубовато )))

*ПКМ - "Правая Кнопка Мышки"
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение DX168B »

Качаю сейчас LabView 10.0 Нужно будет сделать разбор тонального протокола. Так, что буду доставать вас своими вопросами.
I am DX168B and this is my favourite forum on internet!
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

DX168B писал(а):Качаю сейчас LabView 10.0 Нужно будет сделать разбор тонального протокола. Так, что буду доставать вас своими вопросами.

Эта тема достаточно специфична, и я могу не дать ответа на ваши вопросы, особенно, если вы никогда не програмили в этой среде
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение DX168B »

Ну естественно я сначала мануалы изучать буду. А если что непойму, то обращусь. :)
Хотя эта среда чем-то напоминает HiASM.
I am DX168B and this is my favourite forum on internet!
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

DX168B писал(а):Ну естественно я сначала мануалы изучать буду. А если что непойму, то обращусь. :)
Хотя эта среда чем-то напоминает HiASM.

А у вас нету литературки почитать , справочников там, учебной литературы по этому HiASM ?

...Поигрался я с этим HiASM. Оригинально. :) . Но принцип отличается, причём хайасм всё таки ближе по к тестовым языкам - в нём также, как я понял, работа с событиями. Программы в LV - потоко-ориентированные. Советую начать с уроков с сайта пикада, и вам многое станот ясно.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение DX168B »

Ну я так, чисто ознакомился с ним (HiASM) по материалам из встроенного Хелпа. По этому литературы нет. Хотя стоит поискать.
Раз уж архив со средой я сохранил у себя, то значит до кучи нужно ещё и мануал хороший.
Я в основном пишу на С\С++. Но вот LabView потребовался для "прикидывания" идеи с протоколом.
просто на Си придётся километровые простыни расписывать. А так, прикину, что к чему. Блочками всё соберу.
Потом достаточно будет просто немного абстрагироваться и написать алгоритм на Си, уже ориентируясь на наработках из ЛабВьюва.
На счёт совета - спасибо. Приму во внимание. :)
I am DX168B and this is my favourite forum on internet!
Ответить

Вернуться в «Цифровая техника»