это сообщение не актуально, а вот последнее актуально. То есть фактически вопрос стоит: как разделить выборки массива на четные и нечетные, если он постоянно сдвигаетсяAndreyDmitriev писал(а):Коллега Кванто, не в обиду, но научитесь формулировать сообщение о проблеме правильно. Не бывает такого "запускается не каждый раз". Бывает - "при запуске спонтанно возникает ошибка такая-то там-то и там-то". Если ВИ "зависает" - то это тоже может проявляться по разному - вот эти проявления и надо описывать.Kvanto писал(а):Мой VI запускается НЕ КАЖДЫЙ РАЗ.
Протокол обмена с COM-портом
Re: Протокол обмена с COM-портом
-
- VIP
- Сообщения: 1337
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Протокол обмена с COM-портом
А что там делить? На каждой итерации там в массиве только один элемент лежит, поэтому Decimate и не отрабатывает. Если на каждой итерации приходит сигнал то с первого, то со второго входа, то самое простое - завести сдвиговый регистр (Boolean), инвертировать его на каждой итерации - он и даст нам информацию - с первого или второго канала приходят данные.Kvanto писал(а): это сообщение не актуально, а вот последнее актуально. То есть фактически вопрос стоит: как разделить выборки массива на четные и нечетные, если он постоянно сдвигается
Re: Протокол обмена с COM-портом
А как можно разбить в строке 8 знаков следующие через пробел по 4 знака. Т.е. есть "12345678 12345678", а надо сделать"1234 5678 1234 5678". Вообще у меня из очереди выходят 8-ми знаковые выборки и в старом варианте они разделялись пробелом, чтобы последующая функция преобразования в число вес верно преобразовала.
А теперь сделал кое-что,
но у меня возникла ошибка переполнения памяти
в качестве инициализации сдвиг. регистра String используется пробел-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Протокол обмена с COM-портом
а зачем вам там сдвиговый регистр? Результат конкатенации потом подается на сдвиговый регист, причем с удвоением длины строки на каждой итерации цикла. На 32 итерации или даже существенно раньше будет переполнение памяти. Вспомните притчу о падишахе и изобретателе шахмат.
Чтобы распознавать из строки фиксированное количество символов формат должен быть "%4d" или "%4x" , две операции подряд, на вход второй подавать данные с выхода "resultion string" первого "scan"
Чтобы распознавать из строки фиксированное количество символов формат должен быть "%4d" или "%4x" , две операции подряд, на вход второй подавать данные с выхода "resultion string" первого "scan"
Re: Протокол обмена с COM-портом
если вот так, то не проходит такой вариант. Ошибка говорит, что на входе второго Scan непонятный формат.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Протокол обмена с COM-портом
а надо цикл этот убрать. В очередь ведь строчки длиной 8б запихиваются. При каждом чтении из очереди и приходит эти 8б, они не склеиваются. Вот и распознаешь по два числа из одной строчки. Покажи содержание строки, которая принимается из очереди. Удали второй формат и подсоедини первый ко второму скану, может это не "икс", а "ха"
Re: Протокол обмена с COM-портом
я тут время зря не тратил) и зашил в контроллер разделительный символ табуляции между 8-ю байтами. Теперь по 4 байта принимаю. Пока лаги какие-то в лабвью отображаются с АЦП. На днях планирую подать на один канал возрастающую "пилу", а на 2-й убывающую. Прямо в контроллере прописать и посмоттреть все ли успевает LV считать. Отпишусь тогда как будут результаты.Borjomy_1 писал(а):а надо цикл этот убрать. В очередь ведь строчки длиной 8б запихиваются. При каждом чтении из очереди и приходит эти 8б, они не склеиваются. Вот и распознаешь по два числа из одной строчки. Покажи содержание строки, которая принимается из очереди. Удали второй формат и подсоедини первый ко второму скану, может это не "икс", а "ха"
Re: Протокол обмена с COM-портом
Придумал вот такое, но разделения каналов нет. Где я мог напортачить? В варианте False наоборот.AndreyDmitriev писал(а):А что там делить? На каждой итерации там в массиве только один элемент лежит, поэтому Decimate и не отрабатывает. Если на каждой итерации приходит сигнал то с первого, то со второго входа, то самое простое - завести сдвиговый регистр (Boolean), инвертировать его на каждой итерации - он и даст нам информацию - с первого или второго канала приходят данные.Kvanto писал(а): это сообщение не актуально, а вот последнее актуально. То есть фактически вопрос стоит: как разделить выборки массива на четные и нечетные, если он постоянно сдвигается
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Протокол обмена с COM-портом
нужно наверное использовать сдвиговые регистры и дописывать новый элемент в конец массива при выполнении условия чет/нечетKvanto писал(а):Придумал вот такое, но разделения каналов нет. Где я мог напортачить?
а условие удобнее задавать используя целочисленное деление на 2 и проверяя остаток, это классика
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: Протокол обмена с COM-портом
я пока жду ответа, придумываю решение свое порой). Вот теперь сделал так, чтобы мой массив был не с одним элементом, а с 50-ю. И не могу понять как может быть вот такое:
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Протокол обмена с COM-портом
так не поймешь... не все видно и понятноKvanto писал(а):И не могу понять как может быть вот такое
но ты в массив дописываешь не элемент, а массив...
сколько там элементов, только тебе известно
ты поясни, что имеется и что нужно получить
а то изначально у тебя элементы (скаляр) были и их нужно было раскидать на два массива
а теперь у тебя в исходе массив
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: Протокол обмена с COM-портом
Вообщем имеется непрерывный поток 2-х байтовых выборок, поступающих с двух каналов АЦП. Если вдаваться в подробности, то в данной блок-диаграмме правильность функции Decimate 1D Array я протестировал на пилообразном сигнале. Для этого прописал в контроллере на один канал восходящую ступеньку, а на другой нисходящую. Вот что получилось, вроде бы все верно.
Но когда начал вместо тестирования подавать на один из каналов синус некоторой амплитуды, то увидел сигнал похожий на шум. А на выходе Decimate Array образовавшихся получились два массива, совершенно идентичные, "элемент в элемент". Размер массива Main = 50 элем. На выходе необходимо получить правильную регистрацию сигналов с 2-х каналов, не важно каких.-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Протокол обмена с COM-портом
выложи данные, которые ты принимаешь...Kvanto писал(а):На выходе необходимо получить правильную регистрацию сигналов с 2-х каналов, не важно каких.
данные поступают последовательно или одним пакетом о двух каналах?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: Протокол обмена с COM-портом
данные поступают по очереди 1 канал, 2 канал, элемент массива ниже - выборка с одного канала, следующий элемент со 2-го канала и т.д.IvanLis писал(а): выложи данные, которые ты принимаешь...
данные поступают последовательно или одним пакетом о двух каналах?
Причем думал может где я ошибся в пайке схемы, но проверял: по очереди подключил 1 канал, а 2-й заземлял, затем наоборот. все работает,
но только вот с "одноканальной" программой для МК. Программирую два канала - лезет какой-то шум.
- Вложения
-
- Received data.vi
- (6.2 КБ) 179 скачиваний