as/400: 显示图形的其他方式?
as/400: other way for display graphics?
我知道存在允许在 as/400 上对显示图形进行编程的 DDS 文件,但是还有其他方法吗?
具体来说,我想要做的是直接操作终端缓冲区,以便能够显示除文本之外的任何其他内容。
例如,终端看起来像这样:
比方说,在内存中,将有一个二维字符数组:text[20][80] 用于文本菜单,低于此,将有一个大小为 [200][800] 的像素缓冲区数组].
有没有办法直接访问这两个数组?
我希望能够完全用 C 创建一个可显示的菜单,而不需要显示文件,并且还可以直接在像素缓冲区中显示其他类型的图形(图像)。
在 ILE C/C++ 中有一种方法可以做到这一点。调查起来很有趣,因为我自己还没有尝试过。
唯一的 documentation on it (page 183+) I could find is from 5.1, but you are able to cross reference the functions used to this 7.3 manual(可能是第 vii/7 页)查看它们是否仍然使用相同。
希望对您有所帮助!
Is there a way to access either of those arrays directly?
这很简单,尽管仍然需要没有格式化字段的 "display file"。 'file' 将是程序和物理设备(或模拟器)之间的连接。您可以定义一个大区域,其中包含您希望程序放入其中的任何内容 "text"。这甚至可以包括分隔输入区域的显示字段属性。
对于大多数控件来说,DDS USRDFN keyword是合适的。但是对于像菜单项列表这样的简单内容,几乎任何大文本字段都可以输出到。
输出简单的文本很容易。对于像 USRDFN 格式化这样的详细内容,需要详细了解 5250 协议。
一种替代方法是使用 User Interface Manager (UIM) APIs 通过其 USREXIT= 应用程序更新面板的 "text area" (:TEXT)。 UIM 处理任何 "display file" 定义和实际 I/O 的一切。 UIM 可以被认为是 5250 的 HTML 接口,并使用非常相似的标记语言来定义 PANEL。
另一种选择是Dynamic Screen Manager (DSM) APIs。这些提供了比 UIM 或 DDS 方法更精细的控制(尽管 DDS USRDFN 非常接近)。但与 USRDFN 一样,实际的设备控制将需要 5250 协议知识。
...and also display other kind of graphics (images) directly in the
pixel buffer.
5250 没有 "pixel buffer",甚至 'pixels'。它是一种基于字符的协议,如 telnet。如果你想要图像或 'pixels',你会喜欢浏览器界面,或者可能 Java 和 NAWT,或 X-windows,等等
现在,假设有了 TCP/IP 和套接字,您基本上可以做任何您能够编程的事情。无论您能想出怎么做,包括 downloading/installing 第 3 方代码库,您都可以在服务器周围的网络限制范围内进行。但它实际上是一个服务器,所以GUI类型的应用程序一般不应该运行在上面。这与几乎所有类型的服务器都一样。在客户端系统而不是服务器上编写 GUI。但如果你真的想做,你可以做。
我不确定你为什么要这样做...
现在,简单地将输出生成为 HTML 并通过集成的 apache 网络服务器提供它会容易得多。
但是如果你真的想通过 5250 做图形,它是可以做到的......至少理论上是这样。在平台上20多年,我从未见过它。
但是早在(1994 年?),IBM 将对 Graphical Data Display Manager (GDDM) and Presentation Graphics APIs 的支持添加到 OS/400 中。 “GDDM 是一种手段
显示、打印或绘制图片。演示图形例程是
显示、打印或绘制商业图表的方法。
支持还在OS。但是,客户端支持 NOT 在 IBM i Access for Windows 或最近发布的客户端 IBM Access Client Solutions (ACS) 中可用。似乎独立 IBM Personal Communications product may support GDDM.
要完全控制字符缓冲区,请查看 Dynamic Screen Manager (DSM) APIs。 DSM API 是 "a set of screen I/O interfaces that provide a dynamic way to create and manage screens for the Integrated Language Environment® (ILE) high-level languages. Because the DSM interfaces are bindable, they are accessible to ILE programs only."
我知道存在允许在 as/400 上对显示图形进行编程的 DDS 文件,但是还有其他方法吗?
具体来说,我想要做的是直接操作终端缓冲区,以便能够显示除文本之外的任何其他内容。
例如,终端看起来像这样:
比方说,在内存中,将有一个二维字符数组:text[20][80] 用于文本菜单,低于此,将有一个大小为 [200][800] 的像素缓冲区数组].
有没有办法直接访问这两个数组? 我希望能够完全用 C 创建一个可显示的菜单,而不需要显示文件,并且还可以直接在像素缓冲区中显示其他类型的图形(图像)。
在 ILE C/C++ 中有一种方法可以做到这一点。调查起来很有趣,因为我自己还没有尝试过。
唯一的 documentation on it (page 183+) I could find is from 5.1, but you are able to cross reference the functions used to this 7.3 manual(可能是第 vii/7 页)查看它们是否仍然使用相同。
希望对您有所帮助!
Is there a way to access either of those arrays directly?
这很简单,尽管仍然需要没有格式化字段的 "display file"。 'file' 将是程序和物理设备(或模拟器)之间的连接。您可以定义一个大区域,其中包含您希望程序放入其中的任何内容 "text"。这甚至可以包括分隔输入区域的显示字段属性。
对于大多数控件来说,DDS USRDFN keyword是合适的。但是对于像菜单项列表这样的简单内容,几乎任何大文本字段都可以输出到。
输出简单的文本很容易。对于像 USRDFN 格式化这样的详细内容,需要详细了解 5250 协议。
一种替代方法是使用 User Interface Manager (UIM) APIs 通过其 USREXIT= 应用程序更新面板的 "text area" (:TEXT)。 UIM 处理任何 "display file" 定义和实际 I/O 的一切。 UIM 可以被认为是 5250 的 HTML 接口,并使用非常相似的标记语言来定义 PANEL。
另一种选择是Dynamic Screen Manager (DSM) APIs。这些提供了比 UIM 或 DDS 方法更精细的控制(尽管 DDS USRDFN 非常接近)。但与 USRDFN 一样,实际的设备控制将需要 5250 协议知识。
...and also display other kind of graphics (images) directly in the pixel buffer.
5250 没有 "pixel buffer",甚至 'pixels'。它是一种基于字符的协议,如 telnet。如果你想要图像或 'pixels',你会喜欢浏览器界面,或者可能 Java 和 NAWT,或 X-windows,等等
现在,假设有了 TCP/IP 和套接字,您基本上可以做任何您能够编程的事情。无论您能想出怎么做,包括 downloading/installing 第 3 方代码库,您都可以在服务器周围的网络限制范围内进行。但它实际上是一个服务器,所以GUI类型的应用程序一般不应该运行在上面。这与几乎所有类型的服务器都一样。在客户端系统而不是服务器上编写 GUI。但如果你真的想做,你可以做。
我不确定你为什么要这样做...
现在,简单地将输出生成为 HTML 并通过集成的 apache 网络服务器提供它会容易得多。
但是如果你真的想通过 5250 做图形,它是可以做到的......至少理论上是这样。在平台上20多年,我从未见过它。
但是早在(1994 年?),IBM 将对 Graphical Data Display Manager (GDDM) and Presentation Graphics APIs 的支持添加到 OS/400 中。 “GDDM 是一种手段 显示、打印或绘制图片。演示图形例程是 显示、打印或绘制商业图表的方法。
支持还在OS。但是,客户端支持 NOT 在 IBM i Access for Windows 或最近发布的客户端 IBM Access Client Solutions (ACS) 中可用。似乎独立 IBM Personal Communications product may support GDDM.
要完全控制字符缓冲区,请查看 Dynamic Screen Manager (DSM) APIs。 DSM API 是 "a set of screen I/O interfaces that provide a dynamic way to create and manage screens for the Integrated Language Environment® (ILE) high-level languages. Because the DSM interfaces are bindable, they are accessible to ILE programs only."