串口通讯数据处理算法分析与实现
LabWindows_CVI开发环境下实现串口通讯的方法
软件应用
表 4 串口设置函数功能
函数名 ComB reak Com SetE scap e F lu sh InQ F lu shO u tQ SetCT SM ode SetCom T im e SetXM ode
函数功能 设置通讯终止时间 设置各种通信握手信号
清空接收队列 清空发送队列 设置硬件握手 设置通讯超时时间 允许或禁止串口通讯的软件握手
B u tton
函数为 R eceiveD a te
Q u it
QU IT
Comm and 退出应用程序, 消息
B u tton
响应函数为 qu it
413 程序部分代码 在主函数中打开串口:
O p enCom Config (1, " " , 9600, 0, 8, 1, 512, 512) ;
打 开 并 设 置 串 口, 此 调 用 语 句 打 开 串 口 1, 波 特 率 为
L abW indow s CV I 有许多标准函数库, 其中的 R S232 函数库提供了各种方式的串口通讯控制函数和 I O 函数, 一共可分为打开 关闭函数、I O 读写函数、 调制解调器控制函数、 串口设置函数、 寄存器状态函
数和回调函数 6 类。 其中部分较常用的函数如下: 这些函数返回的各种状态信息可参阅相应函数面
收稿日期: 2003 11 15
62
软件开发的角度来看, L abW indow s CV I 具有以下一 些特点:
(1) 基于标准 C 语言, 简单易学。 (2) 可视化、 交互式的开发工具。 具有人机交互 界 面编辑器, 运用可视化交互技术实现 “所见即所 得”, 使人机界面的实现直观简单。对每一个函数都提 供了一个函数面板, 用户可以通过函数面板交互地输 入函数的每一个参数及属性值。 这种交互式编程技术 大大提高了工程设计的效率和可靠性。 (3) 具有程序自动生成的能力, 可减少软件开发 过程中代码编写的工作量。 设计好的人机交互界面 (虚拟仪器面板) 存储在后缀名为 1u ir 的文件中。L ab2 W indow s CV I 自动生成原码头文件 1h, 自动声明界 面对象常量及相关的回调函数, 编程人员不必钻研这 些技术。 (4) 具有齐全的软件工具包及功能强大的函数库, 通过简单调用库函数就能驱动相应的总线的各种仪器 和硬件板卡。这些工具包和函数库具有更高的效率, 他 使得程序的编写更简洁、 直观。 (5) 完善的兼容性。借助于L abW indow s CV I, 有 经验的 C C+ + 语言开发人员可以采用熟悉的 C 语言 环境, 如V C, BC 等开发自己的虚拟仪器系统。另外, 还可将仪器库函数及子程序编译成 32 位DLL , 以用 于任何 32 位 C C+ + 环境中以及 V isua l B a sic 或 L ab2
数据处理中的数据分析与建模技巧(七)
数据处理中的数据分析与建模技巧随着信息时代的到来,数据已经成为了现代社会发展的重要资源。
在各行各业中,数据分析和建模技巧的应用愈发普遍,因为它们能够从海量数据中提取有价值的信息,为决策提供科学的依据。
本文将讨论在数据处理中的数据分析与建模技巧,并探讨其应用的一些方法和策略。
首先,数据分析是指通过运用统计和数学方法,对数据进行抽样、观察和解释,从而得出数据中隐藏的规律和趋势。
数据分析与建模技巧的核心在于建立合适的模型来描述数据。
在进行数据分析时,一种常用的方法是通过探索性数据分析(Exploratory Data Analysis,EDA)来对数据进行初步的观察和整理,寻找数据中的异常值、缺失值等问题,并进行数据清洗和预处理。
在进行数据分析时,另一个重要的技巧是特征工程(Feature Engineering)。
特征工程是指通过对原始数据进行转换和提取,以提取出更具有表现力和预测力的特征。
这包括但不限于对日期和时间的处理、文本和语言处理、特征的缩放和归一化等。
通过合理的特征工程,可以提高建模的准确性和可解释性。
数据建模是在数据分析的基础上,建立数学模型来对数据进行预测和解释的过程。
在数据建模中,选择合适的模型和算法非常重要。
常见的建模方法包括线性回归、决策树、支持向量机、神经网络等。
在选择模型时,需要综合考虑数据的类型、特点和需求,以及模型的复杂度、解释性和可解释性等因素。
除了选择合适的模型,为了提高模型的泛化能力,还需要进行模型的评估和优化。
模型评估可以通过交叉验证等技术来实现,用于评估模型的预测能力、稳定性和鲁棒性等指标。
而模型的优化可以通过参数调节、特征选择和集成学习等方法来实现,以提高模型的预测精度和鲁棒性。
在实际应用中,数据分析与建模技巧的应用需要综合考虑数据的质量和可用性。
数据质量包括数据的完整性、准确性、一致性和时效性等方面,而数据的可用性则涉及数据的获取、存储和处理等技术问题。
为了保证数据分析与建模的准确性和可信性,在数据处理过程中需要进行严格的数据验证和验证。
plc工程师基础技能
plc工程师基础技能PLC工程师需要掌握的基础技能主要包括以下几个方面:1. 电路分析:PLC工程师需要掌握电路分析的基本知识,包括欧姆定律、基尔霍夫定律等,能够熟练计算功率、电流、电阻等。
这有助于理解电路原理和PLC的工作原理,以及在设计、调试和维护PLC控制系统时解决遇到的问题。
2. 编程语言:PLC工程师需要掌握PLC编程语言,如Ladder Diagram、Sequential Function Chart等,能够编写简单的逻辑控制程序。
此外,还需要了解其他编程语言,如C、C++、Java等,以便能够与上位机或嵌入式系统进行通信和控制。
3. 自动化控制理论:PLC工程师需要掌握自动化控制的基本理论,包括开环控制、闭环控制、PID控制等,了解各种控制算法的原理和应用。
这有助于在设计和调试控制系统时选择合适的控制算法,提高系统的稳定性和性能。
4. 通讯技术:PLC工程师需要掌握通讯技术,包括串口通讯、以太网通讯等,能够实现PLC与上位机、传感器、执行器等设备之间的数据交换。
这有助于在构建和调试整个自动化系统时实现设备间的协同工作。
5. 工业现场总线:PLC工程师需要了解常见的工业现场总线,如PROFIBUS、Modbus、CAN等,了解它们的通讯协议和工作原理。
这有助于在构建和调试自动化系统时实现设备间的互联互通和互操作性。
6. 数据库和脚本语言:PLC工程师需要了解数据库的基本概念和使用方法,如SQL语言等。
此外,还需要了解脚本语言,如VBScript、Python等,以便能够自动化处理和解析数据。
7. 硬件和软件调试工具:PLC工程师需要掌握常用的硬件和软件调试工具,如万用表、示波器、逻辑分析仪等,以便在调试过程中进行故障排查和性能测试。
8. 实际项目经验:最后,PLC工程师需要在实际项目中积累经验,提高自己的技能水平。
通过参与不同类型的项目,可以不断学习和掌握新的知识和技能,提升自己在自动化领域的专业能力。
LTE系统中混合基FFT算法分析与硬件实现
LTE系统中混合基FFT算法分析与硬件实现LTE系统是目前移动通信技术中使用最为广泛的一种制式,其核心技术之一就是基于正交频分复用(OFDM)的下行传输技术。
在LTE系统中,传输信号需要经过一系列的信号处理过程,其中包括基于快速傅里叶变换(FFT)的信号处理。
为了提高信号处理的效率和减少硬件复杂度,LTE系统中通常采用混合基FFT算法进行信号处理。
本文将对LTE系统中混合基FFT算法进行分析,并探讨其在硬件实现中的一些关键技术。
一、混合基FFT算法原理及优势混合基FFT算法是将传统的FFT算法与基于二进制分解的FFT算法相结合,通过在频域和时间域中同时进行基变换来实现信号处理。
混合基FFT算法的主要优势包括以下几点:1.减少计算量:传统的FFT算法需要进行复杂的分解和重组操作,计算量较大;而混合基FFT算法通过将基变换分解为不同基数的变换,可以减少计算量,提高算法的效率。
2.降低硬件复杂度:在硬件实现中,传统的FFT算法需要大量的存储器和计算单元来支持复杂的变换操作;而混合基FFT算法则可以通过简化的变换结构来降低硬件复杂度,减少硬件资源的消耗。
3.提高信号处理效率:混合基FFT算法可以同时在频域和时间域中进行基变换,实现信号处理的并行化,从而提高信号处理的效率和速度。
二、混合基FFT算法在LTE系统中的应用在LTE系统中,混合基FFT算法主要应用于下行链路的信号处理过程,包括信号的调制、编码、资源映射等操作。
通过混合基FFT算法,可以实现对下行传输信号的高效处理和快速解调,提高系统的数据传输速率和信号质量。
在LTE系统中,混合基FFT算法通常与信源编码、调制映射等技术结合使用,共同构成了完整的信号处理链路。
通过混合基FFT算法,可以对经过调制映射的信号进行快速变换和解调,实现对传输信号的快速解析和数据提取。
三、混合基FFT算法在硬件实现中的技术要点在LTE系统中,混合基FFT算法的硬件实现需要考虑以下几个关键技术要点:1.变换结构优化:混合基FFT算法的变换结构对算法的性能和硬件复杂度有着重要影响,需要设计优化的变换结构来降低计算量和资源消耗。
基于PLC自由通信的CRC校验算法实现
多项式除法可用除法电路来实现。C C编码采 R 用的除法运算是模 2 除法, 它与算术除法类似, 但每一 位除( 的结果不影响其他位, 减) 即不向上一位借位, 故实际上就是异或, 因此,R C C校验的除法电路可由 一组移位寄存器和模 2 加法器( 异或单元) 组成。 以c CI u为例, 6 级移位寄存器和 3 R一 T 它由1 个 加法器组成, 1 如图 所示( 编码/ 解码共用) 。编码/ 解 码前将各寄存器初始化为“ ” 信息位随着时钟移人。 1, 当信息位全部输人后, 从寄存器组输出 C C结果。 R c c校验码的计算可以靠专用的硬件电路来实 R
该算法的基本依据为: 计算本字节后的 C C码, R 等于
上一字节余式 C C码的低 8 R 位左移 8 加上上一字 位, 节 C C右移 8位和本字节之和后所求得的 C C码。 R R
信号长度为 叭生成多项式用以x 表示,( 的最高 ) 9x ) 幂次为n一 k二r R 校验码多项式用 R x 表示; C ; C ( ) 编
码后将一组由原始信息码和 C C校验码组成的数据 R 块称为一个码元 , T 劝 表示。 用( 发送方编码方法 : 尸 x 乘以 了( 将 ( ) 即对应的二进 制码序列左移 ; , 尸 x 的右边就会空出n一 位)这样 ( ) k
以 C CIU为例,R R一 T C C校验码的计算步骤如下:
ie r c ai o t yt . n r e e bi f h 出 m t n e f l y t es e
HUJ 一u i ha n
K yw 川5 ccc dnac cek( R ) p Cfeo o m n ao ; R 一 U cd addcd eo : yl r udny hc C C ; L r dmCm ui tn C CI ; oe n eoe ie e ci T
qplc编程手册
QPLC编程手册一、引言本手册旨在对QPLC(Quantum Programming Language)编程语言进行全面深入的介绍,包括QPLC的概述、编程环境、基本指令集、数据类型与变量、程序结构、常用算法与功能、系统配置与通讯、安全性与防护措施、常见问题与故障排除以及案例分析与实践等方面。
通过阅读本手册,读者将能够全面了解QPLC编程语言,并掌握其基本语法和常用功能,提高编程效率和程序质量。
二、 QPLC概述QPLC是一种通用的、结构化的编程语言,用于编写控制系统的程序。
它具有简单易学、功能强大、灵活多变等优点,广泛应用于工业自动化、智能家居、机器人等领域。
QPLC语言支持模块化编程,可实现复杂控制系统的分解和组织,提高程序的复用性和可维护性。
三、编程环境介绍QPLC编程环境提供了集成开发环境(IDE),支持语法高亮、代码自动补全、调试器等功能,方便用户进行程序的编写和调试。
同时,还提供了丰富的库函数和工具包,以支持各种硬件设备和控制系统的开发。
四、基本指令集QPLC的基本指令集包括输入输出指令、控制流程指令、函数调用指令等。
通过这些指令,可以实现对硬件设备的控制、数据的处理和算法的实现。
QPLC的指令集具有简洁明了、易于掌握的特点,为初学者提供了方便的学习途径。
五、数据类型与变量QPLC支持多种数据类型,包括整型、浮点型、字符型等基本数据类型,以及数组、结构体等复合数据类型。
同时,QPLC还支持全局变量和局部变量的定义和使用,以及变量的作用域和生命周期的管理。
这些特性使得QPLC能够满足各种复杂的数据处理需求。
六、程序结构QPLC的程序结构包括顺序结构、选择结构和循环结构。
顺序结构按照代码的先后顺序执行;选择结构根据条件判断执行不同的分支;循环结构则重复执行一段代码直到满足结束条件。
此外,QPLC还支持模块化编程和函数封装,使得程序的组织更加清晰和易于维护。
七、常用算法与功能QPLC提供了丰富的算法和功能函数,包括数学运算、逻辑运算、数据处理、时间处理等。
MSP430单片机入门例程
MSP430单片机入门例程MSP430单片机是一款低功耗、高性能的16位单片机,广泛应用于各种嵌入式系统。
下面是一个简单的MSP430单片机入门例程,可以让大家初步了解MSP430单片机的基本使用方法。
所需材料:1、MSP430单片机开发板2、MSP430单片机编译器3、MSP430单片机调试器4、电脑和相关软件步骤:1、安装MSP430单片机编译器首先需要安装MSP430单片机的编译器,该编译器可以将C语言代码编译成MSP430单片机可以执行的机器码。
在安装编译器时,需要选择与您的单片机型号匹配的编译器。
2、编写程序下面是一个简单的MSP430单片机程序,可以让LED灯闪烁:c本文include <msp430.h>int main(void)本文P1DIR |= 0x01; //设置P1.0为输出while(1){P1OUT ^= 0x01; //反转P1.0的状态,LED闪烁__delay_cycles(); //延时一段时间,控制闪烁频率}本文上述程序中,首先定义了P1DIR寄存器,将P1.0设置为输出。
然后进入一个无限循环,在循环中反转P1.0的状态,使LED闪烁。
使用__delay_cycles()函数实现延时,控制LED闪烁频率。
3、编译程序使用MSP430单片机编译器将程序编译成机器码,生成可执行文件。
在编译时,需要注意选择正确的编译器选项和单片机型号。
4、调试程序使用MSP430单片机调试器将可执行文件下载到单片机中,并使用调试器进行调试。
在调试时,可以观察单片机的输出口状态和LED灯的闪烁情况,确保程序正常运行。
随着嵌入式系统的发展,MSP430单片机作为一种低功耗、高性能的微控制器,在各种应用领域中得到了广泛的应用。
为了更好地理解和应用MSP430单片机,我在学习过程中积累了一些经验,现在分享给大家。
MSP430单片机是一种超低功耗的微控制器,由德州仪器(Texas Instruments)推出。
三菱PLC多机串口通讯的应用
三菱PLC多机串口通讯的应用作者:李怀祎来源:《科学与财富》2011年第08期[关键词] 油压控制系统组态软件 RS-485总线串行通信1、引言山东境内多家小氮肥企业均采用间歇制气法生产半水煤气,随着DCS集散控制系统被大量应用,各单位自动化程度不断提高。
但在制气工序油压控制系统(包括PLC油压控制、数据采集与历史记录、其他重要参数调控)仍被广泛应用,组态软件可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯,根据用户对被控对象和控制目的的要求,在模块间进行任意组合,生成面向最终用户的实时控制系统。
本文着重讲述三菱FX系列PLC、智能模块、变频器、智能调节器与PC机在组态王下串口通讯的应用,以完善氮肥制气工序油压控制系统。
2、油压控制系统的硬件构成本系统硬件结构采用后台PC机、智能调节器、三菱FX系列PLC、中泰RM系列模块、配套硬件(MAX232、75LBCl84)及RS-485总线构成分布式油压控制系统,硬件连线如图1所示。
采用三菱FX系列PLC分布式系统作为下位机数据采集系统,具有计量精度高、功耗低、稳定可靠、成本低等特点。
三菱FX系列PLC从机完成现场数据采集和作数据处理,每台从机采集的数据通过RS-485总线按一定的协议传送给单片机主机。
单片机主机在系统中承担数据采集与处理任务,将从机单片机仪表设备组成单片机主从形式的多机通信网络。
单片机主机再通过硬件MAX232电路连接到后台PC机RS-232接口,通过串行口通信方式将数据传送到后台PC机。
单片机主机将从机采集的数据(电压、电流、开关位置、变压器状态等)组成一定格式的帧上传给PC机进行统计、二次处理。
3、组态王与单片机的串口通讯方法利用组态王的驱动程序开发包开发通信驱动程序,直接让单片机主机和组态王6.5x串行通信。
接口的驱动程序是组态软件和硬件设备连接的桥梁。
驱动程序采用微软标准的COM组件技术,创建多个互相独立的对象,每个对象都可以拥有自己的变量。
串口通信协议的制定方法
帧尾也和附加信息进行区分。这样当收到串口数 dows环境下的串口通讯叨计算机工程,2001,27,
据时可以按照下面方法解析命令:首先查找帧头和 (6):176—179.
帧尾,确定命令在数据中的位置;然后判断命令的 长度(帧尾位置一帧头位置);最后判断命令是否 正确(命令编码+附加信息)。经过此次改进将很
信1息l科【学
科 技信总 ——黑龙江——
串口通信协议的制定方法
谢春生宋坦路石成
(河南辉煌科技股份有限公司,河南郑州450000)
摘要:在当前工业应用中,串口通信依靠其低廉、方便、易行、成熟的特点,得以广泛使用。本文从串口项目应用的特点对串口通信协议的制定 方法进行介绍。
关键词:串口;通信协议;制定方法
在信息技术和网络技术高速发展的21世纪,作为社会重要的基础信息设施之一的Internet的建立需要各类网络设备的支持,然而,传统的网络管理 系统只能通过网络对具有联网功能的设备进行监控、管理和维护,而当这些设备产生故障断开网络时,或当其他的无联网功能的串口设备出现故障时 ,就需要技术人员到现场去进行维护,从而浪费了大量的人力、物力。
基于C#实现PC机与AI调节器串口通信的实时监控系统
读串口: 函数原型:public byte[] Read(int NumBytes)//NumByte 读入缓存数,注意读取来的是字//节数组,要实际应用中进行字节 转换 string response=Encoding.ASCII.GetString(ss_port.Read(512));//读取512个字节缓存
关闭串口: 函数原型:ss_port.Close() ss_port.Close();
此程序的运行界面如图3所示
/common/details.aspx…
无论是读指令还是写指令,调节器都返回以下数据: 测量值PV+给定值SV+输出值MV及报警状态+所读/写参数值+CRC 校验码,其中PV、SV 及所读参数值均为整数格式, 各占2个字节,MV占1个字节,数值范围0-220,报警状态占一个字节,CRC校验码占2个字节,共10个字节。
3、 C# 实现PC机与AI调节器的串口通信 在C# 中实现串口通信,通常有四种方法:(1)通过MSCOMM控件这是最简单的、最方便的方法,可功能上很难做到 控制自如;(2)微软在.NET中新推出了一个串口控件,基于.NET的P/Invoke调用方法实现;(3)用第三方控件;(4)用 API编写串口通信,难度较高,但可以方便实现需要的各种功能。本文采用第四种方法来实现串口通信。
关键词: C# AI调节器 串口通信 实时监控
Abstract: In this paper, the serial communication between PC and AI regulator is achieved. The serial communication is applied successfully in the real-time monitoring system of the process control experimental installation. The application shows that the real-time monitoring system is easy to perform and it has the reliable function. More importantly, it strongly expands the function of the AI regulator. And, this paper is helpful to the practical implementation.
QoS原理与使用以及其中WRR策略的设计与实现
QoS原理与使用以及其中WRR策略的设计与实现文档编号:00-6201-100当前版本:1.0.0.0创建日期:2011-6-13编写作者:ganjingweiQoS原理与使用以及其中WRR策略的设计与实现摘要Linux系统由于它的开放源代码、内核小、效率高、免费性等特点,使得它在嵌入式领域极具优势。
另外,Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统,具有非常强的移植性,可以在几乎任何嵌入式硬件上经过一些裁剪很容易地工作起来。
总之,Linux在嵌入式领域占有重要的地位。
Linux对于网络功能方面也具有强大的支持。
它的其中一个最重要的特点就是“零拷贝”。
所谓“零拷贝”就是数据包在内核中的层次传递过程,完全由指针完成,中间没有任何由于函数的调用而产生的数据复制。
这样既提升了处理速度,又节省了空间。
使得Linux也是嵌入式网络产品的第一选择。
QoS,从字面意思看,就是服务质量。
它是Linux内核中对于数据包的一种调度方式,根据数据包的不同服务,提供不同的带宽质量。
它解决了Linux内核对于数据包的传统处理方式无法适应当今多样的网络业务需求的问题。
加权循环调度策略(WRR)是QoS的概念下,对于数据包的调度的一种算法。
它为每种数据包分配不同的权重,按照权重提供不同比例的带宽。
本文重点是、阐述QoS的实现原理,并在其基础上实现我们的加权循环调度策略。
关键词:Linux,网络,QoS,TC,嵌入式Design and Implementation of Weight Round RobinAbstractLinux release its source opening for free. And it works efficiently with a reduced kernel. So it lives a high advantage in the field of embedded system. In addition, Linux can work on many kinds of CPU and hardware platform. It is a cross-platform system, has a very strong portability, and can work on all most every embedded hardware with some part simply cut. In short, Linux plays an important role in the field of embedded system.Linux offer a strong support on Internet network function. One of it`s most important advantages is called “zero-copy”. The so-called “zero-copy” is that packets are passed through the kernel layers all by pointers. No data is copied when function is called. In this way, it not only enhance the processing speed, but also saves memory. So Lniux is the first choise of network embedded system.QoS, viewed from the literal meaning, is quality of service. It is a method of scheduling within packages in Linux kernel. It offers different quality of bandwidth for different service of packages. It solved the problem that the traditional method of Linux kernel can not meet the demand of various network service.Weight Round Robin (WRR) is an algorithm of scheduling within packages under the concept of QoS. It allocates every kinds of packages different weight, and offers them different bandwidth in light of the weight. This document illustrate the Implementation of QoS, and implement our WRR based on it.Keywords: Linux,Network,QoS,TC,Embedded System目录第1章绪论 (1)1.1传统的网络数据包发送机制 (1)1.2 QoS需求的提出 (1)1.3 研究WRR的目的 (1)1.4 关于本文 (2)第2章QoS工作原理 (2)2.1 ISO层次结构 (2)2.2 Linux内核数据包流程和Netfilter框架 (3)2.3 QoS工作定位 (5)2.4 QoS框架及其实体 (14)2.5 本章小结 (23)第3章TC命令 (24)3.1 TC命令格式 (24)3.2 一个简单的例子——prio (24)3.3 一个稍微复杂的例子——htb+prio (26)3.4 wrr的测试例子 (27)3.5 本章小结 (28)第4章WRR(Weight Round Robin)基本概念 (28)4.1 WRR基本算法 (28)4.2 WRR的优点与缺陷 (29)4.3 WRR算法总体设计 (29)4.4 本章小结 (30)第5章WRR的设计与实现 (31)5.1 总体架构以及一些结构体 (31)5.2 入队enqueue函数设计 (32)5.3 出队dequeue函数设计 (33)5.4 其他功能函数设计 (34)5.5 本章小结 (36)总结 (36)致谢 (37)参考文献 (37)第1章绪论1.1传统的网络数据包发送机制传统的IP网络无区别地对待所有的报文,路由器处理报文采用的策略是先入先出FIFO (First In First Out),它依照报文到达时间的先后顺序分配转发所需要的资源。
TMS320LF2407A与MCS51基于RS_485的串口通讯设计
万方数据2通讯的软件设计2.1串口介绍2.1.1DSP的串口介绍本设计中,DSP是基于串行通信接口模块SCI实现的。
SCI模块支持CPU与其它使用标准格式的异步外设之间的数字通信。
SCI接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。
数据传输的数据和长度均在一定范围内可变。
数据的发送和接收过程:置发送唤醒位TXWAKE为1,将数据写入发送数据缓冲寄存器SCITXBUF,就启动了一次发送,数据由SCITXD引脚从低位到高位一次移一位;接收数据时,从SCIRXD引脚移入数据,一次移一位,存储在SCIRXBUF中,供CPU读取。
2.1.2MCS51的串口介绍MCS51内部有一个通信接口,它由两个物理上独立的串行数据缓冲器SBUF发送控制器,接收控制器,输入移位寄存器和输出控制门组成。
两个串行数据缓冲器共享一个地址99H。
有两个特殊功能寄存器SCON和PCON可用来控制串行口的工作方式和波特率。
该串口有4种工作方式。
2.2通讯的协议与实现2.2.1DSP的数据格式在本设计中,DSP的SCI模块采用的是空闲线模式。
这种模式没有附加的地址/数据位,它的一帧格式为:一个起始位(0),数据位,可选择奇偶校验或无校验,一个停止位。
由于本设计中选用的是累加和校验法,所以编写程序中,选用帧格式中无校验位。
通讯的数据包格式为:DSP与MCS一51需要交换的数据和所有数据的累加和。
2.2.2MCS51的数据格式由于本设计中DSP是上位机,来规定通讯的帧格式,数据包格式和波特率等,所以MCS一51在选择模式时,要以DSP已定的模式为基准。
经过综合考虑,C51串行接口采用工作方式1:8位UART,波特率可变(T1溢出率/n)。
在方式1状态下,串行口为8位异步通信接口。
一帧信息为10位:l位起始位(O),8位数据位(低位在先)和一位停止位(1)。
这样的选择,既实现了通讯的帧格式的统一,也确保了上位机和下位机工作在相同的波特率下,从而保证了整个通讯程序正确,顺利地进行。
分布式控制
第七章 分布式控制系统§7.1 数据通信及网络技术综述(1)串行通信与并行通信 串行通信按位传输,从处理器的角度,需要对传输的信息进行串-并或并-串转换。
并行通信多位同时传输,一般需要额外的通信握手信号。
(2)串行异步传输与同步传输异步传输需要起始位、停止位等的配合,通信双方约定一个相同的通信速率, 允许有 2%以内的时钟误差。
同步传输需要有同步时钟信息,如 2812、VC33、 5402 等 DSP 芯片提供高速同步通信接口,用于构成多 DSP 系统。
另外 SPI、I2C 在传输数据时是在专门的时钟脉冲的配合下进行的。
(3)波特率:BPS(Bits Per Seconds)。
RS232 标准的串行通信常采用 1200、2400、 4800、9600、19200、38400、57600、115200 等波特率,常用的波特率发生器的 时钟源为 11.0592MHz,可以产生比较准确的常用波特率。
(4)传输介质:双绞线、屏蔽电缆、光纤、无线、红外、超声等 (5)平衡传输与不平衡传输图 1 单端驱动单端接收图 2 平衡驱动差分接收平衡驱动与差分接收,从根本上消除信号地线,防止地电位变化引起干扰。
(6)RS-232/422A/485 通信接口物理层协议,RS-232,3 根线,通常采用 DB9 插座,2、3、5 脚分别为发送、接收和地线。
422A/485 的接线方式如图 3。
双工/单工/半双工(7)差错控制图 3 RS-422A 和 RS-485 传输电路1数字信号传输,特别在高速传输过程中,在物理层措施的基础上如何进一步 提高可靠性?检验:1)奇偶校验 2)CRC 纠错:1)重收 2)纠错 3)混合 (8)网络的拓扑结构与介质访问 CSMA/CD 载波监听多路存取和冲突检测 令牌环 令牌总线 (9)消息交换技术 1)线路交换 2)报文交换 3)分组交换(报文段) (10)通信协议 OSI 7 层模型:物理层、数据链路层、网络层、传递层、会话层、表示层、 应用层。
配网自动化运维高级考试(试卷编号211)
配网自动化运维高级考试(试卷编号211)1.[单选题]每个终端节点ONU采用( )个单PON上联两个局端节点OLTA)1B)2C)4D)8答案:B解析:2.[单选题]配电终端硬件设计要求具备多种类型的通信接口,一般要求不少于(___ ) 个RS232口,( __ ) 个232/RS485口以及( __ ) 个以太网接口。
A)1,1, 1B)1,1,2C)1,2,2D)2,2,2答案:B解析:3.[单选题]在配电设备上工作,带电装表接电工作时,应采取防止()的安全措施。
A)短路和电弧灼伤B)窒息C)撞伤D)压伤答案:A解析:4.[单选题]配电终端RS485通信接口防误接线功能,端子间应能承受( ) 的交流电历时( ) 分钟不损坏A)380V, 10B)220V, 10C)100V, 5D)380V, 5答案:D解析:5.[单选题]端基本功能具备远方通信接口,采用光纤通信时具备通信状态监视及(___ ) 。
采用无线通信时具备监视通信模块状态等功能。
A)通道故障监测D)通信故障监测答案:B解析:6.[单选题]具备双侧均有电压时,开关合闸闭锁功能,开关处于分闸状态时,两侧电压均正常时,此时FTU闭锁()。
A)分闸B)合闸C)重合闸D)跳闸答案:B解析:7.[单选题]结合EMS母线接地信号,判断是否是永久性接地故障,若是,则将故障区段推送到(___ ),完成快速隔离故障,同时对负荷进行转移,实现故障恢复。
A)I区馈线自动化B)I区故障录波C)SOED)III区故障录波答案:B解析:8.[单选题]柱上自动化终端的使用年限一般为()。
A)5~7年B)7~9年C)10~12年D)以上均不正确答案:A解析:9.[单选题]零序电流保护的电流整定值不受()影响。
A)开、停机B)负荷电流C)变压器中性点接地方式D)以上均不正确答案:B解析:10.[单选题]以下不属于保护定值设置项的是(C)。
A)速断跳闸延时D)闭锁合闸时间答案:C解析:11.[单选题]新一代配电主站系统硬件结构从逻辑上可分为采集与前置系统、运行监控子系统和(___ )A)状态管控子系统B)后置子系统C)Web系统D)工作台答案:A解析:12.[单选题]电流集中型馈线自动化进行故障定位的判据为:( )A)“组成故障区域的各开关中有且只有一个流过故障电流B)组成故障区域的各开关均流过故障电流C)组成故障区域的各开关中至少有一个流过故障电流D)组成故障区域的各开关中最多有一个流过故障电流答案:A解析:13.[单选题]配电终端柱上开关设备航空插头供电电源及线电压输入接口为(____ ) 。
基于VisualBasic与RS232串行通信的数据采集系统
基于VisualBasic与RS232串行通信的数据采集系统-机械制造论文基于VisualBasic与RS232串行通信的数据采集系统撰文/ 江苏徐州工程机械研究院陈新春闫乃晴齐伟王灿目前,诸如液压缸缸筒、活塞杆和振动轮等工程机械核心零部件精度要求越来越高。
在生产过程中,检测工序已经不可忽视。
遗憾的是,许多关键工序涉及的待检测形面复杂,尚无检测手段。
随着技术的进步,基于激光位移传感器,开发专有检测仪器是实现工程机械核心零部件关键工序质量监控的有效途径。
激光位移传感器由激光器、激光检测器和测量电路组成,能够精确非接触测量被测物体的位置、位移等变化。
在开发激光检测装置时,如何准确有效地获得激光位移传感器检测值是关键的研究内容。
针对该问题,本文结合串行端口技术,提出一种基于Visual Basic 与RS 232 串行通信的数据采集系统。
通过Visual Basic 通信控件MSComm 与串行端口RS 232,建立激光位移传感器与工控机的通信渠道。
采用Visual Basic 开发激光位移传感器数据采集软件界面和算法。
应用Excel工具建立存储检测数据的数据库。
与激光位移传感器测试软件比较,验证上述研究的有效性。
一、通信软件与串口选择VB6.0 是一种功能强大的程序设计语言,适用于设计程序界面。
它不仅保留了Basic 语言的全部功能,还增加了面向对象程序设计功能,相较于VC,其操作简单,运行速度较快。
MSComm 是VB 与激光位移传感器之间实现通信的的ActiveX 控件。
利用MSComm 控件,设计串口通信程序主要涉及表1 所示属性。
在本研究中,主要的属性参数设置为:(1)InputMode=0,取回文本数据。
(2)InputLen=0 表示一次接收完缓冲区中的所有数据,其他参数可根据其含义进行相应设置。
为了简化数据采集系统,项目组采用的RS 232 是目前广泛应用的一种9 芯接口。
具体如图1 与表2 所示。
FDTD并行算法实现及其数据通信优化
FDTD并行算法实现及其数据通信优化刘真;宋祖勋;赵羿池【摘要】The parallel FDTD computation based on message passing interface (MPI) and domain segmentation technology is achieved in a computer local area network. The parallel FDTD algorithm was validated through the example of the free space radiation of the infinite long current source. The result show that the results of serial and parallel algorithms are consistent,and the computing efficiency is improved effectively. The data communication of parallel algorithm was optimized and the parallel efficiency was improved by the reduction of communication data volume, optimization of data exchange mode, overlap of computation and communication.%应用计算机局域网,采用基于消息传递(MPI)方式和区域分割技术,实现了FDTD的并行计算.以无限长线电流源在自由空间辐射为算例,对并行FDTD算法进行了验证.结果表明并行算法和串行算法计算结果一致,并有效提高了计算效率.最后通过减少通信数据量、优化数据交换方式及通信和计算重叠的方法,使并行算法的数据通信得到优化,并行计算效率明显提高.【期刊名称】《现代电子技术》【年(卷),期】2011(034)024【总页数】4页(P137-140)【关键词】时域有限差分;区域分割;并行计算;数据传递【作者】刘真;宋祖勋;赵羿池【作者单位】西北工业大学电子信息学院,陕西西安710129;西北工业大学365研究所,陕西西安 710072;西北工业大学电子信息学院,陕西西安710129【正文语种】中文【中图分类】TN911-34;TP301.60 引言1966年K S Yee首次提出了时域有限差分(Finite Difference TimeDomain,FDTD)方法,用于电磁场数值计算问题。
进程同步通信经典问题—读者写者问题的算法分析与设计
理论算法
进程同步通信经典问题一读者写者问题的算法分析与设计
曾思源,徐艳 (四川大学锦城学院计算机与软件学院,四川成都,611731)
摘要:本篇文章就读者-写者这一经典问题,利用信号量和count计数器,提出了其多种实现算法和思考解决问题的过 程。同时,本文也通过模拟验证了这些算法,发现其利弊,进而来对其进行了部分的优化。在文章的最后提出了实际生活 中该经典问题的应用场景。本文的讨论有利于让读者对该经典问题有更深刻的认识。 关键字:读者和写者;同步通信;PV操作算法
Classical problem of process synchronization Communication Algorithm analysis and design of reader and writer problem
Zeng Siyuan, Xu Yan (School of Computer and Software, Jincheng College, Sichuan University, Chengdu Sichuan, 611731)
Abstract: This paper uses semaphore to realize a variety of algorithms and problem solving processes for a classical problemnamed aReader -Writer” . At the same time, this paper finds out the advantages and disadvantages and optimizes it by Simulating the actual situation. At the end of the paper, the practical application scenario of the algorithm is presented. The discussion in this article is helpful for readers to have a deeper understanding of this. Keywords; Reader - Writer; Synchronous; Communicationalgorithms
RS232与RS485串行接口转换电路及编程实现
$ 硬件电路
在硬件上, 需要设计一个符合 ! "#$ % $ 通讯 标 准 的 驱 动 电 路 来 实 现 与3 1机 的 接
口, 此 电 路 中,与 3 1 机接口的芯片为 (也可以使用其它相兼容的芯片如 ;5 < $ % $ 、 、 。;5 9 1 = $ % $ 4 1 $ % $ 5 > $ % $ 等) < $ % $ 功耗 低, 集成度高, 且芯片内部具有升压电路和极 性转换电路, 在单( 即可实现 + 供电条件下, 电平与 电平的相互转换, 还省 4 4 = ! " # $ % $ 去了6 $ + 电源。此电路中电源 + 1 1 由计算 机串口提供, 当! 串口 脚电压升高 " #$ % $ * 时, 通过二极管给 1 稳压管 ? ( 迅速充电, 6
用于使电压范围稳定在! " 左右。 它们可以很方 # $ %& ’ ! 接口芯片很多, 便地实现 # 这些芯片 $ % & ’ ! 串行通讯接口, 除了一些附加功能不一样外 (如抗雷击、 低功 耗等) , 其主要的收发功能和电路构成基本一 致, 本方案选用了性能较好的接口芯片 。() () * & ’ ! * & ’ !为 ’ 个管脚, + , - 封装, ! ! 脚 为数据接收端, 脚 为数据接收 . # / 0 # 1 允许端, 低电平有效; 2脚 + 1 为数据发送允 许端, 高电平有效; 、 &脚 + ,为数据发送端; 3 它把一个三态差分线 4脚为电流环回路端; 路驱动器和一个差分线路接收器组合在一 起, 并共用 )、 5 两根总线。它的传输方向由 ! 当+ 驱动器优 + 1和 ! # 1 所 控 制, 16. 时, 先, 可进行数据发送, 此时接收器呈高阻状 ! ! 7时, 态; 而当 # 接收器优先, 可进行数据 16 接收, 此时驱动器呈高阻状态。 } 2 ? 0 向串口发送数据 在编程的过程中, 需要注意的是串口S芯 连接器第 & 脚 + 在数据发送 N # 信号的控制, 时, 通过 E (V ) ; 将串 J = B E E? $ K D + N # 1 L ; Q < K ) R $ 1 口+ 则# (( N # 置为低电平, 0 / U N ) * 0 2 0第 S 脚) 输出为高电平, 从而将 ( ) * & ’ !的驱动器置 为发送状态, 同理, 当数据发送完毕后, 通过 E J (N ) ; 将串口 + = B E E ? $ K D + N # 1 L ; Q < K # U 1 N #置 为高电平, 则# (( 输出为 0 / U N ) * 0 2 0第S脚) 低电平, 从而将 ( ) * & ’ !的接收器置为接收状 态, 为代码如 =机从单片机接收数据做准备, 下。 : : () W B 8 I= = B E E + < / L $ K L I M { ; = 5 D K ) A A ; : D : D J + ; D ; P P/ F ( ) ; / : D : D J + ; D ; ? $ K D $ 8 H K . F ( ) ; / : D : D J + ; D ; ? 1 < K E K L D ) D 7 6 7 O S 7 F (! E ( ) )E 8 C J = B E E?X K D B A D / K L J F (N ; = B E E? $ K D B A D / K L # U 1) F ( ) ; E J = B E E? $ K D , L 5 : C C K A = B : L D 7 (E () ) 8 C J = B E E? X K D B A D / K L F { (V ; E J = B E E? $ K D + N # 1 L ; Q < K ) R $ 1) (= E J = B E E? $ K D / : D : D / < K " ; A 8 ; L D F (/ ) ) ; : D : D J + ; D ; F 脚置为高电平。代码如下: : : () 5 / / R= = B E E + < / L , L 8 D + 8 ; < B M M { : : () ; = + 8 ; < B / L , L 8 D + 8 ; < B M M ( ) ; E J = B E E? $ K D = B E E B A D . (” , , , ” ) ; E J = B E E? $ K D $ K D D 8 L 9 S 3 7 7 L ’ . M ( ) ; E J = B E E? $ K D # N T A K 9 T B < I . ( ) ; E J = B E E? $ K D , L : D R K L 7 F ( ) ; E J = B E E? $ K D , L 5 : C C K A $ 8 H K ! . 0 ( ) ; E J = B E E? $ K D , L : D ( B I K . F ( ) ; E J = B E E? $ K D # N $ 1 L ; Q < K D A : K A K D : A LN # U 1;
基于RS485和TCP/IP网络的分布式称重系统
l0 20
图 2 多机 串口通信 系统总体框图
3 6系统建设 S s m C nt co yt os ut n e r i
S r lot T BI S 8 ∥ e a rDA A T , 数据位 8 iP . 位
串口通讯数据处理算法分析与实现
串口通讯数据处理算法分析与实现【摘要】本文介绍了串口通讯数据接收处理的一般方法。
该方法利用循环FIFO缓冲区,获取串口数据,并根据状态转移法对通讯报文进行分析,从而获得符合协议要求的有效报文。
文章通过实例验证了状态转移法分析串口通讯数据的有效性,为实际的工程应用提供了一定的指导。
【关键词】循环缓冲区;串口通讯数据处理;状态转移法1.应用背景在目前很多的工程化控制应用中,大部分采用了PC机和多台单片机构成的主从系统。
单片机主要进行数据采集,处理现场信号,驱动执行机构;PC机则通过对单片机进行集中管理,完成信息显示,数据运算并做出决策以分配任务。
PC 机与单片机之间则需通过通讯方式完成数据交互,在众多通讯接口中,串口通讯应用比较普遍。
串口通讯方式有三种:RS232、RS422和RS485;RS-232是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。
RS-422由RS-232发展而来,它是为弥补RS-232的不足而提出的。
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。
串口通讯是按照字节流的方式来进行的,即每中断一次,表明成功传送或者接收一个字节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串口通讯数据处理算法分析与实现
【摘要】本文介绍了串口通讯数据接收处理的一般方法。
该方法利用循环FIFO缓冲区,获取串口数据,并根据状态转移法对通讯报文进行分析,从而获得符合协议要求的有效报文。
文章通过实例验证了状态转移法分析串口通讯数据的有效性,为实际的工程应用提供了一定的指导。
【关键词】循环缓冲区;串口通讯数据处理;状态转移法
1.应用背景
在目前很多的工程化控制应用中,大部分采用了PC机和多台单片机构成的主从系统。
单片机主要进行数据采集,处理现场信号,驱动执行机构;PC机则通过对单片机进行集中管理,完成信息显示,数据运算并做出决策以分配任务。
PC 机与单片机之间则需通过通讯方式完成数据交互,在众多通讯接口中,串口通讯应用比较普遍。
串口通讯方式有三种:RS232、RS422和RS485;RS-232是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。
RS-422由RS-232发展而来,它是为弥补RS-232的不足而提出的。
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。
串口通讯是按照字节流的方式来进行的,即每中断一次,表明成功传送或者接收一个字节。
2.通讯协议
要进行数据通讯,那么通讯双方必须遵循一定格式的协议,这样,通讯双方才能够相互理解从对方所接收过来的数据。
串口通讯协议一般包含这样几个域:帧头、用户数据和帧尾。
为保证数据的有效性,一般加强了帧头和帧尾,帧头包含前导码、帧长度和帧号,有的增加了发方地址和收方地址,有的通讯协议将帧长度放在帧号的后面;帧尾主要是整个数据域与帧头校验的结果,类型有CRC检验、奇偶检验或异或偶校验等。
有的
协议帧尾也采用了固定的数据,甚至没有帧尾。
表1 串口通讯协议一般格式
前导码帧长度帧号数据域校验
帧头用户数据帧尾
同时通讯协议还需定义各个域的长度和每一个bit的确切的含义。
3.循环FIFO缓冲区
在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。
环形缓冲区是一个先进先出(FIFO)的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。
环形缓冲区通常有一个读指针和一个写指针。
读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。
通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。
在通常情况下,环形缓冲区的读数据仅仅会影响读指针,而写数据仅仅会影响写指针。
进行串口数据接收和发送一般也采用具有先进先出功能的FIFO循环缓冲区,如图1所示:
Tail
0 1 2 3 4 5 6 7 …… SIZE-1
Head
图1 FIFO循环缓冲区示意图
从图中可以看出,先进先出功能的FIFO缓冲区须定义一个大小为SIZE的缓冲区,存放数据,Tail指针表示该缓冲区中接收到的有效数据位置,表示写入的数据位置;Head指针表示该缓冲区中已经处理的有效数据位置,表示读出的数据位置;初始化时,Head指针和Tail指针都指到0的位置;当串口接收到数据存放到缓冲区后,Tail就加1,当Tail大于SIZE-1时,将Tail等于0,数据接收时,线性缓冲区变成一个回环;当系统从缓冲区取出一个数据进行分析,Head就加1,当Head大于SIZE-1时,将Head等于0,数据分析时,线性缓冲区也变成一个回环;依据这种方法,可以看出,数据先到的,数据先分析,建立了先进先出功能的FIFO循环缓冲区。
根据上述说明,可以使用如下结构体来定义FIFO缓冲区:
Typedef Struct Buffer_t{
Int Head;
Int Tail;
Char data[SIZE];
}Buffer;
这个结构体很简单,Tail表示写入的数据位置,Head表示读出的数据位置,data用来存放数据。
在对Head和Tail修改时,需要对SIZE取模,防止溢出。
SIZE一般根据串口采用的波特率,数据流量和计算机的处理速度来决定大小。
4.缓冲区数据的操作
根据FIFO的方式实现缓冲区的初始化、写入和读出的操作时,需要注意以下几点:
1)缓冲区的有效数据长度
缓冲区的有效数据长度表示在缓冲区中存在的没有及时处理的数据长度;可以这样计算:(Tail +SIZE- Head)%SIZE。
2)缓冲区的可以写入数据长度
缓冲区的可以写入数据长度表示在当前缓冲区中还能写入的数据长度;可以这样计算:SIZE-(Tail +SIZE- Head)%SIZE。
3)缓冲区空和满的判断条件
当Head和Tail相等的时候,缓冲区空,而当缓冲区中已经写入了SIZE-1个有效数据时,缓冲区满。
4)写入和读出的策略
当读取或者写入缓冲区时,需要检查缓冲区中的数据或者空间是否足够。
在读取时,如果没有足够的数据,是读取已有的数据还是不读取任何数据,而在写入时,如果空间不够,是部分写入还是不写入任何数据,这取决于软件开发人员的应用程序采用的策略。
一般情况下,在空间不够时,可以不做任何操作。
当出现上述情况,留给上层的程序去处理。
在实际应用中,如果读取和写入的程序设计的合理,缓冲区的大小合适,一般是不会出现写入失败的情况的。
5.串口数据的分析
使用循环缓冲区,可以非常方便的实现对串口数据的分析,而要完成协议的各个域的严格检查,实现对部分含有错误域的包和不完整的包的完美过滤,以及对混乱数据中正确包准确无误的抽取,还须对FIFO缓冲区重新定义,具体情况
如下:
Typedef Struct Buffer_t{
Int Head;
Int Tail;
Int HeadBak;
Char data[SIZE];
}Buffer;
增加的HeadBak为Head的备份,当帧头分析结束后,记录下Head的位置,以防后续数据不符合协议要求后,根据HeadBak重新恢复Head的位置。
依据前面制定的协议,需依次完成前导码的搜索,数据长度的检查、校验和的检查以及错误包的处理。
利用状态转移法,程序循环一次,从数据缓冲区读出一个字节,改变状态,每次分析结束后,Head++;在进行串口数据分析之前,必须判断缓冲区不空或缓冲区的有效数据长度不为零时,才读取数据进行分析。
分析具体流程如下:
1)判断前导码:如果成功,转到2。
2)帧长度的检查:对照协议中对长度域可能出现的最大和最小包长检查,如果正常,则转到3,否则若不是前导码,转到1。
3)帧号的检查:检查帧号是否为有效的帧号,有效,则转到4,HeadBak 等于Head,否则若不是前导码,转到1,若是前导码,转到2。
4)数据域的接收:根据帧长度判断包是否完整,若完整,转5。
5)校验和的检查:根据协议算出校验和,检查校验和是否正确,错误则Head=HeadBak,转到1。
如果正确,则读取(Head-HeadBak+SIZE)%SIZE的长度数据,根据帧号,执行相应的操作。
根据上述的处理流程,完成了协议的各个域的严格检查,实现了对部分含有错误域的包和不完整的包的完美过滤,以及对混乱数据中正确包准确无误的抽取。
6.实例验证
假如一帧正确数据如表2所示:
表2 一帧正确数据格式
前导码帧长度帧号数据域校验
0x55 0x01 0x02 0x03 0x50
帧长度表示数据域的长度,数据长度在0~32之间,帧号在0x00~0x0F之间,校验采用异或检验。
为验证上述流程的正确性,我们采取了各种案例进行验证,具体情况如下:
表3 串口数据处理流程正确性案例验证结果
通过表3中各种案例进行验证,都可以得到正确结果,每次取出的数据都符合协议,证明串口数据分析的状态转移法流程满足要求。
7.结束语
以上给出的是根据一个简单的协议,构造了一个串口接收数据缓冲区,根据缓冲区如何得到正确包的基本思路。
我们根据这个思路,在多个产品上已经得到了成功的运用。
但实际的通信系统中协议远比这个要复杂,而且涉及到数据包响应、命令错误、延时等等一系列的问题,不过有了这样的一个基础,通过克服这些困难我们就可以实现较为稳定可靠的系统。
参考文献
[1]李现勇.Visual C++串口通信技术与工程实践(第二版)[M].人民邮电出版社,2004.
[2]周立功,张华等.深入浅出ARM7-LPC213x/214x(上册)[M].北京航空航天大学出版社,2005.。