readasync

Считайте данные асинхронно из устройства

Синтаксис

readasync(obj)
readasync(obj,size)

Описание

readasync(obj) инициирует асинхронную операцию чтения на объекте последовательного порта, obj.

readasync(obj,size) асинхронно чтения, самое большее, количество байтов, данных size. Если size больше, чем различие между значением свойства InputBufferSize и значением свойства BytesAvailable, ошибка возвращена.

Примеры

Этот пример создает объект последовательного порта s на платформе Windows®. Это соединяет s с осциллографом Tektronix® TDS 210, конфигурирует s, чтобы считать данные асинхронно, только если readasync выпущен и конфигурирует инструмент, чтобы возвратить пик к пиковому значению сигнала на канале 1.

s = serial('COM1');
fopen(s)
s.ReadAsyncMode = 'manual';
fprintf(s,'Measurement:Meas1:Source CH1')
fprintf(s,'Measurement:Meas1:Type Pk2Pk')
fprintf(s,'Measurement:Meas1:Value?')

Начните считывать данные асинхронно из инструмента с помощью readasync. Когда операция чтения будет завершена, возвратите данные в рабочую область MATLAB® с помощью fscanf.

readasync(s)
s.BytesAvailable
ans =
     15
out = fscanf(s)
out =
2.0399999619E0
fclose(s)

Советы

Прежде чем можно будет считать данные, необходимо соединить obj с устройством с функцией fopen. Связанный объект последовательного порта имеет значение свойства Status open. Ошибка возвращена, при попытке выполнить операцию чтения, в то время как obj не соединяется с устройством.

Только используйте readasync, чтобы сконфигурировать свойство ReadAsyncMode к manual. readasync проигнорирован, если используется, когда ReadAsyncMode является continuous.

Свойство TransferStatus указывает, происходят ли асинхронная операция чтения или операция записи. Можно записать данные, в то время как асинхронное чтение происходит, потому что последовательные порты имеют отдельное чтение и контакты записи. Можно остановить асинхронные операции чтения и операции записи с функцией stopasync.

Можно контролировать объем данных, сохраненный во входном буфере свойством BytesAvailable. Кроме того, можно использовать свойство BytesAvailableFcn выполнить функцию обратного вызова, когда терминатор строки или заданный объем данных читаются.

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

Асинхронная операция чтения с readasync завершается, когда одно из этих условий соблюдают:

  • Считался терминатор строки, заданный как свойство Terminator.

  • Прошло время, заданное как свойство Timeout.

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

  • Входной буфер заполнен (если size не задан).

Поскольку проверки readasync на терминатор строки, эта функция может быть медленной. Чтобы увеличить скорость, вы можете хотеть сконфигурировать ReadAsyncMode к continuous и постоянно возвращать данные во входной буфер, как только это доступно от устройства.

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте