OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 12 Декабрь, 2017 01:39

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 12:50 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Александр, я тут поглядел какую-то презентацию Amadeus Presentation Tomsk, но там ничего не понятно по самой библиотеке Amadeus/3.
Сайт amadeusITsolutions.com тоже не впечатлил.
Я так понимаю, что никаких демо-версий не доступно? Можно хоть где-то посмотреть описание библиотеки, её возможностей, архитектуры там, скриншоты, наконец? Есть ли какие демо-примеры использования этой библиотеки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 13:04 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4041
Откуда: Россия, Орёл
Здесь: http://oberoncore.ru/library/start
Stefan Metzeler "Amadeus - an Object Oriented Framework for Oberon-2"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 13:26 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Geniepro писал(а):
Я так понимаю, что никаких демо-версий не доступно? Можно хоть где-то посмотреть описание библиотеки, её возможностей, архитектуры там, скриншоты, наконец? Есть ли какие демо-примеры использования этой библиотеки?
Документация по библиотеке выложена здесь: http://oberoncore.ru/library/start
Правда, там довольно старый документ, но архитектурно изменений почти не было. Я попрошу Штефана сгенерировать свежую версию.
Фирменный сайт пока что нетрудоспособен.
Демо-версий библиотеки не предусмотрено. Если есть идеи, как это можно организовать, готов выслушать.
Скриншот моей первой полезной людям программы на Amadeus:
Вложение:
NoLimit.PNG
NoLimit.PNG [ 11.05 КБ | Просмотров: 6344 ]
Программа предназначена для снятия демо-ограничения с прибора (для этого надо ввести пароль, установленный разработчиками). Далее файл ресурсов (аналог Delphi .dfm) NoLimit.tx3 - может поставляться как в текстовом виде, так и в бинарном - с расширением .ap3:
Код:
OBJ Prj "NoLimit"
  REQUIRES NONE
  OBJ Cmd BASEID 1 ClearLimit 106
  ENDOBJ
  OBJ DataDict
    MEMBERS
      OBJ Str "result" LEN 1024 MAXLINE 4 ENDOBJ
      OBJ Str "password" LEN 9 ENDOBJ
      OBJ NumRange "portNum" 1 ; 100 ENDOBJ
      OBJ Num "portNum" SHORT LEN 0 NOZERO RANGE "portNum" ENDOBJ
    ENDGRP
  ENDOBJ
  OBJ Group "NoLimitApp"
    MEMBERS
      OBJ Font "copyright" "Tahoma;H=12;A=2;#=204;P=f;Z;X" ENDOBJ
      OBJ Win "MAIN" ACTIVE ICONIZE SYSMENU THINFRM BRUSH "BtnFace" POS 19 , 14 405 , 256 CLIENT 399 , 231 SCROLL 1 , 1
        TITLE "Снять ограничение"
        PARTS
          OBJ Field "Номер COM-порта:" ACCESS POS 30 , 6 390 , 28 VALUE portNum ALIGNOPPOSITE OFFSET 107 ENDOBJ
          OBJ Field "Пароль:" ACCESS POS 88 , 33 390 , 55 VALUE password OFFSET 49 ENDOBJ
          OBJ Button "Снять ограничение (Enter)" ID ClearLimit ACCESS DEF POS 137 , 60 390 , 87 ENDOBJ
          OBJ Field "Результат:" ACCESS POS 78 , 93 390 , 147 VALUE result OFFSET 59 BG "BtnFace" ENDOBJ
          OBJ Button "Выход (Esc)" ID Exit ACCESS POS 137 , 153 390 , 180 ENDOBJ
          OBJ Text ACCESS POS 9 , 188 355 , 224 FONT "copyright" FG "Black"
            TEXT
              '(c) Александр Ильин, 2007 для ООО "НПП Томьаналит".'
              "Программа написана на языке Oberon-2 с использованием компилятора"
              "XDS (c) Excelsior и библиотеки Amadeus-3 (с) Stefan Metzeler."
          ENDOBJ
        END
      ENDOBJ
    ENDGRP
  ENDOBJ
ENDOBJ
А вот так выглядит главный модуль программы:
Код:
<*+main*>
MODULE NoLimit;

