exponenta event banner

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

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

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

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

  • Указанные данные записываются.

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

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

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

Операция чтения с read, readline, или readbinblock выполняется при выполнении одного из следующих условий:

  • Считывается указанное число значений.

  • Время, указанное 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 значение состоит из двух байт. Поэтому следующая команда записывает 1000 байт.

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