Matlab Serial Port Example
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. S = serialport, without arguments, connects to the serial port using the property settings of your last cleared serialport object instance. The retained properties are Port, BaudRate, ByteOrder, FlowControl, StopBits, DataBits, Parity, Timeout, and Terminator.
Controlling Access to the MATLAB Command Line
You control access to the MATLAB command line by specifying whether a read or write operation is synchronous or asynchronous.
A synchronous operation blocks access to the command line until the read or write function completes execution. An asynchronous operation does not block access to the command line, and you can issue additional commands while the read or write function executes in the background.
The terms synchronous and asynchronous are often used to describe how the serial port operates at the hardware level. The RS-232 standard supports an asynchronous communication protocol. Using this protocol, each device uses its own internal clock. The data transmission is synchronized using the start bit of the bytes, while one or more stop bits indicate the end of the byte. For more information on start bits and stop bits, see Serial Data Format. The RS-232 standard also supports a synchronous mode where all transmitted bits are synchronized to a common clock signal.
At the hardware level, most serial ports operate asynchronously. However, using the default behavior for many of the read and write functions, you can mimic the operation of a synchronous serial port.
Note
When used in this guide, the terms synchronous and asynchronous refer to whether read or write operations block access to the MATLAB command-line. In other words, these terms describe how the software behaves, and not how the hardware behaves.
The two main advantages of writing or reading data asynchronously are:
You can issue another command while the write or read function is executing.
You can use all supported callback properties (see Events and Callbacks).
For example, because serial ports have separate read and write pins, you can simultaneously read and write data. This is illustrated in the following diagram.
'port'
— Serial port name
character vectorstring
Serial port name, specified as a character vector or string. The seriallist
function provides a list of available serial ports. You must specify the port to create a serial port object.
The port name depends on the platform that the serial port is on. This list is an example of serial constructors on different platforms:
Platform | Serial Port Constructor |
---|---|
Linux® 64 | s = serial('/dev/ttyS0') |
macOS 64 | s = serial('/dev/tty.KeySerial1') |
Windows® 64 | s = serial('COM1') |
Example: s = serial('COM1')
Data Types: char
string
Name-Value Pair Arguments
Specify optional comma-separated pairs of Name,Value
arguments. Name
is the argument name and Value
is the corresponding value. Name
must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,.,NameN,ValueN
.
s = serial('COM2','BaudRate',1200,'DataBits',7);
For a list of serial port object properties that you can use with serial
, refer to Property Reference.
Note
Port must be the first argument used to create the serial object. You can then follow port with any number of supported name-value pairs.
'BaudRate'
— Rate at which bits are transmitted
9600 (default) double
Rate at which bits are transmitted, specified as the comma-separated pair consisting of 'BaudRate'
and a double. You configure baud rate as bits per second. The transferred bits include the start bit, the data bits, the parity bit (if used), and the stop bits. However, only the data bits are stored.
The baud rate is the rate at which information is transferred in a communication channel. In the serial port context, 9600 baud means that the serial port is capable of transferring a maximum of 9600 bits per second. If the information unit is one baud (one bit), the bit rate and the baud rate are identical. If one baud is given as 10 bits, (for example, eight data bits plus two framing bits), the bit rate is still 9600 but the baud rate is 9600/10, or 960. You always configure BaudRate
as bits per second.
Note
Both the computer and the peripheral device must be configured to the same baud rate before you can successfully read or write data.
Standard baud rates include 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000, and 256000 bits per second.
You can also set the BaudRate
property after creating the serial object using this syntax:
Example: s = serial('COM1','BaudRate',4800);
Data Types: double
'ByteOrder'
— Byte order of the device
littleEndian (default) bigEndian
Byte order of the device, specified as the comma-separated pair consisting of 'ByteOrder'
and littleEndian
or bigEndian
. If ByteOrder
is littleEndian
, the device stores the first byte in the first memory address. If ByteOrder
is bigEndian
, the device stores the last byte in the first memory address.
For example, suppose the hexadecimal value 4F52 is to be stored in device memory. Because this value consists of two bytes, 4F and 52, two memory locations are used. Using big-endian format, 4F is stored first in the lower storage address. Using little-endian format, 52 is stored first in the lower storage address.
The byte order of littleEndian
is the default and is used in read and write operations if you do not specify the property. You need to specify the property only to change the byte order to bigEndian
.
You can also set the ByteOrder
property after creating the serial object using this syntax:
Note
Configure ByteOrder
to the appropriate value for your device before performing a read or write operation. Refer to your device documentation for information about the order in which it stores bytes.
Example: s = serial('COM1','ByteOrder','bigEndian');
Data Types: char
string
'DataBits'
— Number of data bits to transmit
8 (default) 567
Number of data bits to transmit, specified as the comma-separated pair consisting of 'DataBits'
and 5
, 6
, 7
, or 8
, which is the default. Data is transmitted as a series of five, six, seven, or eight bits with the least significant bit sent first. At least seven data bits are required to transmit ASCII characters. Eight bits are required to transmit binary data. Five-bit and six-bit data formats are used for specialized communications equipment.
Note
Both the computer and the peripheral device must be configured to transmit the same number of data bits. Apple mac address book download.
In addition to the data bits, the serial data format consists of a start bit, one or two stop bits, and possibly a parity bit. You specify the number of stop bits with the StopBits
property, and the type of parity checking with the Parity
property.
You can also set the DataBits
property after creating the serial object using this syntax:
Example: s = serial('COM1','DataBits',7);
Data Types: double
'Parity'
— Type of parity checking
none (default) oddevenmarkspace
Type of parity checking, specified as the comma-separated pair consisting of 'Parity'
and none
, odd
, even
, mark
, or space
.
| Default. No parity checking. Parity checking is not performed and the parity bit is not transmitted. |
| Odd parity checking. The number of mark bits (1s) in the data is counted, and the parity bit is asserted or unasserted to obtain an odd number of mark bits. |
| Even parity checking. /conflict-vietnam-game.html. The number of mark bits in the data is counted, and the parity bit is asserted or unasserted to obtain an even number of mark bits. |
| Mark parity checking. The parity bit is asserted. |
| Space parity checking. The parity bit is unasserted. |
Parity checking can detect errors of one bit only. An error in two bits might cause the data to have a seemingly valid parity, when in fact it is incorrect.
In addition to the parity bit, the serial data format consists of a start bit, between five and eight data bits, and one or two stop bits. You specify the number of data bits with the DataBits
property, and the number of stop bits with the StopBits
property.
You can also set the Parity
property after creating the serial object using this syntax:
Example: s = serial('COM1','Parity','even');
Data Types: char
string
'StopBits'
— Number of bits used to indicate the end of a byte
1 (default) 1.52
Number of bits used to indicate the end of a byte, specified as the comma-separated pair consisting of 'StopBits'
and 1
, 1.5
, or 2
. If StopBits
is 1
, one stop bit is used to indicate the end of data transmission. If StopBits
is 2
, two stop bits are used to indicate the end of data transmission. If StopBits
is 1.5
, the stop bit is transferred for 150% of the normal time used to transfer one bit.
Note
Both the computer and the peripheral device must be configured to transmit the same number of stop bits.
Summary of the possible values:
| Default. One stop bit is transmitted to indicate the end of a byte. |
| The stop bit is transferred for 150% of the normal time used to transfer one bit. Autocad 2012 xforce keygen 64 bit download. |
| Two stop bits are transmitted to indicate the end of a byte. |
In addition to the stop bits, the serial data format consists of a start bit, between five and eight data bits, and possibly a parity bit. You specify the number of data bits with the DataBits
property, and the type of parity checking with the Parity
property.
You can also set the StopBits
property after creating the serial object using this syntax:
Matlab Serial Port Read Example
Example: s = serial('COM1','StopBits',2);
Data Types: double
Terminator character, specified as the comma-separated pair consisting of 'Terminator'
and a string. You can configure Terminator
to an integer value ranging from 0 to 127, which represents the ASCII code for the character, or you can configure Terminator
to the ASCII character. For example, to configure Terminator
to a carriage return, specify the value to be CR
or 13
. To configure Terminator
to a linefeed, specify the value to be LF
or 10
. You can also set Terminator
to CR/LF
or LF/CR
. If Terminator
is CR/LF
, the terminator is a carriage return followed by a line feed. If Terminator is LF/CR
, the terminator is a linefeed followed by a carriage return. Note that there are no integer equivalents for these two values.
Additionally, you can set Terminator
to a 1-by-2 cell array. The first element of the cell is the read terminator and the second element of the cell array is the write terminator.
When performing a write operation using the fprintf
function, all occurrences of n
are replaced with the Terminator
property value. Note that %sn
is the default format for fprintf
. A read operation with fgetl
, fgets
, or fscanf
completes when the Terminator
value is read. The terminator is ignored for binary operations.
You can also use the terminator to generate a bytes-available event when the BytesAvailableFcnMode
is set to terminator
.
You can also set the Terminator
property after creating the serial object, using this syntax:
Example: s = serial('COM1','Terminator','CR');
Matlab Gui Serial Port Example
Data Types: char
string