永发信息网

如何用c语言实现:a,b,c三个事件,依次进行,每到a时就执行事件1,再到b,再执行事件1,再c,再事件1.

答案:6  悬赏:50  手机版
解决时间 2021-01-18 07:39
如何用c语言实现:a,b,c三个事件,依次进行,每到a时就执行事件1,再到b,再执行事件1,再c,再事件1.
最佳答案
典型的状态机结构,可以去网上找找有关的资料,大概的结构像这样

enum { state_A, state_B, state_C } state = state_A;

while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 这里也可以用switch
{
action_1(); // 在某状态下发生某事件执行某个动作,并转入下个状态
state = state_B;
}
else if ( event_B )
{

}
else
{

}
break;
case state_B:
... ...
}

}

根据你的问题补充,可以这样划分状态
准备轮询1号机,等待1号机应答(已经轮询1号机,但1号机未应答),准备轮询2号机,等待2号机应答,准备轮询3号机,等待3号机应答,
或者分成3个状态加一个标志,
轮询1号机,轮询2号机,轮询3号机,加一个有无应答标志,
其实这两种分法没有本质区别。
程序框架大概的样子是这样
switch ( state )
case 准备轮询1号机:
发送轮询1号机的命令
state = 等待1号机的应答;
break;
case 等待1号机的应答;
判断1号机的应答状态,可能是正确、错误、超时,分别处理,并设置状态
正确:
state = 准备轮询2号机
错误:
state = 准备轮询1号机,重试
超时:
state = 准备轮询1号机,重试,具体做什么可以很灵活追问那假如我有五十个分机呢 每一个分机都有一个固定的id 这个循环怎么加进去呢追答这么多啊,
那么最好要一点技巧,但本质的东西不会变,
先说本质的,根据当前状态决定要做什么,或者说能做什么,你能响应什么事件,根据做的事情,或者说动作的结果决定接下来系统应该是个什么状态(次态)。
再说技巧,把状态分成几个变量来分别存储,比如用 ix 来记当前处理的分机号,再用一个单独的标志记应答状态,像这样
if ( flag == query ) // 准备轮询状态
发送轮询x号机的命令
flag = acknowlege;
else if ( flag == ack ) // 接收应答状态
判断x号机的应答状态
正确:
x = x + 1; flag = query; // 应答正确,准备轮询下一台分机
错误:
......

大概这样子,不是说状态必须用一个变量来记,只要能分清楚当前系统处于一种什么样的状态就行。也并不是说必须每个分机每个状态必须单独处理,有些相同的处理完全可以在判断的时候技巧性的合并处理。不管怎么处理,总的思路是这样一种结构,现态-事件-动作-次态。
全部回答
switch
典型的条件分支结构:直接自己到书上找
较常用的有switch或if else结构
可能会涉及函数调用
问题不太明确,没法更具体的回答
希望有帮助~追问麻烦你看我问题补充追答还是没说清楚,能不能把原来问题拿上来追问我补充了 麻烦您看下 看明白吗
叙述好乱,叙述好乱
switch(xx)
case a:
事件1;
break;
case b:
事件1;
break;
case c:
事件1;
break;追问麻烦你看我问题补充追答
莫非是while(true)
for(int i=1;i<=3;i++)
{
事件1;a+=i;
}追问您看下 问题补充 看明白吗追答while(true)
for(int i=1;i<=3;i++)
{
a+=i;
switch(i)
{
case 1:
事件1;
break;
case 2:
事件2;
break;
case 3:
事件3;
break;
}
}
while(1){
for(i=0;i<3;i++)
{
执行a+i;
switch(i)
{
case 0:
执行事件1;
break;
case 1:
执行事件2;
break;
case 2:
执行事件3;
break;
}
}
这样?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
看网络直播,被骗充17万,打官司能赢吗?
铬、铁、镍、铜等金属及其化合物在工业上有重
language learning是什么意思
为什么有人说作曲家不需要很高的智商
高考报名照片和会考报名照片一样嘛
When it miaowed, it a whisper.A. soundB.
封开县莲都国土资源管理所地址有知道的么?有
求4-氯环己基结构式
如何取消118168服务
徐而察之,则山下皆石穴罅 翻译
中国民生银行临沂豪森华府社区支行在什么地方
性生生活=动作图图100,
潜山路与贵池路交口到合肥市七中坐多少路公交
有什么职业后期可以和爆牌贼抗衡
72×30估算是
推荐资讯
我要种植蜜猴桃那里有卖蜜猴桃树苗
求视频消音软件,高手教我给视频消音
狗能与人一起用洗澡房吗
单选题西装不属于文化景观的原因是A.不具有一
逛完故宫大概下午两三点,接下来去景山公园,
人造石跟亚克力的区别是什么?
NEO新之目和春之色的隐形眼镜哪种较好?
纠结,CLS320和CLS260到底选择哪一台
单选题Howtall________youlastyear?A.areB
高数,无穷级数,中间步骤比较,这步怎么比较
桃树300棵梨树比他的3/4少2棵梨树有多少
男士两鬓白头发多设计什么发型好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?