Зарегистрирован: May 20, 2009 Сообщения: 8 Рейтинг: +0/-0
Добавлено: Ср 20 Май, 2009 13:29:26 Заголовок сообщения: Переключение языков в RSView32 на стадии выполнения
Доброе время суток!
Столкнулся со следующей задачей. Во-первых, заказчик хочет, чтобы в качестве SCADA использовалась RSView32 и ни что другое. Во-вторых, требуется, чтобы во время работы системы можно было бы переключать языки. Как минимум английский и русский, а по возможности еще и немецкий.
Как оказалось, какого-либо стандартного решения этой задачи в RSView32 нет. В следующих продвинутых версиях вроде Factory Talk для этой цели есть специальный action – “Language”. В RSView32 его нет. Можно довольно просто менять содержимое string-тегов, но это не решает проблему полностью. Многие графические элементы имеют свойства, к которым не добраться через теги, напр., текст на кнопках, окне тревог, трендах и т.д.
Если кто сталкивался с подобной проблемой, или есть идеи, как ее решить, чиркните, пожалуйста. Буду премного благодарен.
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Ср 20 Май, 2009 17:10:17 Заголовок сообщения:
Кроме связки VBA и базы Access начиная с RSView32 7.30 в системе команд есть ещё пара штучек:
Цитата:
Language Tags Substitution utility is now available in RSView®32. Two commands LInsertStringTag and LTagSubstitute are added to allow users to create a spreadsheet of string tag values in different languages and to select the values in a particular language for the tags during runtime.
И это всё. Увы, RSView32 - это очень старый продукт. Он не рекомендуется для вновь создаваемых систем. Переключение языков есть только в более новом RSViewSE aka FTViewSE.
Самое мудрое - это отговорить Вашего клиента от ошибки, которую он совершает, настаивая на устаревшем продукте и уговорить его на FTViewSE, преимущества которого очевидны.
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Ср 20 Май, 2009 18:25:17 Заголовок сообщения:
И я не знаю. RSView32, похоже, просто не обладает той функциональностью, которая нужна Вашему клиенту.
Что делать? Видимо, помочь клиенту выбрать правильный продукт.
Если не тайна, кто Ваш клиент? Почему он так сильно хочет именно это устаревшее программное обеспечение и почему диктует Вам? Он что, знает лучше Вас, какой продукт применять?
Добавлено: Чт 21 Май, 2009 0:29:15 Заголовок сообщения:
oldDad писал(а):
Почему он так сильно хочет именно это устаревшее программное обеспечение и почему диктует Вам? Он что, знает лучше Вас, какой продукт применять?
Почему так категорично? Разве RSView32 уже официально снят с поддержки?
Да и заказчики бывают разные, есть которым все равно, а есть и продвинутые. Если требуют - значит знают, что хотят.
а если по делу - то:
Я сталкивался с задачей такого рода несколько лет назад...
В RSView32 единственное, что может потребовать отдельного экрана для языка - это всплывающие подсказки.
Если их наличие непринципиально - то всё достаточно легко разруливается без дублирования экранов путем параметризации.
Стандартные кнопки легко заменяются на Touch-анимацию (кстати, я уже давно считаю плохим тоном использование стандартных кнопок )
Ну а все статические надписи на экранах выводить из строковых Memory-тэгов через параметр
С трендами лучше все-таки использовать отдельные экраны с TrendX, благо он позволяет писать независимые описания для перьев.
С сигнализацией всё не так красиво... для каждого языка нужно свой тэг, чтобы не перезапускать постоянно всю систему сигнализации. Ну и соответственно располагать теги сигнализации так, чтобы легко накладывался фильтр с маской.
Плохо, что дублирование тэгов сигнализации влечет за собой увеличение Device-тэгов (лицензируемых).
Так что, в принципе, всё это реализуемо средствами RSView32 без особых трудностей...
ЗЫ
ну и практически все написанное в SE может делаться точно также, но боюсь, все на языковый Action не навесишь
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Чт 21 Май, 2009 8:46:34 Заголовок сообщения:
AlexV писал(а):
Разве RSView32 уже официально снят с поддержки?
Вы знаете, RSView32 с поддержки не снят и не будет снят, но для применения в новых системах уже не рекомендуется.
AlexV писал(а):
заказчики бывают разные, есть которым все равно, а есть и продвинутые. Если требуют - значит знают, что хотят.
Это, на самом деле, далеко не всегда так
Не только мой личный опыт но и опыт моих коллег показывает, что очень часто (не всегда, но очень часто) заказчик просто не знает ничего другого, и заказывает то, что знает. И очень часто удаётся предотвратить ошибку, о которой я пишу и предложить более современный, функциональный и - часто - более дешёвый продукт.
Бывают случаи, когда администратор от автоматизации говорит: "применять вот это!" только потому, что он знает это название, а также потому, что инженеры по эксплуатации ему рассказали (и правильно рассказали!), что у них уже 5 или 8 лет стоит RSView32, прекрасно работает и ничего другого они не хотят
В каждом таком случае, когда заказчик диктует применение устаревшего продукта в новых системах, имеет большой смысл поговорить с ним и проверить, действительно ли он точно знает, чего хочет (что далеко не всегда так). Рассказать о возможностях нового продукта и его преимуществах перед старым. Очень может оказаться, что Вы ломитесь в открытую дверь и вопрос решается легко и непринуждённо.
Хочет заказчик RSView32? Нет проблем, получит, конечно. Но это:
- не всегда лучше
- не всегда дешевле.
Добавлено: Чт 21 Май, 2009 9:49:21 Заголовок сообщения:
AlexV писал(а):
...Skip...
Так что, в принципе, всё это реализуемо средствами RSView32 без особых трудностей...
Не верю про "без особых трудностей" (см. область Skip в оригинальном письме).
AlexV писал(а):
...ну и практически все написанное в SE может делаться точно также, но боюсь, все на языковый Action не навесишь
Что понимать под "точно также"?
В SE версии 5 все языковые желания штатная функция, в версии 4 только Alarm одноязычный, остальное как требуется.
Начиная с CPR7+ многоязычность делается очень легко.
Когда наш клиент захотел украинский, наша самая большая трудность была в переводе, но нашелся парень, который в XLS файле написал украинский текст.
Забавно получилось:
рубашка двигателя - сорочка двигуна
Зарегистрирован: May 18, 2009 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Пт 22 Май, 2009 0:55:47 Заголовок сообщения: ереключение языков в RSView32 на стадии выполнения
Уважаемый BigBug. Язык, если я правильно понимаю раскладка клавиатуры на АРМ переключается независимо ни от чего, тоесть не важно какая запущена скада. другое дело как это увидеть. Предлагаю в VBA написать процедуру.
В модуле скрипта надо обьявить API функцию
Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
А сама процедура для нажатия клавиши на какой нибудь форме(сделайте какуюнибудь форму в VBA)
Private Sub Button1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim layoutname As String * KL_NAMELENGTH
Dim capslock
Dim dl&
dl& = GetKeyboardLayoutName(layoutname)
capslock = GetKeyState(VK_CAPITAL)
If layoutname = EN_LANG Then
If capslock And 1 Then
Label1.Caption = "EN"
Label2.Caption = "Caps Lock"
Else
Label1.Caption = "en"
Label2.Caption = ""
End If
ElseIf layoutname = RU_LANG Then
If capslock And 1 Then
Label1.Caption = "RU"
Labe2.Caption = "Caps Lock"
Else
Label1.Caption = "ru"
Label2.Caption = ""
End If
Else: Label1.Caption = "??"
End If
End Sub
Зарегистрирован: May 18, 2009 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Пт 22 Май, 2009 1:25:27 Заголовок сообщения:
Забыл еще функцию
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
А саму функцию можно сделать отдельную, те без окна и кнопки
а значения соответсвующие label1 и 2 передавать двум строковым тэгам
проекта = gTagDb.GetTag("string1").Value
= gTagDb.GetTag("string2").Value
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Пт 22 Май, 2009 7:59:06 Заголовок сообщения:
Можно написать и не только это, подключив любые библиотеки. Если какие-нибудь библиотеки и нельзя подключить, то можно написать такой код и подклчить такие бибиотеки, которые позволят подключить библиотеки, которые до этого нельзя было подключить
Можно ещё много чего написать, хоть всю SCADA полностью, с любыми функциями, библиотеками и с любой функциональностью.
При этом, правда, возникает вопрос: а что будет, если написавший сей уникальный и неповторимый продукт программер уволится или переквалифицируется в десантники, или эмигрирует, к примеру, в Австралию? Как тогда быть бедному клиенту, ставшему объектом для программистских экспериментов и ставшему счастливым обладателем уникального know-how, существующего у него в компьютере? Кто будет отлаживать или сопровождать этот уникально написанный продукт? Сможет ли он вообще и будет ли разобираться в этих кодах? Вряд ли.
Тяжелый вопрос. Клиента таким образом можно хор-рошо подставить, оставив его один на один с непонятно кем и когда написанным кодом. Представляю, как он будет потом "благодарен" и какими ласковыми словами будет крыть и программиста, написавшего "За отсутвие кометариев извиняйте" и канувшего в Лету, и фирму-подрядчика, и совершенно к этим негуманным экспериментам непричастный и ни в чём неповинный продукт RSView, и саму компанию Rockwell.
И будет прав. Стандартные продукты есть стандартные продукты, они документированы, отлажены, и за ними стоит крупная корпорация, отвечающая за их предсказуемую функциональность.
and123,
Дружеский совет, касающийся Вашего абзаца, который я вырезал: не надо писать того, чего писать не надо. ОК? Готов ответить на все вопросы, заданные в личном сообщении.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.132 секунды