микроконтроллер отправляет в порт просто набор из 7 цифр, но в том то и дело когда отправляет все запускается.
ну да пофиг, сейчас решил проблему с помощью костыля: добавил склеивание строки из данных из буфера и "пустой строки"", когда данных в буфере uart нет, подставляю в пустую строку 0 вот как сейчас у меня это выглядит с имитацией пакета данных
Нехорошо у вас как-то это всё реализовано. Пройдитесь по данной теме. Выкладывалось много примеров работы. Если мне не изменяет память, то входной параметр для VISA Read, который 200 - это количество ожидаемых символов, только после приёма которых произойдёт нормальный выход. У вас скорее всего возникает ошибка на жёлтом проводе, эту ошибку нужно обработать. Советую посылать в конце пакета маркер "конца пакета", например код 0x0D, для разделения пакетов, иначе в процессе работы могут возникнуть глюки. Конечно, одно дело, если сделать "лишь бы как", или сделать "чтобы корректно". Определитесь с реализацией. Счас у вас сделано по первому варианту. Вложите архив с вашей программой. Вечером гляну.
Примерно вот так. Конечно, есть недостатки, но лучше. чем исходный вариант. Так как пакет никак не обрамляется, то при длительной работе возможен сдвиг данных. Есть ещё место для творчества. Мы ожидаем пакет из 7 байт, и их обрабатываем. Пакет, соответственно, не должен приходить чаще, чем задержка ("метроном")
orinoko, спасибо! принцип уяснил. Еще такой вопрос, как сделать отображение всех полученных данных? Как в терминале. Вот сейчас у меня полученный пакет отображается в строке (String Indicator). Но там находится только текущий пакет, а все предыдущие затираются. Как то надо складывать строки и разделять их переносом строки, но пока не нашел как это сделать. Или же есть какой-то другой способ это сделать?
Здравствуйте ! Мне Очень нужна Ваша помощь. Хочу собрать Cчетчик расхода жидкости. Принцип работы прибора основан на перепаде давления (есть Верхний придел 6кг/см и есть Нижний придел 5кг/см (в процессе эксплуатации Значеия Нижнего и Верхнего Давления будут менятся) При подаче жидкости через Элклапан в Обьеме поднимается давление дошло до 6кг/см Выкл. Элклапан жидкость расходуется и давление падает до 5кг/см В этот момент Элклапан ВКЛючается и давление поднимается до 6кг/см и опять Откл Элклапан. Когда давление падает до 5кг/см в этот момент происходит Счет (Цена импульса 0,0025+0,0025=) Программа это Считает. Помогите .Дайте Пожалуйста Совет как соеденить Датчик давления с Программой и как отпровить Команду на ВКЛ Элклапана и Откл.Элклапана управляемой Программой (Я применил Датчик Давления от ав-ля ММ370 давления масла( Напряжение при Давление 10кг/см= 5Вольт при 0кг/см= 4Вольта) На нем напряжение 12Вольт я переделал чтоб был Максимум выход был 5Вольт Соединение устройства хотел бы через USB так как на моем Ноутбуке нет Com-port Я по специальности Техник- Мехайник немного далек (мяго сказанно) от LabVIEW Я это устройство собрал на основе Мех манометра калькулятора и секундомера –это каменый век. На экране Ноутбука смотрется будет современно.Программу если надо я
ну сначала вам нужно организовать аппаратную часть, создать контроллер управления используя МК, продумать схему сопряжения датчиков и исполнительных механизмов с МК, продумать протокол обмена, Написать программу для МК, а вот уже потом дело дойдёт до программной реализации на компьютере. Это как рассказать "Войну и мир" в двух словах. По объёму это хороший диплом написать. Эта задача не для механика. Кстати, Лабвиев там уже на последнем этапе. И вашу задачу можно решить просто на автономном контроллере с подключённым индикатором, ноут там лишний. И непонятна размерность расхода жидкости - какие то попугаи по количеству срабатываний. Загадочное изделие получается. А секундомер там зачем?
есть несколько вариантов. Можно в лоб - конвертировать с конкретной позиции после определённых символов. Один из вариантов в файле. Но на вход вы должны подавать уже готовый стринг, целиком. График, я думаю, уже сами сможете организовать
Микроконтроллер по RS-232 передаёт байт данных - 8-разрядный код АЦП. Всего проводится около 400 измерений с частотой примерно 100 раз в секунду, после чего контроллер ждёт нажатия на кнопку для очередного цикла измерений. Необходимо преобразовать каждый байт в число и вывести на график. Пробовал передавать отдельные байты, байты и символ CR, ничего не получается. Почему появляется ошибка? Может лучше использовать что-нибудь вместо Scan From String? Кстати, вообще процесс передачи идёт - Hyper Terminal отлично принимает символы ASCII, соответствующие реальным значениям напряжения в вольтах (например, от батарейки).
Если я правильно понял, вы передаёте значение АЦП в виде 1 байта (0...255). 400 таких байт. Тогда вам ScanFromString не поможет. Он выполняет другую функцию. Вам нужно использовать StringToByteArray - и вы сразу получаете массив байт в количестве принятых символов
Попробовал сделать вот так - получилось. Здесь МК передаёт два байта в пакете: HI и LO, т.к. вообще-то АЦП 10-разрядный. Сейчас обрабатываю только байт HI (8-разрядный режим) - всё работает. Отображается график, код АЦП и т.д. Вот только теперь не пойму - как 2 байта превратить в 10-разрядное число? Хочу полностью задействовать АЦП и вывести данные на анализатор спектра.
Dm-P писал(а):Попробовал сделать вот так - получилось. Здесь МК передаёт два байта в пакете: HI и LO, т.к. вообще-то АЦП 10-разрядный. Сейчас обрабатываю только байт HI (8-разрядный режим) - всё работает. Отображается график, код АЦП и т.д. Вот только теперь не пойму - как 2 байта превратить в 10-разрядное число? Хочу полностью задействовать АЦП и вывести данные на анализатор спектра.
Точно так же как в любом другом языке. Создать переменную типа unsigned int, потом логически сложить HI и LO.
Сделал так (Vi.png). Думаю что элемент String Subset теперь не нужен. Напряжение 1,056 В соответствует посаженной батарейке. Подскажите пожалуйста, как теперь выполнить преобразование Фурье чтобы получить спектр?
orinoko, большое спасибо вам за подсказку. Попробовал эти функции, однако им для работы требуется, видимо, какой-то другой массив данных, не похожий на мой. После поисков выяснилось, что с моим "набором байтов" работают инструменты "Point by Point". В результате получились кое-какие графики (Front Panel.png). Если вы работаете с графиками, подскажите пожалуйста, можно отображать данные в децибелах по вертикальной шкале? Ну и в общем, привести их в "надлежащий вид" - отображать по оси X частоту, а не время?