一种命令传送方法

文档序号:7601148阅读:124来源:国知局
专利名称:一种命令传送方法
技术领域
本发明涉及设备之间的通信,尤指一种设备之间传送命令数据的方法。
背景技术
一般情况下,设备之间的通信协议有很多种,比如TCP等,这些通信协议比较复杂,而且还有误码、校验、重发等等机制,系统非常庞大,在通信信道容易被干扰的环境是这种通信协议最佳的应用场合。
其实,对于距离很近的设备之间进行通信时,由于两个通信设备相隔很近(一般在2米以内),通信信道稳定,很难受到外界干扰而造成误码,因此,并不需要校验、重发等复杂的通信机制来保障通信的可靠性和正确性。特别是对于主从设备之间的通信,由于主设备固定为命令发起者,从设备只是被动接收命令或数据,主从设备之间很少或没有信令的交互,在这样的应用中使用TCP等通信协议进行通信并不能为系统带来性能上的极大提高,而且使系统变得复杂庞大,为此,可以寻求一种相对较简单的通信机制来实现近距离的主从设备之间的命令数据传送。

发明内容
本发明提供一种命令传送方法,以解决现有技术中近距离设备之间通信时需采用复杂通信协议的问题。
本发明的命令传送方法包括将命令划分为不同的命令类型,设定不同类型命令的参数对应的处理方式,当进行命令传送时,命令发送端首先将当前命令的命令字转换成字符串,再根据当前命令所属命令类型对其参数进行相应处理后发送;命令接收端将接收的命令字字符串转换为对应命令,并根据接收命令的类型对接收的参数数据进行相对应的转换处理。
根据本发明的上述方法,将命令划分为如下三种类型第一类型命令参数为字符串;第二类型命令参数为非字符串,且参数数据小于设定的阈值;第三类型命令参数为非字符串,且参数数据大于等于设定的阈值;在命令发送端和命令接收端分别存储所述命令及其所属命令类型对照表;当进行命令传送时,执行下列步骤A、判断当前命令是否为第一类型命令,若是,则将命令字字符串、参数字符串和命令结束标识符顺序发送给命令接收端,转至步骤D;否则,执行步骤B;B、判断当前命令是否为第二类型命令,若是,则将其参数转换为字符串,将命令字字符串、转换后的参数字符串和命令结束标识符顺序发送给命令接收端,转至步骤D;否则,执行步骤C;C、计算出当前命令的参数数据长度,并将计算出的长度值转换为字符串,将命令字字符串、转换后的长度值字符串和命令结束标识符顺序发送给命令接收端,并在发送完成后,连续发送所述参数数据;转至步骤D;D、命令接收端接收到一个完整的命令后,首先将接收的命令字字符串转换为相应命令;再根据存储的命令类型对照表,判断出当前接收命令所属的命令类型,若为第一类型命令,则将接收的参数字符串作为当前命令的参数;若为第二类型命令,则将接收的参数字符串转换为对应参数数据;若为第三类型命令,则将接收的长度值字符串转换为长度数值,并连续接收相同长度的数据作为当前命令的参数数据。
所述字符串是以ASCII码定义的字符串。
根据本发明的上述方法,若所述命令没有命令参数,则仅将其命令字转换为字符串发送。
若所述命令带有命令参数,则在转换后的命令字字符串和参数字符串之间插入分隔符;接收端分析接收的命令中是否有约定的分隔符,若有,则将接收的第一个分隔符之前的数据信息转换为命令字。
若所述参数字符串不止一个,则在参数字符串之间插入分隔符,用以区分不同的参数;接收端根据接收的命令类型将分隔符前后的数据进行相应处理。
所述分隔符为空格。
所述命令结束标识符为回车符。
采用本发明的方法能够简单、快捷地实现近距离设备之间的命令数据传送。


