Начало работы с последовательным вводом-выводом

Пример: Начало работы

Этот пример иллюстрирует некоторые основные команды последовательного порта.

Примечание

Этот пример показывают на платформе Windows®.

Если вам соединили устройство с последовательным портом, COM1 и сконфигурированный для скорости в бодах 4 800, выполняют следующий пример.

s = serial('COM1');
set(s,'BaudRate',4800);
fopen(s);
fprintf(s,'*IDN?')
out = fscanf(s);
fclose(s)
delete(s)
clear s

Команда *IDN? запрашивает устройство для идентификационной информации, которая возвращена в out. Если ваше устройство не поддерживает эту команду, или если это соединяется с различным последовательным портом, измените предыдущий пример соответственно.

Примечание

*IDN? является одной из команд, поддержанных Стандартными Командами для Программируемых Инструментов (SCPI) язык, который используется многими современными устройствами. Обратитесь к своей документации устройства, чтобы видеть, поддерживает ли она язык SCPI.

Сеанс последовательного порта

Этот пример описывает шаги, которые вы используете, чтобы выполнить любую задачу последовательного порта с начала до конца.

session последовательного порта включает все шаги, которые вы, вероятно, сделаете при передаче с устройством, соединенным к последовательному порту. Эти шаги:

  1. Найдите свои последовательные порты — Отображение список последовательных портов в вашей системе с помощью функции seriallist.

  2. Создайте объект последовательного порта — Создают объект последовательного порта для определенного последовательного порта с помощью функции создания serial.

    Сконфигурируйте свойства во время создания объекта при необходимости. В частности, вы можете хотеть сконфигурировать свойства, сопоставленные с коммуникациями последовательного порта, такими как скорость в бодах, количество битов данных, и так далее.

  3. Соединитесь с устройством — Подключение объект последовательного порта к устройству с помощью функции fopen.

    После того, как объект соединяется, измените необходимые настройки устройства путем конфигурирования значений свойств, считайте данные и запишите данные.

  4. Сконфигурируйте свойства — Чтобы установить желаемое поведение объекта последовательного порта, значения присвоения к свойствам с помощью функции set или записи через точку.

    На практике можно сконфигурировать многие свойства в любое время включая во время, или сразу после, создание объекта. С другой стороны, в зависимости от ваших настроек устройства и требований вашего приложения последовательного порта, вы можете смочь принять значения свойств по умолчанию и пропустить этот шаг.

  5. Запишите и считайте данные — Записывают данные к устройству с помощью fprintf или функции fwrite, и считывают данные из устройства с помощью fgetl, fgets, fread, fscanf или функции readasync.

    Объект последовательного порта ведет себя согласно ранее сконфигурированным или значениям свойств по умолчанию.

  6. Разъединитесь и вымойтесь — Когда вы больше не будете нуждаться в объекте последовательного порта, будете отключать его от устройства с помощью функции fclose, удалять его из памяти с помощью функции delete и удалять его из рабочей области MATLAB® с помощью команды clear.

Сеанс последовательного порта укреплен во многих примерах документации последовательного порта. Чтобы видеть основной пример, который использует шаги, показанные выше, смотрите Пример: Начало работы.

Configuring and Returning Properties

Этот пример описывает, как вы отображаете имена свойства последовательного порта и значения свойств, и как вы присваиваете значения свойствам.

Вы устанавливаете желаемое поведение объекта последовательного порта путем конфигурирования значений свойств. Можно отобразить или сконфигурировать значения свойств с помощью функции set, функции get или записи через точку.

Отображение имен свойства и значений свойств

После того, как вы создадите объект последовательного порта, используйте функцию set, чтобы отобразить все конфигурируемые свойства к командной строке. Кроме того, если свойство имеет конечное множество значений строки, set также отображает эти значения.

