0 0

如何通过面向对象的方式实现串口通讯协议?5

硬件的通讯协议通常是这样的: 

 

<STX><STX><COMMAND>[<DATA><DATA>...]<CHKSUM><ETX>

这里:

 

<STX> 帧开始标志(比如0xF5);
<COMMAND> 命令类型(比如0x01表示读,0x02表示写,等等);
<DATA> 数据;
<CHKSUM> 校验码;
<ETX> 帧结束标志(比如0xFE)。

这样,这个协议就固定下来了。

 

由于<COMMAND>和<DATA>部分的不同(1个字节?多个字节?),这个通讯协议可能有很多中帧格式(包括请求帧,和响应帧)。比如:

 

读命令1:
发送:<STX><STX><0x01><0x00><CHKSUM><ETX>
返回:<STX><STX><0x01><0x02><CHKSUM><ETX>
数据区返回的是byte(1个byte)

读命令2:
发送:<STX><STX><0x02><0x00><CHKSUM><ETX>
返回:<STX><STX><0x02><0x02><0x03><0x04><0x05><CHKSUM><ETX>
数据区返回的是int(4个byte)

 

上层软件应该如何设计(OOP?),才能更好的满足下面的扩展:

1:帧格式的扩展,当有新的<COMMAND>和<DATA>,就会有新的请求帧和响应帧);

2:通讯协议的扩展,比如说上层软件要求兼容另外一种串口设备,要求与之通讯。

2012年12月04日 16:03

1个答案 按时间排序 按投票排序

0 0

你好,我没做过这块

我说说我大体思路吧:

数据可否封装成如Request/Response对象,然后就是个Map,这样最好扩展,预定义好key如(COMMAND)

1:帧格式的扩展,当有新的<COMMAND>和<DATA>,就会有新的请求帧和响应帧);
这个直接添加即可

2:通讯协议的扩展,比如说上层软件要求兼容另外一种串口设备,要求与之通讯。
这个可以考虑适配器设计模式

2012年12月05日 14:45

相关推荐

    C#工控上位机开发串口通讯源码工程,C#工控上位机开发串口通讯源码工程,Modbus RTu、TCP等通讯协议,上位机小程序,界

    C#工控上位机开发串口通讯源码工程,C#工控上位机开发串口通讯源码工程,Modbus RTu、TCP等通讯协议,上位机小程序,界面详见附件图片, 这是一个C#语言开发的工控上位机串口通讯源码工程,支持多种通讯协议,例如...

    java开源包3

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包4

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    Delphi深度编程技术

    9.4.3 利用SPCOMM通讯组件实现串口通讯的实例 应用篇:物资管理信息系统项目应用开发 第10章 物资管理信息系统概述及其总体框架设计 10.1 系统总体结构设计 10.2 物资管理信息系统需求定义和业务流程图 ...

    VC与Labview、Matlab编程论文资料[2].rar

    Java调用VC_DLL实现串口GPS的访问.pdf LabVIEW_快速构建步进电机控制系统的利器.pdf LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法...

    VC与Labview、Matlab编程论文资料

    Java调用VC_DLL实现串口GPS的访问.pdf LabVIEW_快速构建步进电机控制系统的利器.pdf LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法...

    VC与Labview、Matlab编程论文资料[4].rar

    Java调用VC_DLL实现串口GPS的访问.pdf LabVIEW_快速构建步进电机控制系统的利器.pdf LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    9.3.3 程序的具体设计和实现 9.4 利用SPC0MM组件实现串口通信编程 9.4.1 SPCOMM组件的安装 9.4.2 SPCOMM组件的属性、方法和事件 9.4.3 利用SPCOMM通讯组件实现串口通讯的实例 应用篇:物资管理信息系统项目应用开发 ...

    java开源包1

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包11

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包2

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包6

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包5

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包10

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包8

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包7

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包9

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    java开源包101

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    Java资源包01

    WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

Global site tag (gtag.js) - Google Analytics