rtIOStreamSend
Send data through communication channel
Description
sends data through a communication stream.errFlag
= rtIOStreamSend(streamID
, src
, size
, sizeSent
)
The API for rtIOStream
functions is independent of the physical
layer across which you send the data, for example, RS232, Ethernet, or Controller
Area Network (CAN). The choice of physical layer
affects the achievable data rates for
communication between your development computer and target processor.
For a processor-in-the-loop (PIL) application, there is no minimum data rate requirement. The higher the data rate is, the faster the simulation runs.
A communications device driver can require additional hardware-specific or channel-specific configuration parameters. For example:
A CAN channel can require the specification of the CAN node that is used.
A TCP/IP channel can require the configuration of a port or static IP address.
A CAN channel can require the specification of the CAN message ID and priority.
When you implement the rtIOStream
driver
functions, provide this configuration data, for example, by hard-coding the data or
by supplying arguments to rtIOStreamOpen
.
Examples
Send and Receive Data from Processor
This code from rtiostreamtest.c
shows how to send and receive data
from a target
processor.
static void blockingIO(int send, unsigned long numMemUnits) { size_t sizeToTransfer = (size_t) numMemUnits; size_t sizeTransferred; IOUnit_T * ioPtr = (IOUnit_T *) &buff[0]; int status; if (numMemUnits > BUFFER_SIZE) { AckCode = stat_notEnoughSpace; AckArg0 = BUFFER_SIZE; return; } #ifdef HOST_WORD_ADDRESSABLE_TESTING /* map to bytes */ sizeToTransfer *= MEM_UNIT_BYTES; #endif while (sizeToTransfer > 0) { sizeTransferred = 0; /* Do the low level call */ status = send ? rtIOStreamSend(streamID, ioPtr, sizeToTransfer, &sizeTransferred) : rtIOStreamRecv(streamID, ioPtr, sizeToTransfer, &sizeTransferred); if (status != RTIOSTREAM_NO_ERROR) { if (AckCode == stat_OK) { AckCode = stat_RTIOSTREAM_ERROR; AckArg0 = data_counter; } return; } else { sizeToTransfer -= sizeTransferred; ioPtr += sizeTransferred; } } }
Input Arguments
Output Arguments
Version History
Introduced in R2009a
See Also
rtIOStreamOpen
| rtIOStreamClose
| rtIOStreamRecv
| rtiostream_wrapper