Цикличная отправка в порт

Простейшие вопросы в области инженерной разработки
Ответить
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Цикличная отправка в порт

Сообщение yakuba26 »

Добрый день!
Мне нужно что бы кейс истина в VISA записывалось циклично константа String в моем случае это буквы. Тоесть когда кейс истина записывается одна константа, потом кейс становится ложью при выполнениии условия. И вот когда кейс опять станет истиной нужно что бы записалась другая константа, и так по кругу нужно будет записывать константы в порт. Может есть какая то поочередная запись в порт или сделать массив и так же поочередно записывать его.

Помогите пожайлуста! Не хватает знаний это реализовать. :shok: :cry:

P.s Скрин оформлен не до конца ( не ставил условие )
Вложения
Безымянный.png
Безымянный.png (11.03 КБ) 3458 просмотров
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Цикличная отправка в порт

Сообщение Artem.spb »

так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
port.png
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
port.png
я быстро накидал что хочу и когда отправил скрин сюда, увидел что неправильно закрыл порт :think: Ну суть дела не в этом.
спасибо за помощь :thank: :drink:
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
Вложение port.png больше недоступно

если можно хочу еще вопрос задать.

Я вчера не увидел ваше сообщение и ломал голову с другом как это все организовать. В итоге мы сделали, что отправка идет с обратной связью. Тоесть отправляем А и пока не ответит АААА он продолжает отправку и не переходит к отправке след.элемента. И вот в том случае когда МК перестает отвечать на отравляемый ему символ программа "зависает" и все время идет отправка. Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
Вложения
Безымянный.png
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Цикличная отправка в порт

Сообщение Artem.spb »

Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала
com.png
yakuba26 писал(а): Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
тут я совсем ничего не понял. Что, куда и зачем собирать?
И если контроллер не отвечает, то что собирать будем?
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала
com.png
yakuba26 писал(а): Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
тут я совсем ничего не понял. Что, куда и зачем собирать?
И если контроллер не отвечает, то что собирать будем?
у меня есть 6 плат ардуино, я их опрашиваю последовательно. Я отправляю А мне приходит ответ АААА, как только пришел ответ начинается отправка на след.ардуино. Связь будет по 485 интерфейсу, как только нужное ардуино увидит букву на которую отвечает только она, то она шлет в ответ комбинацию букв, остальные в это время просто ждут когда в порту появится их буква.
Так вот когда ардуино не отвечает на передаваемый символ, программа стоит на месте и все время шлет эту букву.
Я же хочу как только соберется определенное количество букв, пропускало отправку символа на эту ардуино и отправка шла дальше как будто ничего и небыло.
У меня есть мысли как это реализовать, но я не могу сообразить как мне собрать строку из последовательно отправляемых символов ( всегда отправляется один).
Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Цикличная отправка в порт

Сообщение Artem.spb »

yakuba26 писал(а):Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
я так и не понял, зачем?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):
yakuba26 писал(а):Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
я так и не понял, зачем?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string
отправка следущего типа, Оправил А еслиполучаю в ответ АААА, то отправляется В и получаю ВВВВ. Но если я отправил В и ардуино ничего не ответило, то прога зацикливается на отправке В. Это нужно для того что бы я видел что ардуино отвечает мне и не зависает, а так же для того что бы данные сначала отправились потом считались последовательно, что бы случайно не отправлялась команда на ардуино, когда предыдущая еще не отправила данные.

Хорошая идея, как сделать счетчик?

а насчет объеденения строки эту функцию я знаю.
Я имел ввиду то что строка у меня все время одна, но она перезаписывается. Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Цикличная отправка в порт

Сообщение Artem.spb »

yakuba26 писал(а):Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
сдвиговый регистр
Хорошая идея, как сделать счетчик?
тот же самый сдвиговый.
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):
yakuba26 писал(а):Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
сдвиговый регистр
Хорошая идея, как сделать счетчик?
тот же самый сдвиговый.
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.
можешь скинуть как пример пожайлуста :help: :help: :help: :help: :help: :help: :help: :help: :help: :help: очень нужно :help: :help: :help: :help: :help:
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Цикличная отправка в порт

Сообщение Artem.spb »

пора уже голову включить
ctr.png
ctr.png (10.47 КБ) 3390 просмотров
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Цикличная отправка в порт

Сообщение Borjomy_1 »

Если это начало задачи, то лучше не изобретать велосипед. Ставьте на ардуину ModBus Slave и общайтесь с ними по ModBus протоколу.
http://arduino.ru/forum/programmirovani ... lave-tcpip
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Цикличная отправка в порт

Сообщение yakuba26 »

Artem.spb писал(а):пора уже голову включить
ctr.png
Голова то включается, работаю в :labview: совсем недавно, поэтому все не знаю. С ними еще не приходилось работать :dntknw:

Спасибо за помощь :drink:
Ответить

Вернуться в «Для чайников»