(* ------------------------------------------------------------------------
 * (C) 2007 by Alexander Iljin
 * ------------------------------------------------------------------------ *)

IMPORT
  Windows,
  WinMgr, WinEvent, Startup, Events, Commands, Dialogs, Persist, Actions, Help,
  Keys, Reports, PStore, SrcSelect, App := NoLimitApp, Timers, Values,
  Fields, TA4, Endup, Resource, Str, Convert, CommData, TA4Device, NumVal;

CONST
  Settings = 'Settings';
  PortNum = 'PortNum';
  TimeOut = 3000; (** if there is no reply in this time [ms], the error is reported *)

TYPE
  Project* = POINTER TO ProjectDesc;
  ProjectDesc* = RECORD (Startup.ProjectDesc)
    timer: Timers.Timer;
    transactionStart: Windows.DWORD;
    resultField: Fields.Field;
    device: TA4.Device;
    expectingReply: BOOLEAN;
  END;

VAR
  project*: Project;

PROCEDURE AppendResult (str: ARRAY OF CHAR);
BEGIN
  Str.Append(App.result, str);
  IF project.resultField # NIL THEN
    project.resultField.Refresh(NIL, 0);
  END;
END AppendResult;

PROCEDURE ^ (p: Project) ClearLimit ();

PROCEDURE TimerTick (t: Timers.Timer);
VAR str: Str.PStr;
BEGIN
  project.device.Update;
  IF project.expectingReply THEN
    CommData.DataToStr(project.device.data, str);
    IF str = NIL THEN
      IF Windows.GetTickCount() - project.transactionStart > TimeOut THEN
        project.expectingReply := FALSE;
        AppendResult('Прибор не отвечает');
      END;
    ELSIF str^ = TA4Device.LimitRemoved THEN
      project.expectingReply := FALSE;
      AppendResult('Ограничение снято');
    ELSIF str^ = TA4Device.LimitSet THEN
      (* oops - we have set the limit instead of clearing it *)
      project.expectingReply := FALSE;
      AppendResult('Ограничение установлено');
      (* call ClearLimit again to clear *)
      project.ClearLimit;
    ELSIF str^ = TA4Device.BadIdentifier THEN
      project.expectingReply := FALSE;
      AppendResult('Неправильный пароль');
    ELSE
      AppendResult('Неизвестный ответ прибора: ');
      AppendResult(str^);
    END;
  END;
END TimerTick;

PROCEDURE StrToPassword (VAR str: ARRAY OF CHAR): TA4Device.Password;
VAR
  res: TA4Device.Password;
  i: INTEGER;
