(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf_第1页
(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf_第2页
(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf_第3页
(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf_第4页
(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf_第5页
已阅读5页,还剩104页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式的javapos库的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 u n i f i e d p o s 是一个国际的p o s 设备规范标准 它对各种p o s 设备进行统一规 范 完全独立于操作系统 与语言无关 目前u n i f i e d p o s 有两种实现 基于o l e 的o p o s 和基于j a v a 的j a v a p o s o p o s 只能运行于m i c r o s o f t 系统之上 不仅在 平台方面受到限制 而且需要支付昂贵的版税 限制了它的发展 s u n 公司于1 9 9 7 年就已经完成了u n i f i e d p o s 的j a v a 实现 形成了j a v a p o s 标准 该标准的委员会 由零售厂商和用户共同形成 主要目的是为基于j a v a 的零售应用程序提供设备接 口 它可以运行在任何可以运行j a v a 虚拟机的操作系统之上 使用基于j a v a p o s 的p o s 解决方案主要有以下几个优点 通过使用瘦客户端可以降低p o s 终端的成本 应用程序平台独立性 应用程序可以与硬件平台和特定操作系统相分离 降低了管理成本 因为应用程序和支持软件可以放在一个服务器上 可以 根据需要通过j a v a 下载 缩短开发周期和上市时间 因为上层的应用程序是基于j a v a 的 因此应 用程序和下层软件同时进行 并且当硬件平台和操作系统发生改变时 应 用程序可以保持不变 目前j a v a p o s 已经在欧美和日本等国家德到了广泛的应用 i b m 的大部分p o s 终端都采用了该标准 并且大部分的p o s 设备厂商都提供了基于j a v a p o s 的设备 驱动程序 但是该标准在国内还基本上没被采用 因此本论文就设计和实现了一 个嵌入式的j a v a p o s 库 它是面向嵌入式p o s 的 符合j a v a p o s 规范和国家税控 金融标准的 开放的基于j 2 m e 的通用p o s 软件库 它很好地解决了嵌入式p o s 系统可移植性 动态加载 安全性 跨平台等多方面的问题 很容易支持第三方 开发应用软件 可以简化和规范p o s 应用的开发流程 大大缩短应用系统的开发 周期和上市时间 在本论文中介绍的主要内容包括 1 介绍了j a v a p o s 库整体框架及优点 详细的介绍了j a v a p o s 库系统中各个 部分的作用 设计 2 介绍了整个系统的设备管理及有关本地 n a t i v e 方法向j a v a p o s 上层上报 电子科技大学硕士学位论文 事件机制的设计与实现 3 介绍了j a v a p o s 库的设备驱动程序模型 打印机本地驱动程序和设备服务的 设计与实现 打印机驱动程序的测试以及设备的自检 4 介绍了对原有文件系统的改进和测试以及y a f f s 的移植 关键字 j a v a p o s 设备管理 文件系统 m u 1 1 0 y a f f s i i a b s 丁r a c t a b s t r a c t u n i f i e d p o si sa ni n t e r n a t i o n a la r c h i t e c t u r a ls p e c i f i c a t i o nf o ra p p l i c a t i o ni n t e r f a c e s t op o i n t o f s e r v i c ed e v i c e st h a ta r eu s e di nt h er e t a i le n v i r o n m e n t i ts p e c i f i e sa l lo f p o s d e v i c eu n i f o r m l ya n di s i n d e p e n d e n tf r o mo p e r a t i n gs y s t e ma n dl a n g u a g ei nt h e m e a n w h i l e u n i f i e d p o sh a st w oe x i s t i n gi m p l e m e n t a t i o n sa tp r e s e n t o p o sw h i c hi s b a s e do no l ea n dj a v a p o sw h i c hi sb a s e d0 nj a v a o p o sc a no n l yr u no nm i c r o s o f t s y s t e m w h i c hm a k ei tn o to n l yl i m i to np l a t f o r mb u tr e q u i r et op a ye x p e n s i v er o y a l t y t h i sl i m i t si t sd e v e l o p m e n t i n1 9 9 7 s u nm i c r o s y s t e mi n c e s t a b l i s h e dt h ej a v a p o s s t a n d a r d s j a v a p o ss t a n d a r d sc o m m i t t e ew a sf o r m e db yac o l l e c t i o no fr e t a i lv e n d o r s a n de n du s e r s i t 1ap r i m a r yg o a lo fp r o v i d i n gd e v i c ei n t e r f a c e sf o r t h er e t a i l a p p l i c a t i o n sw r i t t e ni nj a v a i tc a nr u no na n yo p e r a t i n gs y s t e mw h i c ht h ej a v av i r t u a l m a c h i n ec a nb em i g r a t e dt o t h eb e n e f i t so f j a v a p o si n c l u d e t h eo p p o r t u n i t yf o rr e d u c e dp o st e r m i n a lc o s t s t h r o u g ht h eu s eo f t h et h i n n e r c l i e n t s p l a t f o r m i n d e p e n d e n ta p p l i c a t i o n s w h e r et h ea p p l i c a t i o ni ss e p a r a t e df r o m b o t hh a r d w a r ea n do p e r a t i n gs y s t e ms p e c i f i c s r e d u c e da d m i n i s t r a t i o nc o s t s b e c a u s ea na p p l i c a t i o na n ds u p p o r t i n gs o f t w a r e m a y b em a i n t a i n e do nas e r v e ra n dl o a d e do nd e m a n db yj a v a s h o r t e nd e v e l o p i n gc y c l ea n dt h et i m eo f c o m i n gi n t ot h em a r k e t b e c a u s et h e a p p l i c a t i o no nt h et o pi sw r i t t e ni nj a v a t h ea p p l i c a t i o n sa n dt h ed r i v e r sc a l lb e d e v e l o p e da tt h es a m et i m ea n dt h ea p p l i c a t i o n sm u s tn o tb ec h a n g e dw h e nt h e o p e r a t i n gs y s t e ma n dt h eh a r d w a r e sc h a n g e a tp r e s e n t j a v a p o sh a sb e e nw i d e l yu s e di nt h eo c c i d e n ta n dj a p a n m o s to ft h e p o st e r m i n a l so fi b mc o n f o r mt oj a v a p o ss t a n d a r d sa n dm o s to fr e t a i ld e v i c ev e n d o r s p r o v i d et l l ed e v i c ed r i v e r so fp o sd e v i c e sb a s e do nj a v a p o s f o rt h em o m e n t j a v a p o sh a s n tb e e nu s e di no n rc o u n t r y s ow ed e s i g n e da n di m p l e m e n t e dt h es o f t w a r e l i b r a r yo fj a v a p o s i ti sa no p e na n du n i v e r s i a ls o f t w a r el i b r a r yf a c i n gt oe m b e d d e d i 电子科技大学硕士学位论文 一 p o sa n ds u i t a b l et ot h es p e c i f i c a t i o no f j a v a p o s t h es t a n d a r do f t a xc o n t r o l l i n ga n dt h e f i n a n c i a ls t a n d a r d so fs t a t e t h el i b r a r yp r o v i d e sag o o ds o l u t i o nf o rt h ep r o b l e m so f t h e t r a n s p l a n ta b i l i t y d y n a m i cl o a d i n g s a f e t ya n dc r o s s p l a t f o r mo f e m b e d d e dp o ss y s t e m i tc a ns u p p o r to t h e r3 r dp a r t yd e v e l o p i n ga p p l i c a t i o ne a s i l y s i m p l i f i e sa n ds t a n d a r d i z e s t h ed e v e l o p i n gf l o wo fp o sa p p l i c a t i o n a n ds h o r t e nd e v e l o p i n gc y c l ea n dt h et i m eo f c o m i n gi n t ot h em a r k e to fa p p l i c a t i o ns y s t e m i nt h i st h e s i s t h el i b r a r yo fj a v a p o s i n c l u d e s 1 i n t r o d u c et h ef r a m e w o r ka n db e n e f i t so fj a v a p o sa n dt h ef u n c t i o n s d e s i g n s a n di m p l e m e n t a t i o n so fe v e r yc o m p o n e n to fj a v a p o sa n dt h er e l a t i o nw i t h e a c ho t h e r 2 i n t r o d u c et h ed e s i g n sa n di m p l e m e n t a t i o n so f t h ed e v i c em a n a g e ra n dt h ee v e n t m e c h a n i s m 3 i n t r o d u c et h ed e v i c ed r i v e rm o d e lo f t h ej a v a p o s t h en a t i v ed e v i c ed r i v e ra n d d e v i c es e r v i c eo fp r i n t e r t h et e s to f t h ep r i n t e rd r i v e ra n dt h ed e v i c ec h e c k i n g 4 i n t r o d u c et h ei m p r o v e m e n to ft h eo r i g i n a lf i l es y s t e m t h et e s to ft h en e wf i l e s y s t e ma n d t h em i g r a t i o no f y a f f s k e y w o r d s j a v a p o s d e v i c em a n a g e r f i l es y s t e m m u 11 0 y a f f s i v 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果 据我所知 除了文中特别加以标注和致谢的地 方外 论文中不包含其他人已经发表或撰写过的研究成果 也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意 签名 壅缝垫日期 v 6 年 月 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留 使用学位论文 的规定 有权保留并向国家有关部门或机构送交论文的复印件和磁 盘 允许论文被查阅和借阅 本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索 可以采用影印 缩印或 扫描等复制手段保存 汇编学位论文 保密的学位论文在解密后应遵守此规定 乇盛 日期 a z 年 月夕日 第一章引言 1 1j a v a p o s 的介绍 第一章引言 u n i f i e d p o s 是一个国际的p o s 设备规范标准 它对各种p o s 设备进行统一规 范 完全独立于操作系统 与语言无关 目前u n i f i e d p o s 有两种实现 基于o l e 的0 p o s 和基于j a v a 的j a v a p o s o p o s 只能运行于m i c r o s o f t 系统之上 不仅在 平台方面受到限制 而且需要支付昂贵的版税 限制了它的发展 s u n 公司于1 9 9 7 年就已经完成了u m f i e d p o s 的j a v a 实现 形成了j a v a p o s 标准 它对p o s 设备 进行规范和统一 定义了一个多层次的体系结构 j a v a p o s 是一个国际性的标准 吸引了国际上绝大多数的p o s 公司 而且该标准有国际组织维护和发展 j a v a p o s 标准委员会的主要成员有 n c r i b m s u n j a v a s o f t e p s o n w i n c o rn i x d o 吐 f u j i t s u i c l d a t a f i t m g v u t c r c s t r i v e r s i t y 3 6 0 c o m m e r c e s t a rm i e r o n i c s j c p e n n y s e a r s h o m ed e p o ta n db e a r i n g p o i n t 等公司 1 2d a v a p o s 的现状 j a v a p o s 作为p o s 设备的一个国际性标准已经在欧美和日本等国家得到了广 泛的应用 i b m 的大部分p o s 终端都采用了该标准 并且大部分的p o s 设备厂商 都提供了基于j a v a p o s 的设备驱动程序 但是该标准在国内还基本上没被采用 目前国家正在进行税控收款机的改革 北京科银京成技术有限公司抓住机遇为国 内的p o s 厂商提供了基于嵌入式的j a v a p o s 的 通用的p o s 终端软件平台 e j a v a p o s 该平台包括开发平台 运行平台和测试生产平台 其中开发平台包括 嵌入式j a v a p o s 开发环境 调试工具和j a v a p o s 支持系统 运行平台包括j 2 m e 设备管理 j a v a p o s 支撑环境和商业应用支撑环境等 测试生产平台包括对p o s 设备和j a v a p o s 实现按照u n i f i e d p o s 标准进行测试的工具 大批量生产所需的工 具等 具体描述及实现在以后的章节里将详细介绍 电子科技大学硕士学位论文 1 3 嵌入式系统的介绍 嵌入式系统 e m b e d d e ds y s t e m 指的是以微处理器 m c u m i c r o c o n t r o l u n i t 为核心 用以控制特定设备的专门的系统 嵌入式系统到现在为止还没有统一的 定义 一般可被定义为 以应用为中心 以计算机技术为基础 软件硬件可裁剪 适应应用系统对功能 可靠性 成本 体积 功耗严格要求的专用计算机系统 嵌入式系统广泛应用于社会的各个领域 如制造工业 过程控制 通讯 仪器 仪表 汽车通信和消费电站产品等 随着嵌入式c p u 和内存等硬件的快速发展 嵌入式系统的功能也随之越来越 复杂了 因此为了使嵌入式系统具有更强的功能 更好的扩展性 将操作系统加 入到嵌入式系统中已经成为一种趋势 嵌入式操作系统 e m b e d d e do p e r a t i n g s y s t e m 支持嵌入式系统硬件平台 封装了硬件细节 向应用软件提供高层软件 开发接口 1 4 研究内容和文章组织 本文以j a v a p o s 为基础 开发出了基于嵌入式j 2 m e 的通用p o s 软件平台 e j a v a p o s 该软件平台为嵌入式p o s 厂商提供了一套完整的软件开发平台 目前 该平台已经在税控收款机领域取得了广泛的应用 本文完成了e j a v a p o s 库的整体设计与实现 在其上开发了硬件的设备驱动程 序 并且解决了有关数据处理的关键问题 为整个e j a v a p o s 系统的应用软件提供 了接口 本文只设计与实现了e j a v a p o s 库 为p o s 厂商提供p o s 的软件平台的 解决方案 因此系统的应用程序不在讨论的范围内 第一章为引言 简要地介绍了j a v a p o s 及其现状 然后介绍了 下嵌入式系 统和本文研究的内容和文章组织 第二章详细的介绍了j a v a p o s 的整个框架 首先介绍了它整体框架及优点 然后详细的介绍了j a v a p o s 各个部分的作用 设计与实现及各个模块之间的关系 第三章具体介绍了整个系统的设备管理及有关本地 n a t i v e 方法向j a v a p o s 上层上报事件机制的设计与实现 第四章介绍了j a v a p o s 设备驱动程序模型 然后重点介绍了打印机的设备服 第四章介绍了j a v a p o s 设备驱动程序模型 然后重点介绍了打印机的设备服 2 第一章引言 务和本地驱动程序以及打印机的测试 最后还介绍了设备的自检 第五章主要介绍了对原来文件系统的改进和y a f f s 文件系统的移植 第六章是全文的总结 介绍了j a v a p o s 的现状 本课题的特色与创新以及目 前实现的 a v a p o s 库的不足 电子科技大学硕士学位论文 第二章j a v a p o s 系统的研究与分析 2 1d a v a p o s 概述 j a v a p o s j a v af o rr e t a i lp o s 为基于j a v a 技术平台的应用程序提供了一套通 用的p o s 设备解决方案 它是u m f i e d p o s 结构的一种实现 其定义如下 1 1 j a v a p o s 访问设备的体系结构 丰富的访问p o s 设备的应用程序接口 a p i j a v a p o s 标准协会是由一些著名的零售厂商和p o s 设备生产厂商成立的 其 主要的目的是为基于j a v a 的零售应用程序提供标准的访问p o s 设备的标准接口 它并没有提供具体的实现 只提供了如下的一些j a v a 代码 1 定义文件 一套简单的设备控制类 用来为基于j a v a p o s 的应用程序提供 接口 j p o s c 0 1 1 f i 鲫o a d e r j c l 配置和服务的加载事例 2 2d a v a p o s 的优点 使用基于j a v a p o s 的p o s 解决方案主要有以下几个优点 1 通过使用瘦客户端可以降低p o s 终端的成本 应用程序平台独立性 应用程序可以与硬件平台和特定操作系统相分离 降低了管理成本 因为应用程序和支持软件可以放在一个服务器上 可以 根据需要通过j a v a 下载 快速的上市时间和市场适应能力 因为上层的应用程序是基于j a v a 的 因此应用程序和下层软件同时进行 并且当硬件平台和操作系统发生改变 时 应用程序可以保持不变 4 第二章j a v a p o s 系统的研究与分析 2 3j a v a p o s 的体系结构 j a v a p o s 定义了一个多层次的体系结构 如图2 l 所示 p o s 应用程序通过 j a v a p o s 与具体的物理的或者逻辑的设备进行交互 图中每一层的作用和功能分别 定义如下川 1 p o s 应用程序指使用一个或者多个j a v a p o s 设备的j a v a 应用程序或者 a p p l e t 程序 应用程序通过j a v a 实现的j a v a p o s 设各接口操作和访问j a v a p o s 系 统中的设备 2 j a v a p o s 设备分为不同的设备类 u n i f i c d p o s l 8 标准中一共定义了2 4 种设备类 如钱箱 p o s 打印机等 每个j a v a p o s 设备在逻辑上分为两层 j a v a p o s 设备控制 d e v i c ec o n t r 0 1 它提供应用程序和设备类之间的接口 遵守j a v a b e a n sa p i 的接口标准 设备控制是用来保证使每一类设备都提供相同的 应用程序接口 与同类的设备服务的实现无关 j a v a p o s 设备服务 d e v i c es e r v i c e 是设备控制通过j a v a p o s 设备服务接口 s e r v i c ei n t e r f a c e 调用的j a v a 类 设备控制可以通过它来实现对j a v a p o s 定义 的物理设备进行操作 设备服务也可以通过调用设备控制提供的特殊的事件方法 来向应用程序发送特定的事件 在j a v a p o s 系统中必须为每一个系统中的物理设 备实现相应的设备服务 只要这样才能实现对物理设备进行操作 p o s 应用程序 j a v a p o sa j a v a p o s 八 设各石 p n c j a v a p o s 设务控制 一设备眼1 鬈辖口 二 j a v a p o s 设备服务 物理 或逻辑 设备 图2 1j a v a p o s 的体系结构图 电子科技大学硕士学位论文 应用程序必须通过调用j a v a p o s 设备的a p i d e v i c ec o n t r 0 1 来实现对p o s 物理设备的操作 某些物理设备支持多种设备类 例如 有些p o s 打印机包括了 对钱箱的控制 但是在j a v a p o s 系统中 应用程序把每类设备都当成是一个独立 的物理设备 j a v a p o s 体系结构中还包含了附加的层和应用程序接口 a p i 以便和j a v a 环 境更好的整合到一起 如图2 2 所示 有关j c l 的详细描述将在设备服务管理一 节中详细介绍 图2 2 带附加的j a v a p o s 的体系结构图 2 4d a v a p o s 的设备行为模型 2 4 1 属性 方法和事件 应用程序是通过j a v a p o s 的a p i 访问j a v a p o s 设备 j a v a p o s 的a p i 有三部 分组成 1 1 属性 设备的特性或者设置 属性的类型通常是布尔 b o o l e a n 或者字 符串型 s t r i n g 应用程序可以获得一个设备的属性值 并且也可以设置可写的属 6 第二章j a v a p o s 系统的研究与分析 性值 j a v a p o s 的属性遵循j a v a b e a n 属性的设计模式 要获得一个设备的属性值 通过以下方法 t y p eg e t s a m p l e p r o p e r t y 0t h r o w sj p o s e x c e p t i o n 其中 t y p e 是属性的数据类型 s a m p l e p r o p e r t y 是属性名称 要设置 个设备的属性值 通过以下方法 v o i ds e t s a m p l e p r o p e n y t y p e v a l u e t h r o w sj p o s e x c e p t i o n 其中 t y p e 是属性的数据类型 s a m p l e p r o p e r t y 是属性名称 2 方法 应用程序通过调用方法 m e t h o d 来操作物理或者逻辑设备 j a v a p o s 的方法形式如下 v o i ds a r n p l e m e t h o d p a r a m e t e r s t h r o w sj p o s e x c e p f i o n 其中 s a m p l e m e t h o d 为方法名 p a r a m e t e r s 为零个或者多个参数列表 有些方 法可能有返回值 3 事件 j a v a p o s 设备可以通过事件向应用程序发送信息 应用程序必须 为它需要接受的事件进行注册 j a v a p o s 事件遵循j a v a b e a n 事件的设计模式 2 4 2 设备的初始化与终结 2 4 2 1 初始化 应用程序要使用j a v a p o s 设备以前必须经过如下的步骤 通过创建实例 i n s t a n c e 或者通过访问已经存在的实例 i n s t a n c e 来得 到一个j a v a p o s 设备控制的应用 通过设备控制的相应方法来注册应用程序需要接受的事件 要初始化个一个物理设备 一个应用程序可以调用一个设备的o p e n 方法 v o i do p e n s 订i n gl o g i e a l d e v i c e n a m e t h r o w sj p o s e x c e p t i o n 其中 参数l o g i c a l d e v i c e n a m e 指定一个与j a v a p o s 设备相关的逻辑设备 o p e n 方法通常执行如下步骤 1 利用指定的设备名创建或者初始化一个适当的设备服务类实例 电子科技大学硕士学位论文 2 初始化设备的属性值 其中包括j a v a p o s 设备的描述和版本号 同时可以有多个设备控制实例打开同一个物理设备 因此 当设备被o p e n 后 应用程序必须通过调用c l a i m 方法来独占该设备 c l a i m 设备后可以确保别的设备 实例 i n s t a n c e 无法访问该设备 应用程序通常在一个事务完成之后 就会释放 r e l e a s e 该设备 以便可以与其他的设备控制实例共享该设备 在使用设备前 应用程序必须把设备的d e v c i e e n a b l e d 属性设置为t r u e 这样 才可以使设备进入可操作的状态 例如 当j a v a p o s 设备扫描枪的d e v c i e e n a b l e d 属性被设置为f a l s e 时 无论扫描器是否进行条形码的扫描 任何输入的数据都将 被丢弃 直到该属性被设置为t r u e 2 4 2 2 终结 在应用程序用完物理设备后 应该调用c l o s e 方法关闭设备 如果此时 d e v i c e e n a b l e d 属性为t r u e c l o s e 方法会同时将其设置为f a l s e 同样如果c l a i m e d 属性为t r u e c l o s e 也会将其设置为f a l s e 的 在应用程序退出前应该关闭所有在应用程序中打开的j a v a p o s 设备以便及时 地释放设备资源 而不应该依赖j a v a 的垃圾回收机制在未来不确定的时间对其进 行回收 2 4 2 3 总结 总的说来 一个应用程序必须采用如下的流程来使用j a v a p o s 的设备 得到一个设备控制的应用 注册关心的事件 增加监听者 调用o p e n 方法来实例化设备服务 并且将其与设备控制进行关联 调用c l a i m 方法以便独占访问该物理设备 将设备的d e v i c e e n a b l e 属性设置为t r u e 以使物理设备进入可操作状态 对 于共享设备通常只需将d e v i c e e n a b l e 设置为t r u e 无需先c l a i m 使用该设备 设置d e v i c e e n a b l e 属性设置为f a l s e 以便禁用该物理设备 调用r e l e a s e 方法来释放对物理设备的独占 第二章j a v a p o s 系统的研究与分析 调用c l o s e 方法 取消设备服务与设备控制的关联 注销事件 删除监听者 2 4 3 设备的共享模型 j a v a p o s 设备分成两种共享类别 l l 只能被一个j a v a p o s 设备控制实例独占使用的独占设备 能部分或者全部的被多个j a v a p o s 设备控制共享的共享设备 任何物理设备都可以在同一事件被多个设备控制实例打开 但是只有c l a i m 过 的才可以访问该物理设备 2 4 3 1 独占使用的设备 大部分的设备类型都是独占设备 例如p o s 打印机 由于物理或者操作的特 性 个独占设备在同一时间只能被一个设备控制使用 应用程序在使用物理设 备以前必须通过c l a i m 来独占该设备 否则在c l a i m 以前调用方法或者访问属性的 话都会产生带有错误码为j p o sen o t c l a i m e d j p o sec l a i m e d 或 j p o s t d i s a b l e d 的j p o s e x c e p t i o i l 异常 另外 在设备没有被c l a i m 以前也不 会产生事件的 应用程序正确地调用了设备控制的初始化操作后 就可以对该设备进行一系 列的操作了 用完后可以通过调用r e l e a s e 方法来释放该设备 这样另外的设备控 制实例就可以被重新c l a i m 了 当应用程序重复调用c l a i m 方法时 假设在打开一个设备后没有调用c l o s e 方 法 时 某些可设置的属性会被恢复到r e l e a s e 时的状态 例如 客显的亮度 打 印机每行的字符数等 但是状态属性不会被恢复 例如打印机的传感器属性 这 些值只会根据它们当前的状态值进行更新 2 4 3 2 共享设备 有些设备是共享设备 如键盘 一个共享设备允许被多个设备控制同时调用 其方法和访问其属性 也可以向所有注册监听者的设备控制发送事件 一个共享 设备也可能在c l a i m 以前限制某些方法的调用或属性的访问 对事件也有可能是这 样的 电子科技大学硕士学位论文 2 4 4 异常 除了访问设备控制的版本号外 所有的j a v a p o s 方法和属性的访问在失败的 情况下都会抛出j p o s e x c e p t i o n 的异常 j p o s e x c e p t i o n 在包 p a c k a g e j p o s 中 该异常继承于j a v a 1 a n g e x c e p t i o n 它 的不同构造函数如下 p u b l i cj p o s e x c e p t i o n i n te r r o r c o d e p u b l i cj p o s e x c e p f i o n i n te r r o r c o d e i n te r r o r c o d e e x t e n d e d p u b l i cj p o s e x c e p t i o n i n te o r c o d e s t r i n gd e s c r i p p u b l i cj p o s e x c e p t i o n i n te r r o r c o d e h a te r r o r c o d e e x t e n d e d s t r i n gd e s c r i p p u b l i cj p o s e x c e p t i o n i me r r o r c o d e i n te r r o r c o d e e x t e n d e d s t r i n gd e s c r i p t i o n e x c e p t i o no r i g e x c e p t i o n 其中 参数的含义如下所示 e r r o r c o d e j a v a p o s 的错误码 通过g e t e r r o r c o d e 访问 e r r o r c o d e e x t e n d e d j a v a p o s 的扩展错误码 如果选择的构造函数没有提供则 被设置为0 可以通过g e t e r r o r c o d e e x t e n d e d 方法访问 d e c r i p 错误的描述信息 如果选择的构造函数没有提供 则根据e r r o r c o d e 和e r r o r c o d e e x t e n d e d 参数构建 可以通过父类的g e t m e s s a g e 或者t o s t r i n g 方法来 访问该信息 o r i g e x c e p t i o m 原始的异常 如果j a v a p o s 设备获得一个非j a v a p o s 异常 那 么就要选择一个合适的e r r o r c o d e 和一个初始的异常作为该参数 否则应该被设置 为n u l l 通过g e t o r i g e x c e p t i o n 方法来访问 2 4 5 事件 j a v a p o s 通过事件来通知应用程序j a v a p o s 设备的各种行为或者变化 在我 们的系统中使用了j a v a p o s 中规定的如下五种事件类型 1 第二章j a v a p o s 系统的研究与分析 表2 1j a v a p o s 的事件类型 事件类型描述 数据事件 d a t a e v e n t 物理设备产生了输入数据 错误事件 e r r o r e v e n t 事件驱动的输入或异步输出产生错误 输出完成事件 o u t p u t c o m p l c t e e v e n t 一个异步输出已经成功完成 状态更新事件 o u t p u t c o m p l e t e e v e n t 物理设备的状态发生了改变 直接输入输出事件 d i r e e t l o e v e n t 由设备服务的提供者定义 设各服务必须将这些事件压入内部创建和管理的事件队列中 所有的j a v a p o s 事件被以先进先出的方式进行处理 唯一的例外是当输入错误事件产生 并且在 该事件产生前事件队列中已经存在了一些数据事件 具体见 设备的输入模型 事件是通过设备服务线程产生的 设备服务通过调用设备控制的事件回调函数来 上报事件 然后设备控制在按顺序依次调用应用程序中注册的监听者 以下情况可以阻止事件的上报 应用程序将f r e e z e e v e n t s 属性设置为t r u e 当该属性被设置为t r u e 时设备 控制不会上报事件 事件也不会被压入事件队列 当该属性被设置为t r u e 时如果事件队列里有事件 则当该属性被重新设置为f a l s e 时 事件队列 里的事件可以被重新上报 通常在不愿接收事件时将该属性设置为t r u e 当属性d a t a e v e n t e n a b l e d 属性被置为f a l s e 此时输入的数据事件 d a t a e v e n t 不会被上报但是会被压入事件队列 以便当该属性被设置 为t r u e 时再向应用程序上报事件 同样在该属性被设置为f a l s e 时错误事 件也不会被上报的 事件队列的管理规则如下 j a v a p o s 设备只有在设备使能时才将新事件加入事件队列 设备必须处理加入事件队列的事件 直到应用程序调用r e l e a s e 方法 对 独占设备 或者c l o s e 方法 对所有设备 时才删除所有剩余的事件 对于输入设备 c l e a r i n p u t 方法将清除数据和输入错误事件 对于输出设备 c l e a r o u t p u t 方法将清除输出错误事件 2 4 5 1 注册事件 j a v a p o s 事件使用在j d k l 1 中提出的事件委托模型 利用该模型 应用程序 电子科技大学硕士学位论文 通过调用由设备控制提供的方法来注册事件 表2 2 指出每个事件类的事件接口和 方法 1 表2 2 事件类的事件接口和方法 事件类监听者接口和方法在应用源方法在设备控制中实现 程序类中实现 d a t a e v e n td a t a l i s t e n e r a d d d a t a l i s t e n e r d a t a l i s t e n e r1 d a t a o c c u r r e dl m o v e d a t a l i s t e n e r d a t a e v e n t e d a t a l i a e n e r1 e r r o r e v e n te r r o r l i s t e n e r a d d e r r o r l i s t e n e r e r r o r l i s t e n e r1 e r r o r o e e u r r e dr e m o v e e r r o r l i s t e n e r e r r o r e v e n te e r r o r l i s t e n e r1 s t a t u s u p d a t es t a t u s u p d a t e l i s t e n e r a d d s t a t u s u p d a t e l i s t e n e r e v e l i t s t a t u s u p d a t e o c c u r r e d s t a t u s u p d a t e l i s t e n e r1 s t a t u s u p d a t e e v e n te r e m o v e s t a t u s u p d a t e l i s t e n e r s t a t u s u p d a t e l i s t e n e r1 o u t p u t o u t p u t c o m p l e t e l i s t e n e ra d d o u t p u t c o m p l e t e l i s t e n e r c o m p l e t e e v e n to u t p u t c o m p l e t e o c c u r r e d o u t p u t c o m p l e t e l i s t e n e r1 o u t p u t c o m p l e t e e v e n te r e m o v e o u t p u t c o m p l e t e l i s t e n e r o u t p u t c o m p l e t e l i s t e n e r1 尽管一种事件类型可以注册多个监听者 但典型的应用是一种事件类型只注 册一个监听者或者一个主要的监听者 这些监听者通常负责处理数据或者对错误 事件做出相应的响应 2 4 5 2 事件的上报 一个设备通过调用每个注册监听者的监听方法来上报事件 事件监听者处理 事件然后返回到设备控制 应用程序不能假设事件是在某个特定的线程上下文中 上报事件 j a v a p o s 设备是在一个私有的线程中上报事件的 因此应用程序应该根 据需要负责应用程序与事件处理的同步 当应用程序在它的监听者方法中处理一 个事件时 设备不会上报其它的事件 在监听者的方法中应用程序可以访问设备 的属性和方法 但是一定不能调用r e l e a s e 和c l o s e 方法 因为r e l e a s e 方法可能关 闭事件处理 可能包括事件上报的线程 c l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论