Hi Paul,
Thanks for your reply.
I have been using Matlab R2018b, if that makes any difference. I never got the blocking mode to work with MBDT v3.1.0 and immediately after upgrading to v3.2.0, it still would not work. However, since then I de-installed the MBDT completely and removed the old remnants of the original toolbox (the update installation created a new folder with a different name to the previous installation which broke several links). On re-starting Matlab and re-installing MBDT v3.2.0 for the second time, CAN blocking mode can now be selected without seeing the status_t error. I don't know if it was the removal of the old install remnants or the Matlab re-start that made the difference. Either way, I consider this problem to be resolved now.
On a related note, please would you be able to provide any further information on what the Status output does? The help page does not even mention it, but I did find your reply on another thread related to the CAN send function in blocking mode that says this:
The output of the blocking FCAN_Send is:
Status enum output is a Simulink enumeration mapped to the status_t C enum from SDK. Supported values for FCAN are:
- status_t.STATUS_SUCCESS if successful
- status_t.STATUS_TIMEOUT if the timeout is reached
- status_t.STATUS_BUSY if another receive/send using the same message buffer is in progress
For the receive function, does STATUS_SUCCESS mean that a CAN frame has been received and is ready for processing? I am currently attempting to use this block in a polling loop to tell my program when it needs to act on a received message. I have set the timeout to zero on the assumption that it will return immediately with STATUS_TIMEOUT if there is no CAN message in the receive buffer. Can you confirm if this is a valid way to use blocking mode or should I be checking one or more of the other outputs to indicate when a message has been received?
Thanks again,
John.