欢迎来到天天文库
浏览记录
ID:33142852
大小:134.30 KB
页数:9页
时间:2019-02-21
《银行项目android端架构设计文档》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、银行项目Android端架构设计文档一、通信图柜外清即是我们的Android机器,它和PC通过串口及USB连接;PC端动态库也类似于HttpRequest/Response的方式通讯,即PC端动态库作为Client端,柜外清作为Server端;二、PC端动态库与柜外清间的通讯约定1、多字节采用小端约定;2、所有字符串统一用UTF-8编码;三、架构设计图逻辑上采用分层架构的设计,协议处理和数据通讯层,不需要修改和维护,只需要关心“请求处理层”及以上的就可以了。请求处理层:处理数据包的数据细节,调用“控制层”的接口,并生成返回包;控制层:此层不会涉及数据包且都是单例,向外提
2、供接口调用;不存在跨层的调用,每层只和相邻的层有联系;对象交互图如下:其中RawHandler是对特殊包的处理,主要是为了兼容比较短小的非协议包;时序图如下:一、目录管理在内置SD卡的根目录新建”Nantian”文件夹,所有文件都以它为主目录,其下的目录有如下:"Picture"、"Video"、"Audio"、"Package"、"Sign"、"Web"、"Download"分别存放相应的文件。二、源码示例程序的包结构图如下:每个模块都有自己相应的包,我们主要关注的是com.nantian.home.handler包及其它模块包;publicclassFileHand
3、lerimplementsPacketHandler{privateFileManagermanager=FileManager.instance();publicFileHandler(){}@Overridepublicvoidregister(){ProtocolManagermanager=ProtocolManager.instance();manager.register(0x4601,this);manager.register(0x4602,this);manager.register(0x4603,this);manager.register(0x46
4、05,this);manager.register(0x4606,this);}@Overridepublicvoidhandle(PacketRequestreq,PacketResponseresp){byte[]data=req.getData();byte[]send=null;switch(req.getId()){case0x4601:send=getFileList(data[0]);break;case0x4602:if(!writeFileData(req)){resp.setErrno((short)0xFF00);}break;case0x4603
5、:deleteFile(req);break;case0x4605:send=getFileInfo(req);if(null==send){resp.setErrno((short)0xFFFF);}break;case0x4606:send=readFileData(req);if(null==send){resp.setErrno((short)0xFFFF);}break;default:break;}resp.write(send);}privatebyte[]getFileList(inttype){String[]list=manager.getFileL
6、ist(FolderType.values()[type]);byte[]data=null;if(null!=list&&list.length>0){StringBuildersb=newStringBuilder();for(inti=0;i7、yte[]data=req.getData();Stringname=req.getString(2,data[1]);if(0xFF==(req.getByte(0))){if("*.*".equals(name)){manager.deleteAllFile();}else{manager.deleteFile(name);}}else{FolderTypetype=FolderType.values()[data[0]];if("*.*".equals(name)){manager.deleteAllFile(type);}else
7、yte[]data=req.getData();Stringname=req.getString(2,data[1]);if(0xFF==(req.getByte(0))){if("*.*".equals(name)){manager.deleteAllFile();}else{manager.deleteFile(name);}}else{FolderTypetype=FolderType.values()[data[0]];if("*.*".equals(name)){manager.deleteAllFile(type);}else
此文档下载收益归作者所有