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

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

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

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