文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程J2EE/J2MEMIDP终端模拟之二:高级终端模拟
精品推荐
特别推荐
·J2EE Web开发技术期待一次新的技术变革
·J2ME程序开发初学者快速入门的九大要点
·使用技巧:J2ME中程序优化的十个小方法
·RMS从入门到精通之一
·J2EE应用程序中SQL语句的自动构造方法
·解决J2EE系统应用性能问题常用优化项目
·J2EE实用技巧:提升JSP应用程序的绝招
·J2ME内存优
·J2ME简介
·J2EE技术
热点TOP10
·FC API(JSR 75)简单讲解
·用J2ME实现简单电子邮件发送功能
·3D数学知识简介
·从自定义字节数组创建图片
·JBoss 文档(三) JBoss和JMS
·通用联接框架(GCF)连接类型使用总结
·基于J2EE的Blog平台
·JBoss文档(二)??JBoss开发、打包、部署
·MIDP终端模拟之一:一个简单的模拟器MIDlet
·MIDP终端模拟之二:高级终端模拟
·经典飞机游戏代码S60
·走进JBoss (1)
·基于MIDP1.0实现通信录
·RMS高效编程指南
·Spring 系列:当 Hibernate 遇上 Spring
·介绍J2ME可选包WMA(JSR120)
·J2ME联网中采用序列化机制
·Spring 系列:Spring JMS 消息处理
·JBOSS4数据源配置大全
·J2ME可选包—PIM介绍

MIDP终端模拟之二:高级终端模拟

日期:2007年5月11日 作者: 查看:[大字体 中字体 小字体]


下载 项目源代码

在本系列的第一篇文章中,我们构建了一个简单的可在任何支持 TCP/IP 插槽的 MIDP 设备上运行的终端模拟器。它包含一个实现 Telnet 协议的 Connection 和一个经过定制来显示终端内容的 Canvas。在第二篇文章中,我假定您已经阅读了第一篇文章并熟悉了这些组件。

MIDP终端模拟之二:高级终端模拟(图一)现在我们将进一步加强这个应用程序。首先,我们将通过添加一个更高级的终端类型来增加一些复杂性。然后我们将添加对用户输入的支持——注意大多数移动设备的各种限制。完成后,我们就能够使用这个应用程序来通过 Telnet 连接到远程服务器并运行许多种类的程序,而这一切都是从您的 MIDP 设备来进行的。

关于 ANSI 终端

在上一篇文章中我们实现了一个“哑巴”终端。它显示的仅仅是一个字符流,当进入的字符到达屏幕的边缘时就换行到下一行,在遇到一个换行符时就跳到下一行。虽然这种程度的交互性对于整代的命令行应用程序是足够的,但较复杂的软件则将屏幕作为一个整体来处理,这就需要编写和清除特定位置的字符以提供更好的用户体验。

这里有一段有趣的历史。在 20 世纪 70 年代,众多生产视频终端的厂商提供的屏幕操纵功能专有且各不相同,并以不兼容的方式来实现。要编写可利用多种这样的设备的面向屏幕的软件就很困难。

American National Standards Institute (ANSI) 参与进来。坚持其通过可互操作性来支持商业的要求,ANSI  介入并发布了标准 X3.64:Additional Controls for Use with American National Standard Code for Information Interchange。这个文件定义了现在所知的 ANSI 终端类型。它对将光标移动到屏幕上的特定位置、在光标位置插入和删除字符都规定了标准的命令序列。

最为重要的是命令序列定义自身,因为即使是未实现所有命令的终端也至少能够将不支持的命令识别为命令,并安全地忽视它们。这一进步使得软件开发商可以按照通用标准来编写,并确信他们的应用程序能够至少占用较小的容量来在很多厂商的设备上运行。ANSI 的故事是软件行业一个重复出现的主题的一个很好的例子:采用一种标准会极大地扩展可互操作性。

ANSI 终端标准是一种很像 Telnet 协议的协议。它定义了多个特殊的字符序列,使一个应用程序可区分要解释的命令和要显示到屏幕的数据。

ANSI 终端是我们将要模拟的终端类型。TelnetConnection 已经在其到达屏幕之前过滤出 Telnet 握手和协商;现在我们将增加另一个过滤器来过滤出并解释 ANSI 命令。因为这些命令是我们的终端的指令,实现该逻辑的最好的地方就是在 TelnetCanvas 类自身中。

终端转义序列如何工作?

当 Telnet 使用字节值 255 来以信号方式表示一个命令序列时,ANSI 使用 ASCII 转义序列,其值是 27。ANSI 将如下工作:

我们从输入读取一个字节。如果其值不是 27 (ESC),则它不是一个命令∶我们将它直接送到应用程序并继续读取。

我们读取下一个字节。如果其值不是 133 ([),则它不是一个命令;我们将该字节后所跟的 27 直接送到应用程序并继续读取。

我们将继续读取,直到读取到大于 63 的一个字节。这些字节形成一个字符串,其中含有命令的参数。最后一个字节(是 64 或更大)是命令代码。我们处理(或忽略)该命令并继续读取。

许多命令从官方来讲是标准的一部分。虽然完全模拟是一个值得的目标,我们仍将精力放在获得足够的功能来使众多软件可以接受地运行。我们将实现以下命令:

Cursor Control Sequences Erase Sequences A Move cursor up n lines @ Insert n blank spaces B Move cursor down n lines J Erase display: after cursor (n=0), before cursor (n=1), or entirely (n=2). C Move cursor forward n spaces D Move cursor backward n spaces K Erase line: after cursor (n=0), before cursor (n=1), or entirely (n=2). G Move cursor to column x H Move cursor to column x, row y L Insert n new blank lines d Move cursor to row y M Delete n lines from cursor s Save current cursor position P Delete n characters from cursor u Return to saved cursor position  


[1] [2] [3] [4] [5] [6] 下一页 




上一篇:MIDP终端模拟之三:MIDP 的自定义字体

下一篇:MIDP终端模拟之一:一个简单的模拟器MIDlet

MIDP终端模拟之二:高级终端模拟 相关文章:
·MIDP终端模拟之二:高级终端模拟
MIDP终端模拟之二:高级终端模拟 相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn