У меня проблемы с тем, чтобы терминалы передавали какие-либо данные тому, к чему они подключены, потому что элементы управления, к которым они подключаются, находятся в цикле while. Мой уровень разочарования высок, так как я бы уже сделал это, если бы написал это на C.
Во-первых, позвольте мне сказать, что это может занять немного много времени, поэтому, если вы не хотите читать это, тогда не надо. Вот оно. Я просмотрел несколько учебных пособий, много читал и даже пробовал несколько вещей в коде. Я понимаю, почему это нельзя сделать напрямую в цикле while. Сказав это, кажется, что у меня нет выбора, кроме как использовать цикл (ы) while в моем VI.
Мой ВП основан на обработчике сообщений в очереди в разделе Шаблоны создания нового ВП. У меня есть 2 вещи, которые должны иметь место. Первый - я создал TCP-клиент, которому я постоянно отправляю сообщения, чтобы получить статус от оборудования, с которым я общаюсь. Это временное событие, и оно должно обрабатываться в цикле while, чтобы я мог поддерживать соединение с сервером. Я не делаю обработку сообщений типа «Открыть», «Отправить», «Закрыть», «Открыть заново», «Отправить», «Закрыть» и т. Д. Слишком неэффективно. Это нижняя половина примера шаблона.
Второй - Иногда пользователь нажимает кнопку на передней панели, которая создает сообщение, которое отправляется на оборудование, чтобы заставить его что-то делать. И это, казалось бы, тоже должно быть в цикле, отсюда и моя проблема. Некоторые / большинство элементов управления существуют в структуре событий. Это верхняя половина примера шаблона.
На самом деле у меня это работает как передняя панель, но все в одном цикле, и я не могу заставить терминалы работать. Вот тут-то и возникает моя путаница: если я передаю что-то в цикл while, я получаю его значение только один раз, и если оно меняется, вы не получаете это изменение, а если вы передаете данные из цикла while, вы получите его только когда цикл закончится. Эти две вещи действительно сбивают меня с толку. Как можно передавать данные, которые изменяются при использовании цикла while, потому что я должен, но цикл while прерывается с помощью терминалов. Кажется круговой Связь по TCP не может остановиться, и я не могу найти пример того, как это сделать, используя моего друга Google. Я единственный человек на этой планете, который должен сделать это? Сомневаюсь.
Не собираюсь показывать мой код, так как это не проблема кода. Это понимание того, как LabView работает, а не просто как написать код на C, используя какую-то библиотеку. А также просто незнаком со всеми вещами, которые вы можете делать в LabView, не говоря уже о том, как все по-другому. Я не знаю, чего не знаю, но я могу научиться.
Я хочу иметь возможность передать созданный мной ВП любому пользователю и позволить ему использовать его для управления моим оборудованием. Если они просто хотят запустить его как лицевую панель, или если они хотят использовать его как Sub VI, это тоже нормально. Мне просто нужно, чтобы терминалы действительно передавали данные при таком использовании.
Спасибо, я сегодня заказал книгу на LabView, но скоро не получу. Мне действительно нужно уложить эту проблему в постель.