Операция записи с использованием write
или writeline
завершает, когда одно из следующих условий удовлетворено:
Указанные данные записываются.
Время, заданное как Timeout
проходит свойство.
Текстовая команда обрабатывается инструментом только тогда, когда она получает необходимый терминатора строки. Для объектов последовательного порта каждое вхождение \n
в команде ASCII заменяется на Terminator
значение свойства. Значение по умолчанию Terminator
является линия символом канала. Обратитесь к документации для вашего прибора, чтобы определить терминаторов строки, требуемые вашим прибором.
Операция чтения с read
или readline
завершает, когда одно из следующих условий удовлетворено:
Считалось указанное количество значений.
Время, заданное как 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
значение состоит из двух байтов. Поэтому следующая команда записывает 1000 байт.
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