于MODBUS通信协议实现的。
[0037]本发明实施例提供的一种串口通信方法,还可以包括:
[0038]每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。
[0039]需要说明的是,先入先出原则是一种传统的按序执行方法,在本实施例中指的是,先进入字节列队的指令字节先溢出。举例说明该原则,如图2所示,假设字节队列最多可存储7个指令字节,且当其字节队列存储有7个指令字节,分别为O号字节、I号字节、2号字节、3号字节、4号字节、5号字节、6号字节,当接收到一个指令字节时,O号字节溢出,I号字节至6号字节均向前移动一个位置,即I号字节变成O号字节,2号字节变成I号字节,以此类推;则6号字节变成5号字节,其原本的位置是空的,此时,将接收到的指令字节放置在该空的位置上,成为6号字节。由此,能够保证字节队列中所包含的指令字节为最新的指令字节,方便对该指令字节进行相关处理。
[0040]本发明实施例提供的一种串口通信方法,还可以包括:
[0041]每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤,同时将该指令字节取出并存储至指定存储器中。
[0042]如果接收到的指令字节的地址码和功能码均正确,则可树帧继续暂存标志,即表明继续接收下一个指令字节。且,将地址码和功能码均正确的指令取出并存储至指定存储器中,可保证下一个接收到的指令字节能够成功存储至暂存器,暂存器指针自加。由此,实现根据指令所包含的指令字节的个数实现对暂存器的冗余分配,确保有足够的暂存器能够实现相关存储工作。
[0043]另外,如果指令字节的地址码和功能码不正确,说明该指令与主程序并不对应,则可立即退出串口中端程序。
[0044]本发明实施例提供的一种串口通信方法,还可以包括:
[0045]如果所述指令的多个指令字节接收完毕,则树校验标志。
[0046]主程序只需实时监测校验位即可获知是否需要获取指令;即当检测到校验标志时,则获取指令,保证主程序能够及时获取指令。
[0047]本发明实施例提供的一种串口通信方法,还可以包括:
[0048]所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;如果校验不成功,则清空所述校验标志。
[0049]清除校验标志,以避免后续工作中因校验标志的存在误判需要获取指令,进而错误的执行相关步骤。且,指令字节的个数越多,对指令进行校验占用的时间则越长,因此将校验指令的过程安排在主程序中执行,能够保障上位机发送的指令均能成功接收。另外,清空校验标志后可直接退出主程序。
[0050]其中,预设处理可以包括:对所述指令进行数据解析、功能执行及指令恢复操作。
[0051]另外,在主程序对所述指令进行预设处理后,可以清除所存储的所述指令,并且清零暂存器指针。由此,能够保证暂存器或者指定存储器始终拥有足够的空间实现后续的保存工作。
[0052]对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种串口通信方法,其特征在于,包括: 依次接收上位机发送的组成同一个指令的多个指令字节; 每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令子。2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤。4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 如果所述指令字节的功能码和地址码正确,则将该指令字节取出并存储至指定存储器中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括: 如果所述指令的多个指令字节接收完毕,则树校验标志。6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理; 如果校验不成功,则清空所述校验标志。7.根据权利要求6所述的方法,其特征在于,所述上位机对所述指令进行预设处理,包括: 所述主程序对所述指令进行数据解析、功能执行及指令恢复操作。8.根据权利要求6所述的方法,其特征在于,所述方法还包括: 所述主程序对所述指令进行预设处理后,清除所存储的所述指令。
【专利摘要】本发明公开了一种串口通信方法,包括:依次接收上位机发送的组成同一个指令的多个指令字节;每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。本发明对上位机发送的指令的实时性无要求,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
【IPC分类】G06F13/28, G06F13/42
【公开号】CN104881379
【申请号】CN201510362905
【发明人】张权, 邹雄伟, 蔡志
【申请人】力合科技(湖南)股份有限公司
【公开日】2015年9月2日
【申请日】2015年6月26日