因为它和rdt22一样,没有ack和nck的区别,而且也在传输中标了号(0号和1号),所以不怕重传的影响与超时重传的影响,所以,rtd30和rtd22是一样的接受方的图。
序号是为了防止冗余数据的产生的,而当发送发接收到需要的ACK后就会转入下一个状态。在下一个状态中,重复的ACK对于发送方是很明显的,不是发送方需要的信息,就会被忽略掉。所以没有必要为他标上序号。
扩展资料:
有限状态自动机还可以分成确定与非确定两种。非确定有限状态自动机可以转化为确定有限状态自动机。
有限状态自动机识别的语言是正规语言。
有限状态自动机除了它在理论上的价值,还在数字电路设计、词法分析、文本编辑器程序等领域得到了应用。
自动机接受的所有字串构成了自动机识别的语言 L(M)。
参考资料来源:百度百科-有限状态自动机
UiPath Studio 有 3 种类型的流程:序列(sequence),流程图(flowchart) 和 状态机(state machine)
框架包含了全部 3 种流程类型,我们选择了状态机作为 main 程序的主体,因为它提供了一种清晰的解决方案去表示我们所需的数据流。
维基百科就是这样定义有限状态机的:
“有限状态机(FSM)或有限状态机(FSA,复数:automata)、有限自动机或简单的状态机是计算的数学模型。它是一个抽象的机器,在任何给定的时间内都可以处于有限个状态中的一个。FSM 可以根据一些外部输入从一个状态更改为另一个状态;从一个状态更改为另一个状态称为转换。FSM 由其状态列表、初始状态和每个转换的条件定义。”
状态机的基本规则:
正如第一章所述,我们需要用这个模板解决的问题是:
关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。
状态机通过响应一系列事件而“运行”。
每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。
函数返回“下一个”(也许是同一个)节点。
这些节点中至少有一个必须是终态。
当到达终态, 状态机停止。
包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。
当输入符号串,模型随即进入起始状态。
它要改变到新的状态,依赖于转换函数。
在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。
传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。
很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况。
“命令行实用程序”是这种传统应用程序的典型例子。
另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。
具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间。
所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。
事件驱动的GUI应用程序是这种应用程序的典 型例子,它们由命令和选择(也就是用户造成的事件)来驱动。
Web应用程序由提交的表单和用户请求的网页来驱动,它们也可划归到上述类 别。
但是,GUI应用程序对于接收到的事件仍有一定程度的控制,因为这些事件要依赖于向用户显示的窗口和控件,而窗口和控件是由程序员控制的。
Web应用 程序则不然,因为一旦用户采取不在预料之中的 *** 作(比如使用浏览器的历史记录、手工输入链接以及模拟一次表单提交等等),就很容易打乱设计好的应用程序逻辑。
显然,必须采取不同的技术来处理这些情况。
它能处理任何顺序的事件,并能提供有意义的响应——即使这些事件发生的顺序和预计的不同。
有限状态机正是为了满足这方面的要求而设计的。
有限状态机是一种概念性机器,它能采取某种 *** 作来响应一个外部事件。
具体采取的 *** 作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。
之所以能 做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。
为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。
另外,采取 的行动还会决定并更新机器的状态。
这样一来,任何逻辑都可建模成一系列事件/状态组合。
#include <STC12C52H>
#define uchar unsigned char
#define uint unsigned int
sbit key=P1^2;
sbit p1_6=P1^6;
void delay(uchar delay_time)
{
uchar n;
uint m;
for (n=0;n<delay_time;n++)
{
for(m=0;m<10000;m++);
}
}
void keyscan()
{
if(key==0)
{
delay(5);
if(key==0)
while(!key)
{
p1_6 = 0;
delay(20);
p1_6 = 1;
delay(20);
}
}
}
void main()
{
WDT_CONTR = 0x3C;
while(1)
{
keyscan();
WDT_CONTR = 0x3C;
}
}
这个功能可以用中断来实现,当然,现在我写的这个也可以实现。由于你用的晶振频率不知道,所以你自己修改一下延时时间,再把头文件改一下,就可以了,我试验了,可以实现改功能。
之前18年曾经写过一篇关于状态机的博客,链接如下:
>
以上就是关于协议rdt3.0接收方的有限状态机图怎么画全部的内容,包括:协议rdt3.0接收方的有限状态机图怎么画、【REFramework 中文文档】03 REFramework 简介、状态机的概念是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)