【发布时间】:2021-08-16 15:32:12
【问题描述】:
我正在将 MATLAB 代码链接到 Excel 中的 DDE 应用程序。 它工作正常,但每当我尝试运行代码时,操作都是在不考虑每次暂停的情况下完成的。这部分以正确的方式暂停,应该是:
channel = ddeinit('excel','C:\VTScada\NewApplication\Application.xlsx')
%Inserire valori iniziali e finali
s_start = input('s_start','s')
pause(1)
当我运行 remaning 代码时,例如,就像 MATLAB 对所有暂停值求和一样。然后,一段时间后,它以非常快速的方式运行所有代码,而无需考虑每次暂停。
ddepoke(channel,'r18c2',1)
pause(10)
ddepoke(channel,'r18c2',0)
ddepoke(channel,'r18c2',1)
pause(10)
ddepoke(channel,'r18c2',0)
我尝试使用代码解决这个问题
pause('on')
pause(10)
pause('off')
但事实证明,在这种特殊情况下,MATLAB 根本不考虑暂停。情况似乎更糟了。我该怎么办?
【问题讨论】:
-
@CrisLuengo 是的,对不起,程序是 Matlab
-
请注意,自 5.1 版(1997 年发布)以来,MATLAB 不再支持 DDE 客户端。您应该使用 COM 模型与 Excel 进行通信:mathworks.com/matlabcentral/answers/…
-
我知道,但就我而言,它工作正常。唯一的问题只有我写的那个,Matlab不尊重暂停,我想如果我切换到COM模型我会遇到同样的问题
-
你为什么这么认为?您使用的界面在大约 25 年内未随核心 MATLAB 的更改而更新。我对事情不再正常工作并不感到惊讶。
-
根据您的描述,似乎 MATLAB 正在执行
pause,但消息全部收集到 MATLAB 程序完成,然后发送出去。我不知道 MATLAB 对这些消息使用什么进程,但尝试在每个pause语句之后添加一个drawnow命令。