Мне известно о существовании файлов DDS, которые позволяют программировать отображение графики на as / 400, но есть ли другой способ?
В частности, я хочу напрямую манипулировать буфером терминала, чтобы иметь возможность отображать что-либо, кроме текста. Например, терминал выглядит так:
Скажем, в памяти будет двумерный массив символов: текст [20] [80] для текстового меню и ниже этого будет массив буферов пикселей размером [200] [800].
Есть ли способ получить прямой доступ к любому из этих массивов? Я хотел бы иметь возможность создавать отображаемое меню полностью на C без необходимости в файле отображения, а также отображать другие виды графики (изображений) непосредственно в буфере пикселей.
3 ответа
Есть ли способ получить прямой доступ к любому из этих массивов?
Это достаточно просто, хотя все равно потребуется «файл отображения», в котором нет отформатированных полей. «Файл» - это соединение между программой и физическим устройством (или эмулятором). Вы можете определить одну большую область, содержащую любой «текст», который вы хотите поместить в нее. Это может даже включать атрибуты поля отображения, которые ограничивают области ввода.
Для максимального контроля подходит ключевое слово DDS USRDFN . Но для простых вещей, таких как списки пунктов меню, можно выводить почти любое большое текстовое поле.
Вывести простой текст очень просто. Для таких подробностей, как форматирование USRDFN, необходимо детальное понимание протокола 5250.
Одним из вариантов может быть использование API User Interface Manager (UIM)., чтобы обновить "текстовую область" (: ТЕКСТ) ПАНЕЛИ с помощью прикладной программы USREXIT =. UIM обрабатывает все, что касается определения «файла отображения» и фактического ввода-вывода. UIM можно рассматривать как интерфейс HTML для 5250, и для определения панелей используется очень похожий язык разметки.
Другой альтернативой являются API динамического диспетчера экрана (DSM) . Они предоставляют гораздо более тонкий контроль, чем методы UIM или DDS (хотя DDS USRDFN очень близок). Но, как и в случае с USRDFN, фактическое управление устройством потребует знания протокола 5250.
... а также отображать другую графику (изображения) непосредственно в буфере пикселей.
Нет ни «буфера пикселей» для 5250, ни даже «пикселей». Это символьный протокол, такой как telnet. Если вы собираетесь использовать изображения или «пиксели», вам нужны интерфейсы браузера, или, возможно, Java и NAWT, или X-windows и т.
Теперь, учитывая, что с TCP / IP и сокетами, вы можете делать практически все, что вы можете программировать. Все, что вы можете придумать, включая загрузку / установку сторонних библиотек кода, вы можете сделать - в пределах сетевых ограничений, связанных с вашим сервером. Но на самом деле это сервер , поэтому приложения с графическим интерфейсом обычно не должны работать на нем. То же самое, что и почти для всех типов серверов. Кодируйте графический интерфейс в клиентской системе, а не на сервере. Но вы можете это сделать, если очень захотите.
Есть способ сделать это в ILE C / C ++. Было очень интересно исследовать это, так как я сам не пробовал.
Единственная документация по нему (стр. 183+) I можно найти из 5.1, но вы можете ссылаться на используемые функции в это руководство по 7.3 (возможно, страница vii / 7), чтобы проверить, используются ли они по-прежнему.
Надеюсь, это помогло!
Я не уверен, зачем тебе это нужно ...
В наши дни было бы намного проще просто сгенерировать вывод в формате HTML и передать его через интегрированный веб-сервер apache.
Но если вы действительно хотите делать графику через 5250, это можно сделать ... по крайней мере теоретически. За 20 с лишним лет на платформе я ни разу этого не видел.
Но еще когда (1994?) IBM добавила поддержку для отображения графических данных. Manager (GDDM) и API-интерфейсы презентационной графики в OS / 400. «GDDM - это средство отображение, печать или печать изображений. Подпрограммы презентационной графики - это средства отображения, печати или построения бизнес-диаграмм ».
Поддержка все еще есть в ОС. Однако поддержка на стороне клиента НЕ доступна в IBM i Access для Windows или в последнем выпущенном клиенте, IBM Access Client Solutions (ACS). Похоже, что автономный Продукт IBM Personal Communications может поддерживать GDDM.
Для полного контроля над символьным буфером взгляните на API динамического диспетчера экрана (DSM). API-интерфейсы DSM - это "набор интерфейсов ввода-вывода экрана, которые обеспечивают динамический способ создания экранов и управления ими для языков высокого уровня Integrated Language Environment® (ILE). Поскольку интерфейсы DSM являются связываемыми, они доступны для программ ILE. только."
Похожие вопросы
Новые вопросы
graphics
Графика - это визуальные презентации. Вопросы, использующие этот тег, также должны быть помечены соответствующей используемой языковой и графической подсистемой. Для более общих графических вопросов, рассмотрите компьютерную графику Stack Exchange (computergraphics.stackexchange.com).