(Не рекомендуемый) Считанные данные асинхронно из устройства
Этот serial
объектная функция не рекомендуется. Используйте serialport
возразите функциям вместо этого. См. Вопросы совместимости.
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
и постоянно возвращайте данные во входной буфер, как только это доступно от устройства.