The Serial Port Session
This example describes the steps you use to perform any serial port task from beginning to end.
The serial port object behaves according to the previously configured or default property values. Disconnect and clean up — When you no longer need the serial port object, remove it from the MATLAB ® workspace using the clear command. Creating an Array of Serial Port Objects. In MATLAB, you create an array from existing variables by concatenating those variables together. The same is true for serial port objects. For example, suppose you create the serial port objects s1 and s2 on a Windows platform. Serial communication is the most common low-level protocol for communicating between two or more devices. Normally, one device is a computer, while the other device can be a modem, a printer, Arduino ® hardware, another computer, or a scientific instrument such as an oscilloscope or a function generator. For many serial port applications, you can communicate with your instrument without. Fwrite(obj,A) writes the binary data A to the device connected to the serial port object, obj. Fwrite(obj,A,'precision') writes binary data with precision specified by precision. Precision controls the number of bits written for each value and the interpretation of those bits as integer, floating-point, or character values.
The serial port session comprises all the steps you are likely to take when communicating with a device connected to a serial port. These steps are:
Find your serial ports — Display a list of serial ports on your system using the
serialportlist
function.Connect to a serial port device — Connect to a device for a specific serial port using the
serialport
creation function.Configure properties during object creation if necessary. In particular, you might want to configure properties associated with serial port communications such as the baud rate, the number of data bits, and so on. Alter the necessary device settings by configuring property values, read data, and write data.
Configure properties — To establish the desired serial port object behavior, assign values to properties using dot notation.
In practice, you can configure many of the properties at any time including during, or just after, object creation. Conversely, depending on your device settings and the requirements of your serial port application, you might be able to accept the default property values and skip this step.
Write and read data — Write data to the device using the
writeline
orwrite
function, and read data from the device using thereadline
orread
function.The serial port object behaves according to the previously configured or default property values.
Disconnect and clean up — When you no longer need the serial port object, remove it from the MATLAB® workspace using the
clear
command.
This example illustrates how to communicate with a serial port instrument by writing and reading text data. The instrument is a Tektronix TDS 210 two-channel oscilloscope connected to the COM1 port. Therefore, many of the following commands are specific to this instrument. The serial port session is reinforced in many of the serial port documentation examples. To see a basic example that uses the steps shown above, see Example: Getting Started. Configuring and Returning Properties. This example describes how you display serial port property names and property values, and how you assign values to properties.
The serial port session is reinforced in many of the serial port documentation examples. To see a basic example that uses the steps shown above, see Query a Serial Port Device.
Tips
Matlab Serial Port Examples
Before you can write data to 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 write operation while obj
is not connected to the device.
The ValuesSent
property value is increased by the number of values written each time fwrite
is issued.
An error occurs if the output buffer cannot hold all the data to be written. You can specify the size of the output buffer with the OutputBufferSize
property.
If you set the FlowControl
property to hardware
on a serial object, and a hardware connection is not detected, fwrite
returns an error message. This occurs if a device is not connected, or a connected device is not asserting that is ready to receive data. Check the remote device status and flow control settings to see if hardware flow control is causing errors in MATLAB®.
Note
If you want to check to see if the device is asserting that it is ready to receive data, set the FlowControl
to none
. Once you connect to the device, check the PinStatus
structure for ClearToSend
. If ClearToSend
is off
, there is a problem on the remote device side. If ClearToSend
is on
, there is a hardware FlowControl
device prepared to receive data and you can execute fwrite
.
Synchronous Versus Asynchronous Write Operations
By default, data is written to the device synchronously and the command line is blocked until the operation completes. You can perform an asynchronous write by configuring the mode
input argument to be async
. For asynchronous writes:
The
BytesToOutput
property value is continuously updated to reflect the number of bytes in the output buffer.The callback function specified for the
OutputEmptyFcn
property is executed when the output buffer is empty.
You can determine whether an asynchronous write operation is in progress with the TransferStatus
property.
Synchronous and asynchronous write operations are discussed in more detail in Write and Read Data.
Rules for Completing a Write Operation with fwrite
Matlab Close All Serial Ports
A binary write operation using fwrite
completes when:
The specified data is written.
The time specified by the
Timeout
property passes.Note
The
Terminator
property is not used with binary write operations.
Supported Precisions
Matlab Serial Communication
The following table shows the supported values for precision
.
Matlab Write To Serial Port
Data Type | Precision | Interpretation |
---|---|---|
Character |
| 8-bit unsigned character |
| 8-bit signed character | |
| 8-bit signed or unsigned character | |
Integer |
| 8-bit integer |
| 16-bit integer | |
| 32-bit integer | |
| 8-bit unsigned integer | |
| 16-bit unsigned integer | |
| 32-bit unsigned integer | |
| 16-bit integer | |
| 32-bit integer | |
| 32- or 64-bit integer | |
| 16-bit unsigned integer | |
| 32-bit unsigned integer | |
| 32- or 64-bit unsigned integer | |
Floating-point |
| 32-bit floating point |
| 32-bit floating point | |
| 32-bit floating point | |
| 64-bit floating point | |
| 64-bit floating point |