一种串口通信方法

文档序号:8905189阅读:355来源:国知局
一种串口通信方法
【技术领域】
[0001]本发明涉及数据通信技术领域,更具体地说,涉及一种串口通信方法。
【背景技术】
[0002]模块化的水质监测系统一般由上位机和若干实现某种功能的功能模块(下位机)组成,而水质监测系统的功能实质上是上位机和下位机之间通过通信的方式来实现的。因此,一种理想的下位机通信方式或算法能够保证上位机和下位机之间实现可靠和稳定的通信。
[0003]现有技术的上位机和下位机的串口通信过程中,上位机每发完一帧指令,下位机则在规定时间内(若干毫秒)使用DMA (Direct Memory Access,直接内存访问)方式接收,对接收到的指令进行相关处理;并且在经过规定时间后进行DMA清零,即清除接收到的指令。其中,规定时间不可设置的太长,因为那样会影响上位机和下位机之间通信的实时性、通信速度及通信效率等。
[0004]但是,上位机在进行多任务处理时经常会影响发送指令的实时性,导致发送出来的指令的字节与字节间偶尔出现不确定时间的中断,由此不能在规定时间内将一帧指令发送完毕,此时,下位机则对该指令不予以处理或认为该指令是错误帧而直接进行DMA清零。最终导致上位机和下位机间的通信缺乏稳定性和可靠度。综上所述,现有技术中存在上位机与下位机之间的通信缺乏稳定性和可靠度的问题。

【发明内容】

[0005]本发明的目的是提供一种串口通信方法,以解决现有技术中上位机与下位机之间的通信缺乏稳定性和可靠度的问题。
[0006]为了实现上述目的,本发明提供如下技术方案:
[0007]一种串口通信方法,包括:
[0008]依次接收上位机发送的组成同一个指令的多个指令字节;
[0009]每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。
[0010]优选的,所述方法还包括:
[0011]每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。
[0012]优选的,所述方法还包括:
[0013]每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤。
[0014]优选的,所述方法还包括:
[0015]如果所述指令字节的功能码和地址码正确,则将该指令字节取出并存储至指定存储器中。
[0016]优选的,所述方法还包括:
[0017]如果所述指令的多个指令字节接收完毕,则树校验标志。
[0018]优选的,所述方法还包括:
[0019]所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;
[0020]如果校验不成功,则清空所述校验标志。
[0021]优选的,所述上位机对所述指令进行预设处理,包括:
[0022]所述主程序对所述指令进行数据解析、功能执行及指令恢复操作。
[0023]优选的,所述方法还包括:
[0024]所述主程序对所述指令进行预设处理后,清除所存储的所述指令。
[0025]本发明提供的一种串口通信方法,包括:依次接收上位机发送的组成同一个指令的多个指令字节;每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。与现有技术相比,本发明对上位机发送的指令的实时性无要求,即不设定【背景技术】中提到的规定时间,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
【附图说明】
[0026]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0027]图1为本发明实施例提供的一种串口通信方法的流程图;
[0028]图2为本发明实施例提供的一种串口通信方法中先入先出原则的示意图。
【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]本发明实施例提供的一种串口通信方法,可以包括:串口中端程序依次接收上位机发送的组成同一个指令的多个指令字节,并且每次接收到一个指令字节,都进行如图1所示的步骤,具体可以包括:
[0031]Sll:接收一个指令字节。
[0032]S12:判断所述指令的多个指令字节是否接收完毕,如果否,则执行步骤S13,如果是,则执行步骤S14。
[0033]S13:等待接收该指令的下一个指令字节,并在接收到该指令的下一个字节后,执行步骤S12。
[0034]S14:将所述指令发送至主程序以供其对该指令进行处理。
[0035]本发明对上位机发送的指令的实时性无要求,即不设定【背景技术】中提到的规定时间,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
[0036]需要说明的是,上述实施例提供的一种串口通信方法,判断所述指令的多个指令字节是否接收完毕的步骤是基
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1