(Будет удален) Считывать данные асинхронно с устройства
Этот serial
функция object будет удалена в следующем релизе. Использовать serialport
вместо этого функции объекта. См. Вопросы совместимости.
readasync(obj)
readasync(obj,size)
readasync(obj)
инициирует операцию асинхронного чтения для объекта последовательного порта, obj
.
readasync(obj,size)
асинхронно считывает самое большее количество байтов, заданных size
. Если size
больше, чем различие между InputBufferSize
значение свойства и BytesAvailable
значение свойства, возвращается ошибка.
Этот пример создает объект последовательного порта s
в окнах® платформы. Соединяет 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
. Когда операция read будет завершена, верните данные в 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
.
The TransferStatus
свойство указывает, выполняется ли асинхронная операция чтения или записи. Можно записать данные во время прогресса асинхронного чтения, поскольку последовательные порты имеют отдельные контакты чтения и записи. Можно остановить асинхронные операции чтения и записи с помощью stopasync
функция.
Можно контролировать объем данных, хранящихся в входе буфере, с помощью BytesAvailable
свойство. Кроме того, можно использовать BytesAvailableFcn
свойство для выполнения функции обратного вызова при считывании терминатора строки или заданного объема данных.
Операция асинхронного чтения с readasync
завершается при выполнении одного из следующих условий:
Терминатор строки, заданный как Terminator
свойство считывается.
Время, заданное как Timeout
проходит свойство.
Считалось указанное количество байтов.
Буфер входа заполняется (если size
не задан).
Поскольку readasync
проверяет на терминатора строки, эта функция может быть медленной. Чтобы увеличить скорость, вы, возможно, захотите сконфигурировать ReadAsyncMode
на continuous
и непрерывно возвращают данные во входной буфер, как только они доступны с устройства.