




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
银行项目Android端架构设计文档1、 通信图柜外清即是我们的Android机器,它和PC通过串口及USB连接;PC端动态库也类似于Http Request/Response的方式通讯,即PC端动态库作为Client端,柜外清作为Server端;2、 PC端动态库与柜外清间的通讯约定1、多字节采用小端约定;2、所有字符串统一用UTF-8编码;3、 架构设计图逻辑上采用分层架构的设计,协议处理和数据通讯层,不需要修改和维护,只需要关心“请求处理层”及以上的就可以了。请求处理层:处理数据包的数据细节,调用“控制层”的接口,并生成返回包;控制层:此层不会涉及数据包且都是单例,向外提供接口调用;不存在跨层的调用,每层只和相邻的层有联系;对象交互图如下:其中RawHandler是对特殊包的处理,主要是为了兼容比较短小的非协议包;时序图如下:4、 目录管理在内置SD卡的根目录新建”Nantian”文件夹,所有文件都以它为主目录,其下的目录有如下:Picture、Video、Audio、Package、Sign、Web、Download分别存放相应的文件。5、 源码示例程序的包结构图如下:每个模块都有自己相应的包,我们主要关注的是com.nantian.home.handler包及其它模块包;public class FileHandler implements PacketHandler private FileManager manager = FileManager.instance();public FileHandler() Overridepublic void register() ProtocolManager manager = ProtocolManager.instance();manager.register(0x4601, this);manager.register(0x4602, this);manager.register(0x4603, this);manager.register(0x4605, this);manager.register(0x4606, this);Overridepublic void handle(PacketRequest req, PacketResponse resp) byte data = req.getData();byte send = null;switch (req.getId() case 0x4601:send = getFileList(data0);break;case 0x4602:if (!writeFileData(req) resp.setErrno(short)0xFF00);break;case 0x4603:deleteFile(req);break;case 0x4605:send = getFileInfo(req);if (null = send) resp.setErrno(short)0xFFFF);break;case 0x4606:send = readFileData(req);if (null = send) resp.setErrno(short)0xFFFF);break;default:break;resp.write(send);private byte getFileList(int type) String list = manager.getFileList(FolderType.values()type);byte data = null;if (null!=list & list.length0) StringBuilder sb = new StringBuilder();for (int i = 0; i 0) ret = manager.writeFileData(type, name, offset, data, pos, length, restBlocks);return ret;以文件管理模块为例,首先派生一个PacketHandler类, register()函数中向ProtocolManager注册关注的消息类型,ProtocolManager把它关注的消息作封装并发送给它;后面只需要在public void handle(PacketRequest req, PacketResponse resp)中处理接收到的消息就可以了。FileHandler 是协议相关的,因此还需要在com.nantian.home.file包中新建一个FileManager类来处理协议无关的接口操作;6、 其它非协议包数据包的支持Com.nantian.home.handler包中有一个特殊的类RawHandler,它是专门用来处理非协议包的数据,主要是用于特殊用途的扩充包;public class RawHandler private static RawHandler _instance;private RawHandler() public static RawHandler instance() if (null = _instance) _instance = new RawHandler();return _instance;/* * dont modify data */public boolean isRaw(byte data, int length) return false;public void handle(VanRequest req, VanResponse resp) public boolean isRaw(byte data, int length)函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 固精缩尿止带药课件
- 2025年无人机行业市场应用前景与发展机遇研究报告
- 2025年电子行业智能家居市场前景研究报告
- 2025年通讯设备行业通讯设备技术应用前景分析报告
- 商场员工安全防火培训课件
- 2025年电子游戏产业全球化市场前景报告
- 作品使用许可知识产权合同范本-知识产权合同5篇
- 吉林省2025春季吉林省地方水电集团有限公司招聘高校毕业生拟聘用人员笔试历年参考题库附带答案详解
- 南昌市2025上半年江西省地质局第二地质大队专业技术人才招聘5人笔试历年参考题库附带答案详解
- 乐至县2025四川资阳市乐至县引进急需紧缺专业人才88人笔试历年参考题库附带答案详解
- 2025年上半年海南三亚市知识产权保护中心选聘事业单位6人重点基础提升(共500题)附带答案详解
- 2025年辽宁现代服务职业技术学院单招综合素质考试题库附答案
- 电力电缆模拟题及答案
- 2025年药物制剂工(中级)考试题库(附答案)
- 仿古建筑施工常见问题及应对策略
- 辽宁省沈阳市2024-2025学年八年级上学期期末考试英语试题(含答案无听力原文及音频)
- 小班晨间活动体能大循环
- 绿化小型工程合同范例
- 涂层材料与叶轮匹配性研究-洞察分析
- 讯问笔录课件教学课件
- 《建筑工程设计文件编制深度规定》(2022年版)
评论
0/150
提交评论