BEGIN
  i := 0;
  WHILE i < LEN(res) DO
    res[i] := '0';
    INC(i);
  END;
  i := 0;
  WHILE (i < LEN(res)) & (str[i] # 0X) DO
    res[i] := str[i];
    INC(i);
  END;
  RETURN res;
END StrToPassword;

PROCEDURE (p: Project) ClearLimit ();
VAR
  s: Str.MediumStr;
  f: Fields.Field;
BEGIN
  IF p.expectingReply THEN
    AppendResult('Ожидается ответ от прибора... ');
    RETURN
  END;
  App.result := '';
  AppendResult(''); (* to update the value on screen *)
  IF p.device.Connect(App.portNum) THEN
    IF p.device.ClearLimit(StrToPassword(App.password)) THEN
      project.expectingReply := TRUE;
      project.transactionStart := Windows.GetTickCount();
    END;
  ELSE
    AppendResult('Не удалось открыть порт COM');
    Convert.IntToStr(App.portNum, 0, FALSE, s);
    AppendResult(s);
  END;
END ClearLimit;

PROCEDURE (p: Project) Handler* (w: WinMgr.Window; VAR ev: Events.Event);
(** Method handles all the top-level events that weren't handled elsewhere *)
BEGIN
  IF (ev.tp = Events.Key) & (ev.action = Events.Press) & (ev.key = Keys.Esc)
  THEN
    ev.tp := Events.Command;
    ev.code := Commands.Exit;
  END;
  IF (ev.tp = Events.Close) & (w = WinMgr.mainW) THEN
    WinMgr.mainW.Destroy;
  ELSIF (ev.tp = Events.Command) & ~ev.done THEN
    ev.done := TRUE;
    CASE ev.code OF
    | App.ClearLimitCmd:
      p.ClearLimit;
    | Commands.Exit:
      WinMgr.mainW.Destroy;
    ELSE
      ev.done := FALSE;
    END; (* case ev.code *)
  END; (* if ev.tp *)
  Timers.Handler(ev);
  Actions.Handler(w, ev);
  Help.Handler(w, ev);
END Handler;

PROCEDURE LoadSettings ();
VAR
  s: Convert.NumberStr;
  i: INTEGER;
BEGIN
  IF (Resource.Get(Settings, PortNum, s) > 0) & Convert.StrToInt(s, i)
    & NumVal.InRange(App.portNumRange, i)
  THEN
    App.portNum := SHORT(i);
  ELSE
    App.portNum := 1;
  END;
END LoadSettings;

PROCEDURE SaveSettings ();
VAR
  b: BOOLEAN;
  s: Convert.NumberStr;
BEGIN
  Convert.IntToStr(App.portNum, 0, FALSE, s);
  b := Resource.Set(Settings, PortNum, s);
END SaveSettings;

PROCEDURE (p: Project) InitInstance* (): BOOLEAN;
VAR
  b: BOOLEAN;
  f: Fields.Field;
BEGIN
  IF ~(PStore.LoadProject(project.name^, App.thisProject, App.Init))
    OR ~p.InitInstance^() OR ~Startup.CallInitProcs(Startup.OnInitInstance)
  THEN
    RETURN FALSE
  END;
  b := WinMgr.mainW.Create();
  WinMgr.mainW.Show(WinMgr.TopPos);
 
  p.device := TA4.New();

  p.timer := Timers.New(WinMgr.mainW.hWnd);
  p.timer.handler := TimerTick;
  p.timer.SetInterval(50);
  p.timer.Start;
  p.expectingReply := FALSE;

  LoadSettings;
  IF Fields.FindByData(WinMgr.mainW, App.portNum, Fields.IgnoreIndex, f) THEN
    f.Refresh(NIL, 0);
  END;
  IF Fields.FindByData(WinMgr.mainW, App.result, Fields.IgnoreIndex, f) THEN
    p.resultField := f;
  END;
  Endup.Install(SaveSettings);
  RETURN TRUE
END InitInstance;

BEGIN
  NEW(project);
  project.Init;
  project.SetName('NoLimit');
  Startup.WinStart(project);
END NoLimit.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 16:01 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Спасибо, поизучаю. Правда, должен сразу оговориться, что интерес чисто спортивный...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 18:04 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Борис Рюмшин писал(а):
Здесь: http://oberoncore.ru/library/start
Stefan Metzeler "Amadeus - an Object Oriented Framework for Oberon-2"
Борис, я залил свежую документацию на FTP (/AlexIljin/Amadeus-3.pdf). Можете обновить в библиотеке?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Вторник, 03 Февраль, 2009 22:30 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4041
Откуда: Россия, Орёл
Заменил и обновил ссылку на сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 19:06 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Гм. Я правильно понимаю, что Amadeus-3 теперь чисто внутренняя библиотека компании, т.е. её больше не продают и продавать или как-то ещё отдавать "наружу" не собираются?

По крайней мере сайт http://www.amadeus-3.com/ не открывается (похоже домен не проплатили), а на http://www.amadeusitsolutions.com/ никаких упоминаний о Обероне нет вообще, соответственно в продуктах эта библиотека также не значится.


Последний раз редактировалось Alexey Veselovsky Воскресенье, 25 Апрель, 2010 19:20, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 19:17 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4041
Откуда: Россия, Орёл
Вот чего никогда не рекомендуется делать, так это предположений-домыслов. Задали вопрос, дождитесь ответа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 19:21 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Борис Рюмшин писал(а):
Вот чего никогда не рекомендуется делать, так это предположений-домыслов. Задали вопрос, дождитесь ответа.


Хорошо, дождусь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 20:51 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Alexey Veselovsky писал(а):
Гм. Я правильно понимаю, что Amadeus-3 теперь чисто внутренняя библиотека компании, т.е. её больше не продают и продавать или как-то ещё отдавать "наружу" не собираются?
Библиотека по-прежнему продаётся на прежних условиях: $1000 лицензия на одного разработчика, полные исходники с последующими обновлениями (теперь в Subversion! : ) ), без права распространять исходники библиотеки (только в бинарном виде - например, как obj+sym - см. мою недавнюю публикацию ImportGraph).
Alexey Veselovsky писал(а):
По крайней мере сайт http://www.amadeus-3.com/ не открывается (похоже домен не проплатили)
Большой и уважаемый хостинг внезапно накрылся медным тазом, в результате был потерян и домен.
Alexey Veselovsky писал(а):
а на http://www.amadeusitsolutions.com/ никаких упоминаний о Обероне нет вообще, соответственно в продуктах эта библиотека также не значится.
Автор не пожелал просто публиковать старый контент, а на новое наполнение катастрофически не хватает времени. Сайт никогда не генерировал профита, поэтому естественным образом отодвигается на задний план. Хоть флеш-ролик у кого-то заказали, да контактные данные разместили, и то прогресс. По контактным данным можно связаться и получить ответы на все вопросы непосредственно от автора, ну либо от меня - здесь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 21:33 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Александр Ильин писал(а):
Автор не пожелал просто публиковать старый контент, а на новое наполнение катастрофически не хватает времени. Сайт никогда не генерировал профита, поэтому естественным образом отодвигается на задний план. Хоть флеш-ролик у кого-то заказали, да контактные данные разместили, и то прогресс. По контактным данным можно связаться и получить ответы на все вопросы непосредственно от автора, ну либо от меня - здесь.

А, если не секрет, каким образом на вас выходят покупатели библиотеки? Ведь, по сути, о ней нигде теперь информации нет.

Сейчас дефакто почти вся информация по этой библиотеке находится в pdf'ке что выложена на oberoncore в списке англоязычной литературы. По моему, это как-то не правильно...

Хоть новости какие-то были бы что-ли.

Т.е. смотрите, с точки зрения стороннего англоязычного наблюдателя заинтересовавшегося разработкой на Oberon-2. Ищем информацию в интернете. Что находим? Находим свободный компилятор oo2c, но он перестал развиваться, из дистрибутивов его выкинули, и сайт его закрылся. Находим XDS (бесплатный!), но он закрытый и не поддерживается (и без перспектив развития, например поддержки x64). Ищем GUI-библиотеки. Находим VisualOberon, но он писался под oo2c (см. выше) + с 2004 года никак не обновлялся. Похоже мертв. Находим упоминания о Amadeus'e, но сайт самой библиотеки не открывается, а на сайте производителя нет упоминаний про оберон и эту библиотеку (т.e в списке продуктов не значится). И кой же вывод тут можно сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 23:25 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Alexey Veselovsky писал(а):
А, если не секрет, каким образом на вас выходят покупатели библиотеки?
Не знаю, как выходят, и выходят ли. Знаю, что библиотека - далеко не главный продукт. Мы продаём прикладной софт и поддержку, основной клиент - Женевский филиал Royal Bank of Canada. Наиболее активное - и молодое - Оберон-сообщество именно здесь, на этом сайте, и здесь об Amadeus знают, но купил пока только я один.
Alexey Veselovsky писал(а):
И кой же вывод тут можно сделать?
Насчёт вывода согласен. Я способствую распространению языка, выпускаю опен-сорсные плагины (см. запрос "Oberon-2 IDE" в Google). Был в разработке GUI RSS-агрегатор, который мог бы быть кому-то интересен, но потом нужда в нём отпала, и проект замёрз.

Библиотеку же я никак не пиарю. Наверное, можно поработать в этом направлении, но пока не представляю, как. Выпустить что-то опенсорсное? Что? Выпускаю то, что пишу для себя, то есть инструментарий. Была одна мелкая разработка для третьих лиц, но она никакой общественной пользы не имеет - так, для одного устройства служебная программка (см. скриншот наверху этой страницы).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Amadeus
СообщениеДобавлено: Пятница, 27 Июнь, 2014 16:24 

Зарегистрирован: Четверг, 06 Апрель, 2006 14:43
Сообщения: 33
Откуда: Россия, Ульяновск
Библиотеку еще можно купить?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB