How to change variable in base workspace without blocking the thread?
显示 更早的评论
I am trying to link an arduino to my simulink model and let the arduino send messages to change variables in my simulink model. The receiving end goes well with the serial receive block however I do not know how to change the variable in the base workspace without blocking the thread. If I use assignin or evalin it shows with tic; toc; that it takes around 0.0003 seconds, however the screen freezes for around 0.2 seconds when the method is called. So this method is not an option.
Then I tried using batch to run those methods it in the background or parfeval to run it in parallel, but they are both making the program even slower.
So my question, is there a way to target variables in another workspace without blocking the simulink thread? Or is there a way to queue the change of the variables since I don't need it immediately until a moment where not a lot is happening?
2 个评论
Ameer Hamza
2020-10-20
The real question is, why are you trying to change variables in the base workspace continually?
Thijs Nulle
2020-10-20
回答(1 个)
Steven Lord
2020-10-20
0 个投票
Are you using the Simulink Support Package for Arduino Hardware? I have not used this myself but I would be surprised if it didn't allow you to pass data from Simulink to the Arduino hardware and vice versa. If you're not aware of that support package, open the Add-Ons Explorer (in the Environment section of the Home tab on the Toolstrip) and search for "Arduino".
3 个评论
Thijs Nulle
2020-10-20
Steven Lord
2020-10-20
I'm not certain, but if you use the tools provided by the support package you may not need to involve the base workspace at all. That could avoid the 0.1-0.2 second "halts" you described entirely.
Thijs Nulle
2020-10-21
类别
在 帮助中心 和 File Exchange 中查找有关 Arduino Hardware 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!