您的位置:SKY网络电话 >> 行业信息>> 点对点通信数控系统通信中命令传输的实现

点对点通信数控系统通信中命令传输的实现

来源:网上转载-点对点通信  发布时间:2014-08-14 15:40:09

点对点通信命令的传输是对文件传输过程控制,是文件传输的简单形式,为跟文件数据传输分开,在命令传输前先用Encode()进行取反,来识别命令的传输。它包括命令的发送和接收。

 

点对点通信

 

点对点通信命令的发送是SendCommand()函数来实现,命令发送的流程图如3. 2,首先根据命令的大小判断命令有效性,以CalcutateCheckSum()计算对命令数据的校验值,封装在命令中等待发送,然后进入命令发送的循环,根据status值大小控制命令的发送,当status等于0时,SEND_ COMMAND()发送命令的发送的开始标志,status加1;当status= 1时,SEND_ DATA()用于数据发送命令内容,其实先调用用Encode)进行取反,再用SEND_ DATA()发送数据, status加1;当status=2时,SEND_ DATA()用于数据发送命令内容和status加1, GetHunderSenconds()用于记录当前的时间,通过记录发送前的时间和收到反馈的时间,来检验发送过程是否超时即unOverRenTimes是否等于1;当status=2时,SEND_ COMMAND()发送命令的发送的结束标志,点对点通信当status=3时,等待另一段的返回信息,例如超时接收不到返回信息就重发status=0,重发次数nResendTimes加1,而收到返回信息后,进行校验命令是否发送成功,发送成功就结束循环,否则重发。退出循环后调用DisPathCallback(), DisPathCallback()是一个回调函数,一开始把函数的地址传给SendCommand()的proc中,在后面调用。最后根据各标志bLoop, bCancel为循环和取消的标志,nResendTimes是重发的次数,计算并返回二t表示命令发送的状态。

命令接收是对命令发送的逆操作,点对点通信命令接收的流程图如3.3,首先根据命令的大小大于零lpcmd&&nCmdSize>0判断命令有效性,然后进入命令发送的循环,根据status值大小控制命令的接收,当status等于0时,ReadCode()接收命令开始信号,status加1,  GetHunderSenconds()用于记录当前的时间,通过记录发送前的时间和收到反馈的时间,点对点通信来检验发送过程是否超时即unOverRenTimes是否等于1;当status=1时ReadCode()接收命令内容,首先判断是否控制字符,如果不是命令字符和格式正确,把命令的内容写入缓存,否则SEND_ COMMAND()要求重发;当收到的是命令字符的时候,表示命令内容己将接收完毕。如果收到是非结束命令,则在数据接收时候发生错误,以SEND一OMMAND()发送重发命令要求重发。如果接收到传送结束的命令,对命令内容进行校验命令再跟收到的校验码做比较,如果一致就向发送端SEND_ COMMAND发送收到命令成功就结束循环,否则SEND_ COMMAND()发送重发命令要求重发。退出循环后调用DisPathCallback(),  DisPathCallback()是一个回调函数,一开始把函数的地址传给SendCommand()的proc中,在后面调用。最后根据各标志bLoop, bCancel为循环和取消的标志,,计算返回ret表示命令发送的状态。

点对点通信命令传输是为了文件传输而设立的控制机制,其本身也又严密的校验机制,首先在发送端计算校验值,然后封装在命令内容中发送到接收端。接收端根据收到的命令内容计算出校验值,再跟收到的校验值进行比较,如果两者相等,才发送命令接收成功信息。发送端接收到这个信息,命令的发送才算完成。

上一条:企业即时通讯软件功能与系统
下一条:开发Android程序软件需求