Автор | Сообщение |
|
Отправлено: 11.02.17 15:56. Заголовок: Текстовый буффер
Не совсем про Serial Buffer, но что-то туплю. Наверняка тривиально, но не вижу простого решения... Дано: Crestron App, из которой снимается Serial join от элемента TextEntry. Мне надо передать законченную строку (после того, как нажали ENTER) на другое устройство. НО! Устройство принимает строку и сразу обрабатывает, ругается, если она неправильная (не законченная). То есть строку надо посылать, когда она полностью сформирована. Как сделать? TextEntry выдает по Serial Join всю строку на текущий момент, так что Serial Queue мне не помогает... Я мог бы открывать Serial Buffer по нажатию ENTER, но он не будет пропускать строку, если она не меняется (а на момент нажатия ENTER она уже закончилась). Есть простое решение?
|
|
|
Ответов - 13
[только новые]
|
|
|
Отправлено: 11.02.17 17:39. Заголовок: Если есть признак ок..
Если есть признак окончания (делиметр) наверное поможет gather (могу ошибаться, посмотрите). Мне проще simpl+ модуль из пары строк написать. DIGITAL_INPUT Enter; STRING_INPUT in$[255]; STRING_OUTPUT out$; PUSH Enter { out$=in$; Processlogic(); }
|
|
|
|
Отправлено: 11.02.17 17:53. Заголовок: Не, нет признака... ..
Не, нет признака... Проверил - при нажатии ENTER TextEntry его не добавляет... Да, я тоже больше про SIMPL+, но это кажется тем случаем, когда должно быть простое решение в SIMPL... Спасибо, не буду заморачиваться - действительно, проще в SIMPL+ написать
|
|
|
|
Отправлено: 11.02.17 18:26. Заголовок: Я исправил опечатку..
Я исправил опечатку
|
|
|
|
Отправлено: 11.02.17 18:33. Заголовок: Делаю такую же хрень..
Делаю такую же хрень, только на старой графике... Не очень понял как поле по сериал выдает текст при нажатии ентера?
|
|
|
|
Отправлено: 11.02.17 20:09. Заголовок: В TextEntry есть Ser..
В TextEntry есть Serial join, по которому выдается текущее состояние вводимой строки - т.е. при каждом нажатии клавиши, значение меняется. Есть отдельный join на нажатие Enter. Соответственно, задача была отправить завершенную строку по нажатию Enter, но не раньше. В SIMPL не нашел элегантного решения. В SIMPL+ действительно решается в одну строку.
|
|
|
|
Отправлено: 11.02.17 21:04. Заголовок: Есть в SIMPL простое..
Есть в SIMPL простое решение... Serial RAM + Serial/Analog One-Shot + Serial Buffer Сериал подаем на каждый элемент, в Serial RAM select1 ставим в единицу, ентер ставим на recall и enable Serial Buffer, выход Serial/Analog One-Shot ставим на store в Serial RAM. С выхода Serial Buffer забираем данные дальше... Должно работать.
|
|
|
|
Отправлено: 11.02.17 21:53. Заголовок: Неа. Проблема в том,..
Неа. Проблема в том, что serial buffer передает значение только при изменении строки. То есть при открытии гейта (нажатие ENTER) ничего не передастся, т.к. строка после этого не меняется...
|
|
|
|
Отправлено: 11.02.17 22:33. Заголовок: Crestroner пишет: Н..
Crestroner пишет: цитата: | Неа. Проблема в том, что serial buffer передает значение только при изменении строки. То есть при открытии гейта (нажатие ENTER) ничего не передастся, т.к. строка после этого не меняется... |
| analog buffer ? ;)
|
|
|
|
Отправлено: 11.02.17 22:37. Заголовок: Гуд поинт. С ним дол..
Гуд поинт. С ним должно сработать. Ну, да ладно, уже на + сделал...
|
|
|
|
Отправлено: 13.02.17 20:51. Заголовок: Кто знает как реализ..
Кто знает как реализовать на модулях код: STRING_INPUT in$[1024]; STRING_OUTPUT out$; CHANGE in$ { out$=LEFT(in$, LEN(in$)-1); }
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 13.02.17 21:34. Заголовок: Я бы даже не тратил ..
Я бы даже не тратил время на реализацию такой подвижки в SIMPL. Предлагаю остановиться на SIMPL+. Буфер пишется с одной буквой "ф", с двумя больше похоже на буффонаду, это где колуны скачут. Чем продиктована такая необходимость? Что придавило?
|
|
|
|
|
Отправлено: 13.02.17 21:56. Заголовок: Низкий приоритет SIM..
Низкий приоритет SIMPL+ и время выполнения.
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 13.02.17 22:04. Заголовок: ОК, а оно может не в..
ОК, а оно может не выполниться вообще из "низкого приоритета"? Я бы пересмотрел структуру системы управления, если получается, что процессор загружен под завязку. Возможно, у вас избыток лишних операций, циклов, бесполезных висяков.
|
|
|
|