Форум » » Serial » Ответить

Serial

kislez2015: Подскажите Есть такая проблема - есть поле inderect text, в которое с другой тач-панели отправляется текст. Но он отправляется побуквенно. А нужно, чтобы сообщение отправлялось, когда оно уже полностью напечатано Изначально хотел сделать кнопку ОК и пропускать текст через serial bufer ее нажатием. Оказалось, что этот элемент так не работает... Можно ли как-то это сделать миновав SIMPL+???

Ответов - 4

eoulianov: Это хитрей нужно делать: по выходе из панели нужно сделать make string permanent, чтобы оно не "протухало" сразу и дождалось этого OK, а дальше вместо serial buffer поставить analog buffer - тогда при нажатии OK значение из make string permanent будет скопировано на выход. Кстати, на выходе тоже нужно поставить make string permanent - чтобы после перезагрузки второй панели она б получила заново эту строку.

kislez2015: eoulianov большое спасибо! но почему это не работает без make string permanent и с serial buffer????

eoulianov: Это удивительный мир SIMPL, за простотой этой тараканьей модели скрывается куча глюков особенностей. Сравните справку analog buffer и serial buffer: они отличаются именно тем, что происходит "on the rising edge" сигнала enable - analog buffer копирует входы в выходы, а serial - ничего не делает. Почему они при этом называются analog и serial buffer - никто уже, наверное, не вспомнит. Со строками (serial signal) всё куда чудеснее: когда где-то строке присваивается новое значение (пусть бы и "", или такое же, как было в прошлый раз), говорят что происходит событие. В этот момент все модули, куда эта строка входит как input получают это новое значение и что-то с ним делают, а в следующий момент уже всё - пшик, и пусто в этой строке. И если, скажем, из SIMPL+ попробовать почитать входную строку НЕ из обработчика change этой строки, то скорее всего там будет "". Совсем другое дело - c make string permanent: она волшебным образом делает так, что строку можно несколько раз читать, и её последнее значение не пропадает! Хоть из analog buffer читать, хоть из рестартовавшей панели или ethernet intersystem communication, хоть из SIMPL+. Но это ещё только начало сказки: в это же самое время строка может считаться потоком, где символы приходят пачками или по одному или по нулю штук и обрабатываются, скажем, как буфер в SIMPL+. Ещё в строку можно добавить признак ASCII она или UTF-16, но вот как это используется дальше - уже и я не знаю, можно вроде бы конвертировать, но там и вовсе тёмный лес. Особенно весело, что в Core3 панели оно заходит всё так же в ASCII, и для показывания кириллицы используется нотация для Unicode из HTML &#x<код в hex>; Стоит ли говорить, что с Analog всё совсем по-другом, а Digital - по-третьему?)


kislez2015: eoulianov спасибо)) но смысл serial buffer под большим вопросом))



полная версия страницы