Страница 6 из 15

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

Добавлено: Вс фев 20, 2011 17:08:02
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
Изображение
Большое вам спасибо )

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

Добавлено: Вс фев 20, 2011 17:17:36
orinoko
Первая - "Match Pattern". Находится "Programming -> String"
Вторая - "Decimal String To Number". Находится "Programming -> String -> String/Number Conversion"

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

Добавлено: Вс фев 20, 2011 19:30:25
inkHunter
orinoko писал(а):Первая - "Match Pattern". Находится "Programming -> String"
Вторая - "Decimal String To Number". Находится "Programming -> String -> String/Number Conversion"
Спасибо все сделал, только с 0 не понял куда подключать, вы сказали к сдвиговом р., никак не могу разобраться (в Labview только начинаю изучать...)

Изображение

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

Добавлено: Вс фев 20, 2011 19:47:38
orinoko
Вот сюда...
9bdc54bfe4cc.jpg
(48.04 КБ) 885 скачиваний

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

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

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

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

Правильно?

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

Добавлено: Пн фев 21, 2011 12:52:43
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)

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

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

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

Ага, так у вас ещё и числа с плавающей точкой.
Хочу вам дать совет - предусмотрите в программе перед началом каждого блока из 100 пар данных символ начала блока данных, например "{", а после блока - символ конца, например "}" - и тогда всё упростится.

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

Добавлено: Пн фев 21, 2011 13:08:02
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. Ничего не получаеться ... .((((

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

Добавлено: Пн фев 21, 2011 13:27:25
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)] [конец]

И я вам попытаюсь наваять что-нибудь.

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

Добавлено: Пн фев 21, 2011 13:45:39
inkHunter
Начало пакета пускай будет { - 0x7B, конец { -0х7D.
Вариан 1 наверно будет проще...
Спасибо вам большое за помощь !!!!

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

Добавлено: Пн фев 21, 2011 16:23:18
orinoko
Ну... в общем, как-то так
1pic.GIF
Диаграмма
(54.14 КБ) 811 скачиваний

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

Добавлено: Пн фев 21, 2011 21:47:21
inkHunter
orinoko писал(а):Ну... в общем, как-то так
1pic.GIF
БОЛЬШОЕ ВАМ СПАСИБО !!!!, проверил работает, буду разбираться, LV полезная штука.....

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

Добавлено: Вт фев 22, 2011 22:22:28
inkHunter
Victor Gordienko писал(а):
orinoko писал(а):Ну... в общем, как-то так
1pic.GIF
БОЛЬШОЕ ВАМ СПАСИБО !!!!, проверил работает, буду разбираться, LV полезная штука.....
Возникли небольшие вопросы
Изображение
1. Что делает ф. Property Node ?
Trim Whitespace прибор, который убирает табуляторы и пробелы ( переход на новый рядок не убирает, правильно ? )
2. Empty String возвращает логическое значение ИСТИНА, если находит пустую строку. Это когда у нас данные закончились мы выходим с цикла ? Если да, то не помойму где береться пустая строка, у нас же одни данные.
3. Зачем нужен здесь сдвиговый регистр ?

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

Добавлено: Ср фев 23, 2011 10:04:07
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. Извините, если немного грубовато )))

*ПКМ - "Правая Кнопка Мышки"

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

Добавлено: Пн апр 18, 2011 22:12:58
DX168B
Качаю сейчас LabView 10.0 Нужно будет сделать разбор тонального протокола. Так, что буду доставать вас своими вопросами.

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

Добавлено: Вт апр 19, 2011 08:43:24
orinoko
DX168B писал(а):Качаю сейчас LabView 10.0 Нужно будет сделать разбор тонального протокола. Так, что буду доставать вас своими вопросами.
Эта тема достаточно специфична, и я могу не дать ответа на ваши вопросы, особенно, если вы никогда не програмили в этой среде

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

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

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

Добавлено: Ср апр 20, 2011 09:48:37
orinoko
DX168B писал(а):Ну естественно я сначала мануалы изучать буду. А если что непойму, то обращусь. :)
Хотя эта среда чем-то напоминает HiASM.
А у вас нету литературки почитать , справочников там, учебной литературы по этому HiASM ?

...Поигрался я с этим HiASM. Оригинально. :) . Но принцип отличается, причём хайасм всё таки ближе по к тестовым языкам - в нём также, как я понял, работа с событиями. Программы в LV - потоко-ориентированные. Советую начать с уроков с сайта пикада, и вам многое станот ясно.

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

Добавлено: Ср апр 20, 2011 14:03:06
DX168B
Ну я так, чисто ознакомился с ним (HiASM) по материалам из встроенного Хелпа. По этому литературы нет. Хотя стоит поискать.
Раз уж архив со средой я сохранил у себя, то значит до кучи нужно ещё и мануал хороший.
Я в основном пишу на С\С++. Но вот LabView потребовался для "прикидывания" идеи с протоколом.
просто на Си придётся километровые простыни расписывать. А так, прикину, что к чему. Блочками всё соберу.
Потом достаточно будет просто немного абстрагироваться и написать алгоритм на Си, уже ориентируясь на наработках из ЛабВьюва.
На счёт совета - спасибо. Приму во внимание. :)