Specify the callback function to execute when a specified number of bytes is available in the input buffer, or a terminator is read
BytesAvailableFcn to execute
a callback function when a bytes-available event occurs. A bytes-available
event occurs when the number of bytes specified by the
is available in the input buffer, or after a terminator is read, as
determined by the
A bytes-available event can be generated only for asynchronous read operations.
RecordStatus property value is
and a bytes-available event occurs, the record file records this information:
The event type as
The time the event occurred using the format day-month-year hour:minute:second:millisecond
You cannot use ASCII values larger than 127 characters. The function is limited to 127 binary characters.
To learn how to create a callback function, see Create and Execute Callback Functions.
The default value is an empty string.
Create the serial port object
s for a Tektronix® TDS
210 two-channel oscilloscope connected to the serial port COM1.
s = serial('COM1');
s to execute the callback function
40 bytes are available in the input buffer.
s.BytesAvailableFcnCount = 40; s.BytesAvailableFcnMode = 'byte'; s.BytesAvailableFcn = @instrcallback;
s to the oscilloscope.
*IDN? command, which instructs
the scope to return identification information. Because the default
value for the
ReadAsyncMode property is
data is read as soon as it is available from the instrument.
BytesAvailable event occurred at 18:33:35 for the object: Serial-COM1.
56 bytes are read and
instrcallback is called
once. The resulting display is shown above.
s.BytesAvailable ans = 56
Suppose you remove 25 bytes from the input buffer and then issue
MEASUREMENT? command, which instructs the scope
to return its measurement settings.
out = fscanf(s,'%c',25); fprintf(s,'MEASUREMENT?')
BytesAvailable event occurred at 18:33:48 for the object: Serial-COM1. BytesAvailable event occurred at 18:33:48 for the object: Serial-COM1.
There are now 102 bytes in the input buffer, 31 of which are
left over from the
called twice—once when 40 bytes are available and once when
80 bytes are available.
s.BytesAvailable ans = 102