Запишите и считанные данные о последовательном порте

Правила для завершения записи и операций чтения

Завершение операций записи

Операция записи с помощью write или writeline завершается, когда одному из этих условий удовлетворяют:

  • Заданные данные записаны.

  • Время задано Timeout передачи свойства.

Текстовая команда обрабатывается инструментом только, когда это получает необходимый терминатор строки. Для объектов последовательного порта, каждого вхождения \n в ASCII команда заменяется Terminator значение свойства. Значение по умолчанию Terminator символ перевода строки. Обратитесь к документации для своего инструмента, чтобы определить терминатор строки, требуемый вашим инструментом.

Завершение операций чтения

Операция чтения с read или readline завершается, когда одному из этих условий удовлетворяют:

  • Конкретное количество значений читается.

  • Время задано Timeout передачи свойства.

  • Терминатор строки задан Terminator свойство читается.

Запись и чтение текстовых данных

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

Инструментом является Tektronix® TDS 210 двухканальный осциллограф, соединенный с последовательным портом COM1. Поэтому многие команды в примере характерны для этого инструмента. Синусоида вводится в канал 2 из осциллографа, и вы хотите измерить напряжение от пика к пику входного сигнала.

Эти функции и свойства используются при чтении и записи текста.

ФункцияЦель
readlineСчитайте текстовые данные из инструмента.
writelineЗапишите текстовые данные в инструмент.
ТерминаторСимвол раньше отключал команды, отправленные в инструмент.

Примечание

Этим примером является конкретный Windows®.

  1. Создайте объект последовательного порта — Создают объект последовательного порта s сопоставленный с последовательным портом COM1.

    s = serialport("COM1",9600);
  2. Запишите и считайте данные — Запись *IDN? команда к инструментальному использованию writeline, и затем считайте назад результат использования команды readline.

    writeline(s,"*IDN?")
    s.NumBytesAvailable
    
    ans =
    
         56
    idn = readline(s)
    
    idn =
    
         "TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04"

    Необходимо определить источник измерения. Возможные источники измерения включают канал 1 и канал 2 из осциллографа.

    writeline(s,"MEASUREMENT:IMMED:SOURCE?")
    source = readline(s)
    source =
    
         "CH1"

    Осциллограф сконфигурирован, чтобы возвратить измерение в канал 1. Поскольку входной сигнал соединяется с каналом 2, необходимо сконфигурировать инструмент, чтобы возвратить измерение в этот канал.

    writeline(s,"MEASUREMENT:IMMED:SOURCE CH2")
    writeline(s,"MEASUREMENT:IMMED:SOURCE?")
    source = readline(s)
    
    source =
    
         "CH2"

    Можно теперь сконфигурировать осциллограф, чтобы возвратить напряжение от пика к пику, и затем запросить значение этого измерения.

    writeline(s,"MEASUREMENT:MEAS1:TYPE PK2PK")
    writeline(s,"MEASUREMENT:MEAS1:VALUE?")

    Считайте назад результат с помощью readline функция.

    ptop = readline(s)
    ptop =
    
         "2.0199999809E0"
  3. Разъединитесь и вымойтесь — Очищают объект последовательного порта s из рабочей области MATLAB®, когда вы закончите работающей с ним.

    clear s

Запись и чтение двоичных данных

Этот пример исследует бинарные операции чтения и операции записи с объектом последовательного порта. Используемый инструмент является осциллографом Tektronix® TDS 210.

Функции и свойства

Эти функции используются при чтении и записи двоичных данных.

ФункцияЦель
readСчитайте двоичные данные из инструмента.
writeЗапишите двоичные данные в инструмент.

Сконфигурируйте и соединитесь с последовательным объектом

Необходимо создать последовательный объект. В этом примере создайте объект последовательного порта, сопоставленный с портом COM1.

s = serialport("COM1",9600);

Запишите двоичные данные

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

  • Все данные записаны.

  • Тайм-аут происходит, как задано Timeout свойство.

Примечание

Когда вы выполняете операцию записи, думаете о передаваемых данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32 значение состоит из четырех байтов.

Запись двоичные данные Int16

Запишите форму волны как int16 массив.

write(s,"Data:Destination RefB","string");
write(s,"Data:Encdg SRPbinary","string");
write(s,"Data:Width 2","string");
write(s,"Data:Start 1","string");
t = (0:499) .* 8 * pi / 500;
data = round(sin(t) * 90 + 127);
write(s,"CURVE #3500","string");

Обратите внимание на то, что один int16 значение состоит из двух байтов. Поэтому следующая команда пишет 1 000 байтов.

write(s,data,"int16")

Чтение двоичных данных

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

  • Тайм-аут происходит, как задано Timeout свойство.

  • Конкретное количество значений читается.

Примечание

Когда вы выполняете операцию чтения, думаете о полученных данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32 значение состоит из четырех байтов.

Чтение int16 Двоичные данные

Считайте ту же форму волны на канале 1 как int16 массив.

read(s,"Data:Source CH1","string");
read(s,"Data:Encdg SRPbinary","string");
read(s,"Data:Width 2","string");
read(s,"Data:Start 1","string");
read(s,"Data:Stop 2500","string");
read(s,"Curve?","string")

Обратите внимание на то, что один int16 значение состоит из двух байтов. Поэтому следующая команда читает 512 байтов.

data = read(s,256,"int16");

Разъединение и очистка

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

clear s