图1为本发明方法命令发送端发送命令流程图;图2为本发明方法发送的命令字符串示意图;图3为本发明实施例中传送参数数据示意图;图4为本发明方法命令接收端接收命令流程图。
具体实施例方式
本发明的命令传送方法,需要首先在命令发送端和接收端约定全部命令的命令字,并使每一个命令的命令字唯一。由于使用C语言进行软件开发中要求各个函数名不能重复,因此对应这个函数的命令字可以是它的函数名,这样保证了命令的唯一性。根据每个命令的不同,可以带有参数或不带参数。有些命令的参数可以有多个,甚至于可以是一长串的参数数据。
根据命令所带参数的不同,本发明将命令划分为如下三种类型第一类型命令参数为字符串;第二类型命令参数为非字符串,且参数数据小于设定的阈值;第三类型命令参数为非字符串,且参数数据大于等于设定的阈值。
本发明预先在在命令发送端和命令接收端分别存储全部命令及其所属命令类型对照表。当发送端向接收端发送命令时,命令发送端首先将当前命令的命令字转换成字符串,其发送流程如图1所示,包括下列步骤步骤S11根据存储的命令类型对照表查找当前待发送命令所属的命令类型;步骤S12判断当前命令是否为第一类型命令,即当前命令的参数是否为字符串,若是,执行步骤S13,否则,执行步骤S14;步骤S13将转换后的命令字字符串、参数字符串和命令结束标识符顺序发送给命令接收端,并在命令字字符串和参数字符串之间插入分隔符;若参数字符串有多个,则参数字符串之间也用分隔符加以隔开,以区分不同的参数;分隔符可以是在发送端和接收端之间约定的任意字符,如空格等;发送的命令字符串结构如图2所示;例如要想调用void SendString(char*str);调用语句为SendString(“abcdef”);则发送的整个命令数据为“SendStringabcdef\n”,其中,“\n”表示回车符,用作命令结束标识符;步骤S14判断当前命令是否为第二类型命令,即当前命令的参数为非字符串,且参数数据小于设定的阈值,若是,则执行步骤S15;否则执行步骤S16;步骤S15将命令参数转换为字符串,然后将命令字字符串、转换后的参数字符串和命令结束标识符顺序发送给命令接收端;同样,在命令字字符串和参数字符串之间插入分隔符;若转换后的参数字符串有多个,在参数字符串之间也用分隔符加以隔开,以区分不同的参数;例如写寄存器命令SetReg(0x100,0x200);其中0x100,0x200都是系统调用的参数,则将这两个参数按16进制数转换为字符串为“100”,“200”;则发送的整个命令数据为“SetReg 100200\n”;步骤S16若当前命令不属于第一和第二类型命令,则一定是参数数据大于等于设定阈值的第三类命令,对于这类命令,由于参数数据较多,如果都转换成字符串传送给接收端,则整个命令的传送时间较长,为了有效节省数据传送时间,提高传送效率,当命令的参数数据较多时(大于设定的某个阈值),则不再将参数数据进行字符串转换,而采取直接将参数数据发送给接收端的传送方式;为了使接收端能准确无误地接收命令参数,在发送端计算出当前命令的参数数据长度,并将计算出的长度值转换为字符串,然后将命令字字符串、转换后的长度值字符串和命令结束标识符顺序发送给命令接收端,并在发送完成后,连续发送完全部参数数据;例如发送端希望传送数组buf[100]给接收端,则发送命令为“WriteBuf 100\n”,紧接着送出buf[100]的内容,如图3所示。
本发明根据命令所带的参数不同,分成了三种方式将命令发送给接收端。相应地,接收端根据接收的命令所属命令类型,对应地还原命令。具体接收方法如图4所示,包括下列步骤步骤S31接收端存储命令类型对照表;步骤S32接收端根据命令结束标识符接收完一个完整的命令数据包,并将接收的命令字字符串首先转换成对应命令;步骤S33接收端根据接收的命令查找存储的命令类型对照表,确定当前命令的命令类型;若为第一类型命令,则执行步骤S34;若为第二类型命令,则执行步骤S35;若为第三类型命令,则执行步骤S36;步骤S34将接收的参数字符串作为当前命令的参数;步骤S35将接收的参数字符串转换为对应参数数据,即为当前命令的参数;步骤S36将接收的长度值字符串转换为长度数值,并连续接收相同长度的数据作为当前命令的参数数据。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种命令传送方法,其特征在于,将命令划分为不同的命令类型,设定不同类型命令的参数对应的处理方式,当进行命令传送时,命令发送端首先将当前命令的命令字转换成字符串,再根据当前命令所属命令类型对其参数进行相应处理后发送;命令接收端将接收的命令字字符串转换为对应命令,并根据接收命令的类型对接收的参数数据进行相对应的转换处理。
2.如权利要求1所述的命令传送方法,其特征在于,将命令划分为如下三种类型第一类型命令参数为字符串;第二类型命令参数为非字符串,且参数数据小于设定的阈值;第三类型命令参数为非字符串,且参数数据大于等于设定的阈值;在命令发送端和命令接收端分别存储所述命令及其所属命令类型对照表;当进行命令传送时,执行下列步骤A、判断当前命令是否为第一类型命令,若是,则将命令字字符串、参数字符串和命令结束标识符顺序发送给命令接收端,转至步骤D;否则,执行步骤B;B、判断当前命令是否为第二类型命令,若是,则将其参数转换为字符串,将命令字字符串、转换后的参数字符串和命令结束标识符顺序发送给命令接收端,转至步骤D;否则,执行步骤C;C、计算出当前命令的参数数据长度,并将计算出的长度值转换为字符串,将命令字字符串、转换后的长度值字符串和命令结束标识符顺序发送给命令接收端,并在发送完成后,连续发送所述参数数据;转至步骤D;D、命令接收端接收到一个完整的命令后,首先将接收的命令字字符串转换为相应命令;再根据存储的命令类型对照表,判断出当前接收命令所属的命令类型,若为第一类型命令,则将接收的参数字符串作为当前命令的参数;若为第二类型命令,则将接收的参数字符串转换为对应参数数据;若为第三类型命令,则将接收的长度值字符串转换为长度数值,并连续接收相同长度的数据作为当前命令的参数数据。
3.如权利要求1所述的命令传送方法,其特征在于,所述字符串是以ASCII码定义的字符串。
4.如权利要求2所述的命令传送方法,其特征在于,若所述命令没有命令参数,则仅将其命令字转换为字符串发送。
5.如权利要求2所述的命令传送方法,其特征在于,若所述命令带有命令参数,则在转换后的命令字字符串和参数字符串之间插入分隔符;接收端分析接收的命令中是否有约定的分隔符,若有,则将接收的第一个分隔符之前的数据信息转换为命令字。
6.如权利要求5所述的命令传送方法,其特征在于,若所述参数字符串不止一个,则在参数字符串之间插入分隔符,用以区分不同的参数;接收端根据接收的命令类型将分隔符前后的数据进行相应处理。
7.如权利要求6所述的命令传送方法,其特征在于,所述分隔符为空格。
8.如权利要求2所述的命令传送方法,其特征在于,所述命令结束标识符为回车符。
全文摘要
本发明有关一种命令传送方法,包括将命令划分为不同的命令类型,设定不同类型命令的参数对应的处理方式,当进行命令传送时,命令发送端首先将当前命令的命令字转换成字符串,再根据当前命令所属命令类型对其参数进行相应处理后发送;命令接收端将接收的命令字字符串转换为对应命令,并根据接收命令的类型对接收的参数数据进行相对应的转换处理。采用本发明的方法能够简单、快捷地实现近距离设备之间的命令数据传送。
文档编号H04L29/06GK1633126SQ200410102540
公开日2005年6月29日 申请日期2004年12月24日 优先权日2004年12月24日
发明者游明琦, 刘勇 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1