请写出来 具体流程 用c语言
这个程序是用在无线发射上的一段,意思是一个总机,三个分机。总机要发射问每一个分机,当问分机1时, 1回答 ,此时2,3不动作。这时总机接收到1的回答。然后再问分机2 依次类推
此处的事件1 每一次都不一样 问题写错了 不好意思 应该为事件1 事件2 事件3
这个过程要循环的
这样说 开始时a执行再事件1,然后a+1执行,再事件2,再a+1+1,执行事件3;都执行完之后 再从头开始
那假如我有五十个分机呢 每一个分机都有一个固定的id 这个循环怎么加进去呢
追答这么多啊,
那么最好要一点技巧,但本质的东西不会变,
先说本质的,根据当前状态决定要做什么,或者说能做什么,你能响应什么事件,根据做的事情,或者说动作的结果决定接下来系统应该是个什么状态(次态)。
再说技巧,把状态分成几个变量来分别存储,比如用 ix 来记当前处理的分机号,再用一个单独的标志记应答状态,像这样
if ( flag == query ) // 准备轮询状态
发送轮询x号机的命令
flag = acknowlege;
else if ( flag == ack ) // 接收应答状态
判断x号机的应答状态
正确:
x = x + 1; flag = query; // 应答正确,准备轮询下一台分机
错误:
......
大概这样子,不是说状态必须用一个变量来记,只要能分清楚当前系统处于一种什么样的状态就行。也并不是说必须每个分机每个状态必须单独处理,有些相同的处理完全可以在判断的时候技巧性的合并处理。不管怎么处理,总的思路是这样一种结构,现态-事件-动作-次态。
麻烦你看我问题补充
追答莫非是
while(true)您看下 问题补充 看明白吗
追答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;
}
}
麻烦你看我问题补充
追答还是没说清楚,能不能把原来问题拿上来
追问我补充了 麻烦您看下 看明白吗