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

Простейшие вопросы в области инженерной разработки

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

Postby yakuba26 on 18 Dec 2018, 14:25

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

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

P.s Скрин оформлен не до конца ( не ставил условие )
Attachments
Безымянный.png
Безымянный.png (11.03 KiB) Viewed 1118 times
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby Artem.spb on 18 Dec 2018, 14:45

так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
port.png
Artem.spb
expert
expert
 
Posts: 1550
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

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

Postby yakuba26 on 19 Dec 2018, 07:59

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


я быстро накидал что хочу и когда отправил скрин сюда, увидел что неправильно закрыл порт :think: Ну суть дела не в этом.
спасибо за помощь :thank: :drink:
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby yakuba26 on 19 Dec 2018, 09:42

Artem.spb wrote:так вы много не наработаете.
Порт правильно открыт до цикла. но при этом после первой же записи он закрывается, зачем?
Перебор элементов, например, так
The attachment port.png is no longer available



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

Я вчера не увидел ваше сообщение и ломал голову с другом как это все организовать. В итоге мы сделали, что отправка идет с обратной связью. Тоесть отправляем А и пока не ответит АААА он продолжает отправку и не переходит к отправке след.элемента. И вот в том случае когда МК перестает отвечать на отравляемый ему символ программа "зависает" и все время идет отправка. Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.
Attachments
Безымянный.png
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby Artem.spb on 19 Dec 2018, 11:35

Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала

com.png



yakuba26 wrote: Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.

тут я совсем ничего не понял. Что, куда и зачем собирать?
И если контроллер не отвечает, то что собирать будем?
Artem.spb
expert
expert
 
Posts: 1550
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

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

Postby yakuba26 on 19 Dec 2018, 12:13

Artem.spb wrote:Я не долго ломал голову и быстро забил, потому что код, в котором провода выходят из любой точки функции и идут в любом направлении, очень сложен для восприятия. Не надо так делать.
Если надо в ответ отправить следующий шаг, то примерно так. Только тут при ошибе или остутствии ответа отпрака начнётся с самого начала

com.png



yakuba26 wrote: Как мне собрать отправляемые символы в строку? дальше я сделаю условие если, строка будет равна константе ВВВВ ( символ на который не отвечает) то он ее пропускает и начинает отправку след символа.

тут я совсем ничего не понял. Что, куда и зачем собирать?
И если контроллер не отвечает, то что собирать будем?


у меня есть 6 плат ардуино, я их опрашиваю последовательно. Я отправляю А мне приходит ответ АААА, как только пришел ответ начинается отправка на след.ардуино. Связь будет по 485 интерфейсу, как только нужное ардуино увидит букву на которую отвечает только она, то она шлет в ответ комбинацию букв, остальные в это время просто ждут когда в порту появится их буква.
Так вот когда ардуино не отвечает на передаваемый символ, программа стоит на месте и все время шлет эту букву.
Я же хочу как только соберется определенное количество букв, пропускало отправку символа на эту ардуино и отправка шла дальше как будто ничего и небыло.
У меня есть мысли как это реализовать, но я не могу сообразить как мне собрать строку из последовательно отправляемых символов ( всегда отправляется один).
Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby Artem.spb on 19 Dec 2018, 12:30

yakuba26 wrote:Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?


я так и не понял, зачем?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string
Artem.spb
expert
expert
 
Posts: 1550
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

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

Postby yakuba26 on 19 Dec 2018, 12:40

Artem.spb wrote:
yakuba26 wrote:Если ардуино не отвечает цикл за циклом отправляется по одному символу "А", а как мне собрать эти символы в струку из пяти симлов?


я так и не понял, зачем?
поставьте счётчик "не ответов", >5 -> идём дальше.
Объединить строки можно через concatenate string

отправка следущего типа, Оправил А еслиполучаю в ответ АААА, то отправляется В и получаю ВВВВ. Но если я отправил В и ардуино ничего не ответило, то прога зацикливается на отправке В. Это нужно для того что бы я видел что ардуино отвечает мне и не зависает, а так же для того что бы данные сначала отправились потом считались последовательно, что бы случайно не отправлялась команда на ардуино, когда предыдущая еще не отправила данные.

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

а насчет объеденения строки эту функцию я знаю.
Я имел ввиду то что строка у меня все время одна, но она перезаписывается. Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby Artem.spb on 19 Dec 2018, 13:57

yakuba26 wrote:Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?

сдвиговый регистр

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

тот же самый сдвиговый.
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.
Artem.spb
expert
expert
 
Posts: 1550
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

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

Postby yakuba26 on 19 Dec 2018, 14:09

Artem.spb wrote:
yakuba26 wrote:Может можно еще как то сравнивать предыдущее состояние строки с нынешним.
Тоесть в первом цикле в строке "А" в след цикле уже в строке "В", можно их как то сравнить?

сдвиговый регистр

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

тот же самый сдвиговый.
Ответ есть - в регистр отправить 0,
Если ответа нет, значение из регистра +1, сравнить с пределом, дальше по обстоятельствам.

можешь скинуть как пример пожайлуста :help: :help: :help: :help: :help: :help: :help: :help: :help: :help: очень нужно :help: :help: :help: :help: :help:
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0

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

Postby Artem.spb on 19 Dec 2018, 15:04

пора уже голову включить
ctr.png
ctr.png (10.47 KiB) Viewed 1050 times
Artem.spb
expert
expert
 
Posts: 1550
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

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

Postby Borjomy_1 on 19 Dec 2018, 17:39

Если это начало задачи, то лучше не изобретать велосипед. Ставьте на ардуину ModBus Slave и общайтесь с ними по ModBus протоколу.
http://arduino.ru/forum/programmirovani ... lave-tcpip
Borjomy_1
expert
expert
 
Posts: 1866
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 320
VIP

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

Postby yakuba26 on 20 Dec 2018, 08:37

Artem.spb wrote:пора уже голову включить
ctr.png


Голова то включается, работаю в :labview: совсем недавно, поэтому все не знаю. С ними еще не приходилось работать :dntknw:

Спасибо за помощь :drink:
yakuba26
junior
junior
 
Posts: 66
Joined: 13 Dec 2018, 13:55
Location: Саратов
LabVIEW Version: 2018
Karma: 0


Return to Для чайников

Who is online

Users browsing this forum: Yandex and 8 guests

cron