想实现的功能如下:
  有N个硬件会发送来一个启动的编号,收到后根据编号执行对应的流程,流程中要操作硬件进行不同的工作。流程要可以让用户自定义。  硬件可以执行的操作有:关闭,发出一个警报音(异步),检测状态并返回结果(异步)...
  
  其中的是指发出命令后过不定时间才能有反回结果,要根据反回结果进行下一步操作。-------------------------------------------------------------------------
我现在将它理解为是要实现一个类似脚本的功能,支持 if else; case ;while ;goto ;for;
其中可以执行操作硬件的函数。比如调用硬件的发出警报函数为:functin PlayAlarm(级别:Inteter):处理结果; (超时0,手动停止1,错误 -1)则在脚本中可以这样写:
  @Var:=PlayAlarm(1);
  Case @Var of
    -1:提示;
     0:五秒后重发;
     1:;
  end;因为在不同的时间和日期处理的方式也不同,所以也要支持 date time week now 这些函数。
如  @Var:=Week;
    if (@Var>=1)and(@Var<=5) then
       .....
    else
       .....
    end;
现在这个流程用户要经常变化。我现在是将流程定义放在了XML文件中,求解 
@Var:=Week;
(@Var>=1)and(@Var<=5) 
这样的表达式也完成了。主要问题在@Var:=Week;这样的表达式 Week这个函数是同步的可以立刻得到结果而PlayAlarm这样的函数是异步的要让这个赋值过程停下来才行,不能用线程。因为可能要接好几百个硬件,不可能创建好几百个线程的。想了半天觉得这里和 CPU执行的过程很像将@Var:=PlayAlarm;分解成后缀表达式
@Var
PlayAlarm
:=
对这个堆栈的每一项分别计算,当算到PlayAlarm的时候就将 PlayAlarm 的位置 1 保存,等待结果到了的时候在从 1 开始算。但是如果PlasyAlarm中的参数是其它的函数的返回值,如a.PlasyAlarm(b.Plasyalarm) 是这里该如何压栈
,CPU 在执行函数中嵌套函数的方式是如何做的???查了半天资料没有什么进展,当初的操作系统和编译原理都忘了。那位给提个醒吧!!