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

相关推荐

    面向对象方法(UML)串口通讯的设计与实现

    在本文中,我们将探讨如何利用面向对象方法和UML(统一建模语言)来设计和实现串口通信系统,特别是在企业生产管理应用软件项目中的应用。串口编程在硬件设备集成,如电子看板、设备参数采集器和读卡器等的通讯中...

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

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

    vb使用串口通讯实例

    通过阅读和理解这些代码,可以深入学习VB如何实现串口通讯,并为自己的项目提供参考。 总之,VB串口通讯实例是连接硬件设备和软件系统的重要桥梁,掌握其原理和实践方法对于IT开发者来说至关重要。无论是与单片机的...

    一个串口通讯类和调用Demo 通过设置串口、设置串口自定义协议,可方便对串口发送数据与接收数据

    开发者可以通过查看和分析这个文件来学习如何实现串口通信功能,并根据自己的需求进行修改和扩展。 总的来说,这个项目提供了串口通信的工具和示例,对于需要进行串口编程的开发者来说非常实用。通过深入理解和运用...

    C#串口通信Modbus协议完整实例

    首先,C#是一种由微软开发的面向对象的编程语言,广泛应用于Windows平台上的应用开发,包括桌面应用程序、网络服务以及游戏开发等。在C#中实现串口通信,主要依赖于.NET框架提供的`System.IO.Ports`命名空间,它包含...

    基于Qt creator 实现ymodem协议 通过串口传输文件 可以用来做串口升级的功能等等 代码简单 容易懂.zip

    总结来说,通过Qt Creator实现Ymodem协议,可以高效地进行串口文件传输,特别适用于设备的固件升级。理解Ymodem协议的原理,熟练运用Qt的`QSerialPort`类,是完成这一任务的关键。实际开发时,还需要考虑线程安全、...

    串口通讯模块C# 串口通讯模块C#

    C#的System.IO.Ports命名空间提供了SerialPort类,用于实现串口通讯。以下是一些关键成员: 1. **SerialPort类构造函数**:用于初始化串口,如`new SerialPort("COM1", 9600)`,指定端口和波特率。 2. **Open()和...

    串口通讯.zip

    在这个"串口通讯.zip"文件中,包含了基于51单片机实现串口通讯的C++代码以及Proteus 8.6的仿真环境,为学习和实践串口通信提供了一个直观的平台。 串口通讯,也称为UART(通用异步收发传输器),是一种异步串行通信...

    地磅串口调试

    本文将深入探讨串口通信的基本原理、C#编程语言在实现串口通讯中的应用,以及地磅数据的调试方法。 串口通讯,又称串行通信,是计算机硬件和外部设备之间传输数据的一种方式。它以一位接一位的方式发送和接收数据,...

    C++侦听串口通讯程序

    串口通讯,也称为串行通信,是通过串行数据线进行数据传输的方式。通常包括RS-232、RS-485等标准,其中RS-232是最常见的。串口通讯涉及波特率、数据位、停止位、校验位等参数设置,这些参数必须在通信双方保持一致...

    Delphi 多串口通讯

    总的来说,Delphi通过底层API实现多串口通讯是一项挑战性的任务,需要对Windows API有深入理解,并具备良好的多线程和事件驱动编程经验。通过精心设计和实现,你可以构建出高效、稳定的多串口通讯应用,满足各种复杂...

    vs2017 串口通讯软件代码

    首先,C#是微软开发的一种面向对象的编程语言,常用于构建Windows桌面应用、Web应用以及游戏等。Visual Studio 2017是一款强大的集成开发环境(IDE),支持多种编程语言,包括C#,并提供了一流的调试工具和丰富的库...

    与51单片机实现串口通讯,采集数据,实现PC通讯,显示和发送数据.zip

    51单片机中的UART(通用异步收发传输器)接口是实现串口通讯的关键硬件,它负责将并行数据转换为串行数据进行发送,同时接收串行数据并转化为并行数据。 3. **PC通讯**:在本项目中,PC通过串行端口(COM口)与51...

    入门级C#串口通讯源代码

    C#作为一种现代化的面向对象编程语言,提供了丰富的库支持来实现串口通信功能。本资源是针对初学者设计的入门级C#串口通讯源代码,帮助开发者了解如何在C#环境中搭建串口通信的基本框架。 首先,我们需要理解串口...

    串口通讯调试助手 基于C# WPF .net4开发

    此串口通讯调试助手充分利用了C#的面向对象特性,实现了对串口的全面管理,包括打开、关闭、读取、写入等功能。同时,WPF的可视化设计使得用户界面直观易用,允许用户轻松配置串口参数,实时查看收发数据,甚至可以...

    C#.net 串口通讯程序

    C#.NET提供了一套完整的API来实现串口通信,开发者可以通过创建SerialPort对象,配置串口参数,监听DataReceived事件,以及使用Write方法发送数据,实现串口通讯程序。在实际项目中,还需要考虑线程安全、数据解析、...

    51单片机串口通讯例程可移植

    5. 软件框架:使用面向对象编程或模块化设计,可以将串口通讯部分封装为独立的功能模块,提高代码的复用性和移植性。 总的来说,51单片机的串口通讯例程具有很好的可移植性,开发者只需关注通讯协议和算法,而不必...

    c++开发的一个串口通讯软件源码:串口实现双机互联

    首先,C++是编程领域中一种强大的面向对象编程语言,它提供了丰富的库支持,包括I/O流库,使得串口通信的实现变得可能。在这个项目中,你需要理解C++的基本语法、类的定义和对象的创建,以及如何利用C++的流进行数据...

    一个简单的串口通讯程序

    2. **MFC库**:MFC提供了一个更面向对象的方式来处理串口,通过`CSerialPort`类,它封装了大部分串口操作。创建`CSerialPort`对象,然后设置属性(如`BAUDRATE`,`PARITY`等),调用`Open`方法打开串口,`Read`和`...

    串口通讯控件(CSharp)串口通讯控件(CSharp)串口通讯控件(CSharp)

    综上所述,“串口通讯控件(CSharp)”提供的功能应该包括这些基本的串口通信操作,并且通过C#的面向对象特性,可能还提供了更高级的功能,如自动重发、错误检测、自定义协议解析等,以满足不同应用场景的需求。...

Global site tag (gtag.js) - Google Analytics