CN104881379B - 一种串口通信方法 - Google Patents

一种串口通信方法 Download PDF

Info

Publication number
CN104881379B
CN104881379B CN201510362905.8A CN201510362905A CN104881379B CN 104881379 B CN104881379 B CN 104881379B CN 201510362905 A CN201510362905 A CN 201510362905A CN 104881379 B CN104881379 B CN 104881379B
Authority
CN
China
Prior art keywords
instruction
byte
received
described instruction
host computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510362905.8A
Other languages
English (en)
Other versions
CN104881379A (zh
Inventor
张权
邹雄伟
蔡志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lihe Technology Hunan Co Ltd
Original Assignee
Lihe Technology Hunan Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lihe Technology Hunan Co Ltd filed Critical Lihe Technology Hunan Co Ltd
Priority to CN201510362905.8A priority Critical patent/CN104881379B/zh
Publication of CN104881379A publication Critical patent/CN104881379A/zh
Application granted granted Critical
Publication of CN104881379B publication Critical patent/CN104881379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种串口通信方法,包括:依次接收上位机发送的组成同一个指令的多个指令字节;每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。本发明对上位机发送的指令的实时性无要求,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。

Description

一种串口通信方法
技术领域
本发明涉及数据通信技术领域,更具体地说,涉及一种串口通信方法。
背景技术
模块化的水质监测系统一般由上位机和若干实现某种功能的功能模块(下位机)组成,而水质监测系统的功能实质上是上位机和下位机之间通过通信的方式来实现的。因此,一种理想的下位机通信方式或算法能够保证上位机和下位机之间实现可靠和稳定的通信。
现有技术的上位机和下位机的串口通信过程中,上位机每发完一帧指令,下位机则在规定时间内(若干毫秒)使用DMA(Direct Memory Access,直接内存访问)方式接收,对接收到的指令进行相关处理;并且在经过规定时间后进行DMA清零,即清除接收到的指令。其中,规定时间不可设置的太长,因为那样会影响上位机和下位机之间通信的实时性、通信速度及通信效率等。
但是,上位机在进行多任务处理时经常会影响发送指令的实时性,导致发送出来的指令的字节与字节间偶尔出现不确定时间的中断,由此不能在规定时间内将一帧指令发送完毕,此时,下位机则对该指令不予以处理或认为该指令是错误帧而直接进行DMA清零。最终导致上位机和下位机间的通信缺乏稳定性和可靠度。综上所述,现有技术中存在上位机与下位机之间的通信缺乏稳定性和可靠度的问题。
发明内容
本发明的目的是提供一种串口通信方法,以解决现有技术中上位机与下位机之间的通信缺乏稳定性和可靠度的问题。
为了实现上述目的,本发明提供如下技术方案:
一种串口通信方法,包括:
依次接收上位机发送的组成同一个指令的多个指令字节;
每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。
优选的,所述方法还包括:
每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。
优选的,所述方法还包括:
每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤。
优选的,所述方法还包括:
如果所述指令字节的功能码和地址码正确,则将该指令字节取出并存储至指定存储器中。
优选的,所述方法还包括:
如果所述指令的多个指令字节接收完毕,则树校验标志。
优选的,所述方法还包括:
所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;
如果校验不成功,则清空所述校验标志。
优选的,所述上位机对所述指令进行预设处理,包括:
所述主程序对所述指令进行数据解析、功能执行及指令恢复操作。
优选的,所述方法还包括:
所述主程序对所述指令进行预设处理后,清除所存储的所述指令。
本发明提供的一种串口通信方法,包括:依次接收上位机发送的组成同一个指令的多个指令字节;每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。与现有技术相比,本发明对上位机发送的指令的实时性无要求,即不设定背景技术中提到的规定时间,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种串口通信方法的流程图;
图2为本发明实施例提供的一种串口通信方法中先入先出原则的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种串口通信方法,可以包括:串口中端程序依次接收上位机发送的组成同一个指令的多个指令字节,并且每次接收到一个指令字节,都进行如图1所示的步骤,具体可以包括:
S11:接收一个指令字节。
S12:判断所述指令的多个指令字节是否接收完毕,如果否,则执行步骤S13,如果是,则执行步骤S14。
S13:等待接收该指令的下一个指令字节,并在接收到该指令的下一个字节后,执行步骤S12。
S14:将所述指令发送至主程序以供其对该指令进行处理。
本发明对上位机发送的指令的实时性无要求,即不设定背景技术中提到的规定时间,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
需要说明的是,上述实施例提供的一种串口通信方法,判断所述指令的多个指令字节是否接收完毕的步骤是基于MODBUS通信协议实现的。
本发明实施例提供的一种串口通信方法,还可以包括:
每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。
需要说明的是,先入先出原则是一种传统的按序执行方法,在本实施例中指的是,先进入字节列队的指令字节先溢出。举例说明该原则,如图2所示,假设字节队列最多可存储7个指令字节,且当其字节队列存储有7个指令字节,分别为0号字节、1号字节、2号字节、3号字节、4号字节、5号字节、6号字节,当接收到一个指令字节时,0号字节溢出,1号字节至6号字节均向前移动一个位置,即1号字节变成0号字节,2号字节变成1号字节,以此类推;则6号字节变成5号字节,其原本的位置是空的,此时,将接收到的指令字节放置在该空的位置上,成为6号字节。由此,能够保证字节队列中所包含的指令字节为最新的指令字节,方便对该指令字节进行相关处理。
本发明实施例提供的一种串口通信方法,还可以包括:
每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤,同时将该指令字节取出并存储至指定存储器中。
如果接收到的指令字节的地址码和功能码均正确,则可树帧继续暂存标志,即表明继续接收下一个指令字节。且,将地址码和功能码均正确的指令取出并存储至指定存储器中,可保证下一个接收到的指令字节能够成功存储至暂存器,暂存器指针自加。由此,实现根据指令所包含的指令字节的个数实现对暂存器的冗余分配,确保有足够的暂存器能够实现相关存储工作。
另外,如果指令字节的地址码和功能码不正确,说明该指令与主程序并不对应,则可立即退出串口中端程序。
本发明实施例提供的一种串口通信方法,还可以包括:
如果所述指令的多个指令字节接收完毕,则树校验标志。
主程序只需实时监测校验位即可获知是否需要获取指令;即当检测到校验标志时,则获取指令,保证主程序能够及时获取指令。
本发明实施例提供的一种串口通信方法,还可以包括:
所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;如果校验不成功,则清空所述校验标志。
清除校验标志,以避免后续工作中因校验标志的存在误判需要获取指令,进而错误的执行相关步骤。且,指令字节的个数越多,对指令进行校验占用的时间则越长,因此将校验指令的过程安排在主程序中执行,能够保障上位机发送的指令均能成功接收。另外,清空校验标志后可直接退出主程序。
其中,预设处理可以包括:对所述指令进行数据解析、功能执行及指令恢复操作。
另外,在主程序对所述指令进行预设处理后,可以清除所存储的所述指令,并且清零暂存器指针。由此,能够保证暂存器或者指定存储器始终拥有足够的空间实现后续的保存工作。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种串口通信方法,其特征在于,包括:
依次接收上位机发送的组成同一个指令的多个指令字节;
每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节;
所述方法还包括:
每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中;
所述方法还包括:
每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤;如果否,则退出程序;
判断所述指令的多个指令字节是否接收完毕基于MODBUS通信协议实现。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述指令字节的功能码和地址码正确,则将该指令字节取出并存储至指定存储器中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述指令的多个指令字节接收完毕,则树校验标志。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;
如果校验不成功,则清空所述校验标志。
5.根据权利要求4所述的方法,其特征在于,所述上位机对所述指令进行预设处理,包括:
所述主程序对所述指令进行数据解析、功能执行及指令恢复操作。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述主程序对所述指令进行预设处理后,清除所存储的所述指令。
CN201510362905.8A 2015-06-26 2015-06-26 一种串口通信方法 Active CN104881379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510362905.8A CN104881379B (zh) 2015-06-26 2015-06-26 一种串口通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510362905.8A CN104881379B (zh) 2015-06-26 2015-06-26 一种串口通信方法

Publications (2)

Publication Number Publication Date
CN104881379A CN104881379A (zh) 2015-09-02
CN104881379B true CN104881379B (zh) 2018-08-21

Family

ID=53948876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510362905.8A Active CN104881379B (zh) 2015-06-26 2015-06-26 一种串口通信方法

Country Status (1)

Country Link
CN (1) CN104881379B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106230745B (zh) * 2016-07-20 2019-05-14 北京云杉智源科技有限公司 具有高实时性和低延时性的上下位机之间的数据传输方法
CN113342720A (zh) * 2021-05-12 2021-09-03 辅易航智能科技(苏州)有限公司 一种高速串口通信方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101699419B (zh) * 2009-11-13 2012-03-21 威盛电子股份有限公司 数据传输方法以及使用该方法的通用串行总线主机控制器
CN103631622A (zh) * 2013-11-29 2014-03-12 中达电通股份有限公司 软件在线升级修复方法
US8819326B1 (en) * 2006-12-12 2014-08-26 Spansion Llc Host/client system having a scalable serial bus interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819326B1 (en) * 2006-12-12 2014-08-26 Spansion Llc Host/client system having a scalable serial bus interface
CN101699419B (zh) * 2009-11-13 2012-03-21 威盛电子股份有限公司 数据传输方法以及使用该方法的通用串行总线主机控制器
CN103631622A (zh) * 2013-11-29 2014-03-12 中达电通股份有限公司 软件在线升级修复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于汇编语言的MSP430单片机与上位机间串行通讯的实现;吴怀超等;《仪表技术与传感器》;20100630;第75-76页 *

Also Published As

Publication number Publication date
CN104881379A (zh) 2015-09-02

Similar Documents

Publication Publication Date Title
CN101620551B (zh) 一种面向多虚拟机应用的网卡中断控制方法
CN104052758A (zh) 电能表多通信协议的自适应方法
CN104881379B (zh) 一种串口通信方法
US8364291B2 (en) Method and apparatus for providing redundancy in an industrial control system
CN106547613A (zh) 任务处理流程的调度及故障恢复方法
EP2428893A2 (en) A reduction operation device, a processor, and a computer system
CN104461468B (zh) 基于处理器指令快速完成的精确异常维护方法及装置
CN105472377B (zh) 电视机调试方法及装置
CN111818632A (zh) 一种设备同步的方法、装置、设备及存储介质
CN102546084A (zh) 异步串行通信数据接收时的抗干扰纠错采样系统和方法
CN106412088B (zh) 一种数据同步方法及终端
CN110292312A (zh) 饮品订单的处理方法及装置
CN108306967A (zh) 一种数据处理方法及终端
CN106844075A (zh) 一种数据传递方法和设备
CN105138308B (zh) 一种更新寄存器的方法及装置
CN110096399B (zh) 一种硬件接口的调试方法
CN102890661A (zh) 一种主从机通讯协议
CN106844025A (zh) 一种异步中断处理方法及中断控制器
CN117055496A (zh) 多工位产品处理方法、装置、电子设备及存储介质
CN104133805A (zh) Atp车载设备中的数据同步方法与装置
US8259609B2 (en) Modem and packet processing method
CN102780700A (zh) 一种视频监控领域实现波特率和协议自适应的方法及装置
CN109542903B (zh) 数据处理方法及装置
CN105786597A (zh) uCOS-III操作系统实现任务切换的方法及装置
CN104468569A (zh) 分布式数据的完整性检测方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant