Цикличная отправка в порт
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Цикличная отправка в порт
Добрый день!
Мне нужно что бы кейс истина в VISA записывалось циклично константа String в моем случае это буквы. Тоесть когда кейс истина записывается одна константа, потом кейс становится ложью при выполнениии условия. И вот когда кейс опять станет истиной нужно что бы записалась другая константа, и так по кругу нужно будет записывать константы в порт. Может есть какая то поочередная запись в порт или сделать массив и так же поочередно записывать его.
Помогите пожайлуста! Не хватает знаний это реализовать.
P.s Скрин оформлен не до конца ( не ставил условие )
Мне нужно что бы кейс истина в VISA записывалось циклично константа String в моем случае это буквы. Тоесть когда кейс истина записывается одна константа, потом кейс становится ложью при выполнениии условия. И вот когда кейс опять станет истиной нужно что бы записалась другая константа, и так по кругу нужно будет записывать константы в порт. Может есть какая то поочередная запись в порт или сделать массив и так же поочередно записывать его.
Помогите пожайлуста! Не хватает знаний это реализовать.
P.s Скрин оформлен не до конца ( не ставил условие )
- Вложения
-
- Безымянный.png (11.03 КБ) 3539 просмотров
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Цикличная отправка в порт
так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
я быстро накидал что хочу и когда отправил скрин сюда, увидел что неправильно закрыл порт Ну суть дела не в этом.Artem.spb писал(а):так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
спасибо за помощь
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
Artem.spb писал(а):так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
если можно хочу еще вопрос задать.
Я вчера не увидел ваше сообщение и ломал голову с другом как это все организовать. В итоге мы сделали, что отправка идет с обратной связью. Тоесть отправляем А и пока не ответит АААА он продолжает отправку и не переходит к отправке след.элемента. И вот в том случае когда МК перестает отвечать на отравляемый ему символ программа "зависает" и все время идет отправка. Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Цикличная отправка в порт
Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала
И если контроллер не отвечает, то что собирать будем?
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала
тут я совсем ничего не понял. Что, куда и зачем собирать?yakuba26 писал(а): Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
И если контроллер не отвечает, то что собирать будем?
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
у меня есть 6 плат ардуино, я их опрашиваю последовательно. Я отправляю А мне приходит ответ АААА, как только пришел ответ начинается отправка на след.ардуино. Связь будет по 485 интерфейсу, как только нужное ардуино увидит букву на которую отвечает только она, то она шлет в ответ комбинацию букв, остальные в это время просто ждут когда в порту появится их буква.Artem.spb писал(а):Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала
тут я совсем ничего не понял. Что, куда и зачем собирать?yakuba26 писал(а): Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
И если контроллер не отвечает, то что собирать будем?
Так вот когда ардуино не отвечает на передаваемый символ, программа стоит на месте и все время шлет эту букву.
Я же хочу как только соберется определенное количество букв, пропускало отправку символа на эту ардуино и отправка шла дальше как будто ничего и небыло.
У меня есть мысли как это реализовать, но я не могу сообразить как мне собрать строку из последовательно отправляемых символов ( всегда отправляется один).
Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Цикличная отправка в порт
я так и не понял, зачем?yakuba26 писал(а):Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
отправка следущего типа, Оправил А еслиполучаю в ответ АААА, то отправляется В и получаю ВВВВ. Но если я отправил В и ардуино ничего не ответило, то прога зацикливается на отправке В. Это нужно для того что бы я видел что ардуино отвечает мне и не зависает, а так же для того что бы данные сначала отправились потом считались последовательно, что бы случайно не отправлялась команда на ардуино, когда предыдущая еще не отправила данные.Artem.spb писал(а):я так и не понял, зачем?yakuba26 писал(а):Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string
Хорошая идея, как сделать счетчик?
а насчет объеденения строки эту функцию я знаю.
Я имел ввиду то что строка у меня все время одна, но она перезаписывается. Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Цикличная отправка в порт
сдвиговый регистрyakuba26 писал(а):Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
тот же самый сдвиговый.Хорошая идея, как сделать счетчик?
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
можешь скинуть как пример пожайлуста очень нужноArtem.spb писал(а):сдвиговый регистрyakuba26 писал(а):Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
тот же самый сдвиговый.Хорошая идея, как сделать счетчик?
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Цикличная отправка в порт
Если это начало задачи, то лучше не изобретать велосипед. Ставьте на ардуину ModBus Slave и общайтесь с ними по ModBus протоколу.
http://arduino.ru/forum/programmirovani ... lave-tcpip
http://arduino.ru/forum/programmirovani ... lave-tcpip
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Цикличная отправка в порт
Голова то включается, работаю в совсем недавно, поэтому все не знаю. С ними еще не приходилось работатьArtem.spb писал(а):пора уже голову включить
Спасибо за помощь