Операция записи с помощью write
, writeline
, или writebinblock
завершается, когда одному из этих условий удовлетворяют:
Заданные данные записаны.
Время задано Timeout
передачи свойства.
Текстовая команда обрабатывается инструментом только, когда это получает необходимый терминатор строки. Для объектов последовательного порта, каждого вхождения \n
в ASCII команда заменяется Terminator
значение свойства. Значение по умолчанию Terminator
символ перевода строки. Обратитесь к документации для своего инструмента, чтобы определить терминатор строки, требуемый вашим инструментом.
Операция чтения с read
, readline
, или readbinblock
завершается, когда одному из этих условий удовлетворяют:
Конкретное количество значений читается.
Время задано Timeout
передачи свойства.
Терминатор строки задан Terminator
свойство читается.
Этот пример иллюстрирует, как связаться с инструментом последовательного порта путем записи и чтения текстовых данных.
Инструментом является Tektronix® TDS 210 двухканальный осциллограф, соединенный с последовательным портом COM1. Поэтому многие команды в примере характерны для этого инструмента. Синусоида вводится в канал 2 из осциллографа, и вы хотите измерить напряжение от пика к пику входного сигнала.
Эти функции и свойства используются при чтении и записи текста.
Функция | Цель |
---|---|
readline | Считайте текстовые данные из инструмента. |
writeline | Запишите текстовые данные в инструмент. |
Терминатор | Символ раньше отключал команды, отправленные в инструмент. |
Этим примером является конкретный Windows®.
Создайте объект последовательного порта — Создают объект последовательного порта s
сопоставленный с последовательным портом COM1.
s = serialport("COM1",9600);
Запишите и считайте данные — Запись *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"
Разъединитесь и вымойтесь — Очищают объект последовательного порта s
из рабочей области MATLAB®, когда вы сделаны, работая с ним.
clear s
Этот пример исследует бинарные операции чтения и операции записи с объектом последовательного порта. Используемый инструмент является осциллографом Tektronix® TDS 210.
Эти функции используются при чтении и записи двоичных данных.
Необходимо создать последовательный объект. В этом примере создайте объект последовательного порта, сопоставленный с портом COM1.
s = serialport("COM1",9600);
Вы используете write
функционируйте, чтобы записать двоичные данные в инструмент. Бинарная операция записи завершается, когда одному из этих условий удовлетворяют:
Все данные записаны.
Тайм-аут происходит, как задано Timeout
свойство.
Когда вы выполняете операцию записи, думаете о передаваемых данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32
значение состоит из четырех байтов.
Запишите форму волны как 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
значение состоит из четырех байтов.
Считайте ту же форму волны на канале 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