fscanf (serial)
(To be removed) Read ASCII data from device, and format as text
This serial object function will be removed in a future release. Use
serialport
object functions instead. For more information on updating your code, see Version History.
Syntax
A = fscanf(obj)
A = fscanf(obj,'format')
A = fscanf(obj,'format',size)
[A,count] = fscanf(...)
[A,count,msg] = fscanf(...)
Description
A = fscanf(obj) reads ASCII data from the
device connected to the serial port object, obj, and returns it to
A. The data is converted to text using the %c
format. For binary data, use fread.
A = fscanf(obj,'
reads data and converts it according to format')format.
format is a C language conversion specification.
Conversion specifications involve the % character and the conversion
characters d, i, o, u, x, X, f, e, E, g, G, c, and s. Refer to the
sscanf file I/O format specifications or a C manual for more
information.
A = fscanf(obj,'
reads the number of values specified by format',size)size. Valid options for
size are:
| Read at most |
| Read at most m-by-n values filling an m–by–n matrix in column order. |
size cannot be inf, and an error is returned if
the specified number of values cannot be stored in the input buffer. If
size is not of the form [m,n], and a character
conversion is specified, then A is returned as a row vector. You
specify the size, in bytes, of the input buffer with the
InputBufferSize property. An ASCII value is one byte.
[A,count] = fscanf(...) returns the number of
values read to count.
[A,count,msg] = fscanf(...) returns a warning
message to msg if the read operation did not complete
successfully.
Examples
Create the serial port object s and connect s to
a Tektronix® TDS 210 oscilloscope, which is displaying sine wave. This example works on
a Windows® platform.
s = serial('COM1');
fopen(s)
Use the fprintf function to configure the scope to measure the
peak-to-peak voltage of the sine wave, return the measurement type, and return the
peak-to-peak voltage.
fprintf(s,'MEASUREMENT:IMMED:TYPE PK2PK') fprintf(s,'MEASUREMENT:IMMED:TYPE?') fprintf(s,'MEASUREMENT:IMMED:VALUE?')
Because the default value for the ReadAsyncMode property is
continuous, data associated with the two query commands is
automatically returned to the input buffer.
s.BytesAvailable
ans =
21
Use fscanf to read the measurement type. The operation will
complete when the first terminator is read.
meas = fscanf(s)
meas = PK2PK
Use fscanf to read the peak-to-peak voltage as a floating-point
number, and exclude the terminator.
pk2pk = fscanf(s,'%e',14)
pk2pk =
2.0200
Disconnect s from the scope, and remove s from
memory and the workspace.
fclose(s) delete(s) clear s
Tips
Before you can read data from the device, it must be connected to
obj with the fopen function. A connected
serial port object has a Status property value of
open. An error is returned if you attempt to perform a read
operation while obj is not connected to the device.
If msg is not included as an output argument and the read operation
was not successful, then a warning message is returned to the command line.
The ValuesReceived property value is increased by the number of
values read – including the terminator – each time fscanf is
issued.
Rules for Completing a Read Operation with fscanf
A read operation with fscanf blocks access to the MATLAB® command line until:
The terminator specified by the
Terminatorproperty is read.The time specified by the
Timeoutproperty passes.The number of values specified by
sizeis read.The input buffer is filled (unless
sizeis specified)