Error while connecting to realtime target

1 view (last 30 days)
Hi, I made level 2 s-function in C language, which sends some data via serial port. I compiled it with Microsoft Visual C++ 2008 SP1 compiler. When I add this s-function to simulink model and start the simulation in normal mode, everything is ok, but, when I want to connect with realtime target (after building with rtwin.tlc), I get this error message:
Error occurred while executing External Mode MEX-file 'rtwinext': Error loading real-time executable: undefined symbol "_InterlockedExchangeAdd"
I have not any idea, what this error means. Could anybody help me? Thanks.
  2 Comments
Kaustubha Govind
Kaustubha Govind on 4 Jun 2013
Do you think the failure is specific to your S-function, or do you see it even without your S-function. For example, you could try the example model 'rtvdp' and see if you can execute that in external mode successfully.
Miroslav
Miroslav on 5 Jun 2013
Yes I can use external mode. I supose thet problem is with using windows.h in my s-function. Simulink can't use windows API function in external mode.

Sign in to comment.

Accepted Answer

Jan Houska
Jan Houska on 5 Jun 2013
For serial port communication, please use Packet Output or Stream Output blocks, depending on your data format. You are correct that you cannot use Windows API in real-time code.
  1 Comment
Miroslav
Miroslav on 5 Jun 2013
I know Stream and packet input block, but i need read data from input buffer asynchronous. I need execute some functions after every single byte is received. I supposed that s-function could help me. I could to use Stream input block placed in function call subsystem, which is call with hardware interrupt (byte receive). I have not any idea how hardware interrupt work in simulink external mode. Is it possible?

Sign in to comment.

More Answers (1)

Jan Houska
Jan Houska on 6 Jun 2013
If you want to react to individual received bytes, it is probably best to sample (poll) the input fast enough. I'd recommend the Packet Input block with a sample rate of, say, 0.5ms, and using its Data Ready output to trigger any necessary action.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!