s = serial('COM1');
set(s)
    ByteOrder: [ {littleEndian} | bigEndian ] 
    BytesAvailableFcn
    BytesAvailableFcnCount
    BytesAvailableFcnMode: [ {terminator} | byte ]
    ErrorFcn
    InputBufferSize
    Name
    OutputBufferSize
    OutputEmptyFcn
    RecordDetail: [ {compact} | verbose ]
    RecordMode: [ {overwrite} | append | index ]
    RecordName
    Tag
    Timeout
    TimerFcn
    TimerPeriod
    UserData

    SERIAL specific properties:
    BaudRate
    BreakInterruptFcn
    DataBits
    DataTerminalReady: [ {on} | off ]
    FlowControl: [ {none} | hardware | software ]
    Parity: [ {none} | odd | even | mark | space ]
    PinStatusFcn
    Port
    ReadAsyncMode: [ {continuous} | manual ]
    RequestToSend: [ {on} | off ]
    StopBits
    Terminator

Используйте функцию get, чтобы отобразить одно или несколько свойств и их текущие значения к командной строке. Отобразить все свойства и их текущие значения:

get(s)
    ByteOrder = littleEndian
    BytesAvailable = 0
    BytesAvailableFcn = 
    BytesAvailableFcnCount = 48
    BytesAvailableFcnMode = terminator
    BytesToOutput = 0
    ErrorFcn = 
    InputBufferSize = 512
    Name = Serial-COM1
    OutputBufferSize = 512
    OutputEmptyFcn = 
    RecordDetail = compact
    RecordMode = overwrite
    RecordName = record.txt
    RecordStatus = off
    Status = closed
    Tag = 
    Timeout = 10
    TimerFcn = 
    TimerPeriod = 1
    TransferStatus = idle
    Type = serial
    UserData = []
    ValuesReceived = 0
    ValuesSent = 0

    SERIAL specific properties:
    BaudRate = 9600
    BreakInterruptFcn = 
    DataBits = 8
    DataTerminalReady = on
    FlowControl = none
    Parity = none
    PinStatus = [1x1 struct]
    PinStatusFcn = 
    Port = COM1
    ReadAsyncMode = continuous
    RequestToSend = on
    StopBits = 1
    Terminator = LF

Чтобы отобразить текущее значение для одного свойства, предоставьте имя свойства к get.

get(s,'OutputBufferSize')
ans =
   512

Чтобы отобразить текущие значения для нескольких свойств, включайте имена свойства как элементы массива ячеек.

get(s,{'Parity','TransferStatus'})
ans = 
    'none'    'idle'

Используйте запись через точку, чтобы отобразить одно значение свойства.

s.Parity
ans =
none

Конфигурирование значений свойств

Можно сконфигурировать значения свойств с помощью функции set:

set(s,'BaudRate',4800);

или запись через точку:

s.BaudRate = 4800;

Чтобы сконфигурировать значения для нескольких свойств, предоставьте несколько имя свойства / пары значения свойства к set.

set(s,'DataBits',7,'Name','Test1-serial')

Обратите внимание на то, что можно сконфигурировать только одно значение свойства во время с помощью записи через точку.

На практике можно сконфигурировать многие свойства в любое время, в то время как объект последовательного порта существует — включая во время создания объекта. Однако некоторые свойства не конфигурируемы, в то время как объект соединяется с устройством или при записи информации к диску. Для получения информации о том, когда свойство конфигурируемо, см. Описание свойства.

Определение имен свойства

Имена свойства последовательного порта представлены с помощью смешанного случая. В то время как это делает имена свойства легче читать, используйте любой случай, который вы хотите при определении имен свойства. Например, чтобы сконфигурировать свойство BaudRate:

s.BaudRate = 4800;
s.baudrate = 4800;

Значения свойств по умолчанию

Каждый раз, когда вы явным образом не задаете значение для свойства, значение по умолчанию используется. Все конфигурируемые свойства имеют значения по умолчанию.

Примечание

Ваша операционная система обеспечивает значения по умолчанию для всех настроек последовательного порта, таких как скорость в бодах. Однако эти настройки заменены вашим кодом MATLAB и не имеют никакого эффекта на ваше приложение последовательного порта.

Если свойство имеет конечное множество значений строки, значение по умолчанию заключено {}. Например, значением по умолчанию для свойства Parity является none.

set(s,'Parity')
[ {none} | odd | even | mark | space ]

Можно найти значение по умолчанию для любого свойства на страницах с описанием свойства.