Считайте данные о ASCII из устройства и отформатируйте как текст
A = fscanf(obj)
A = fscanf(obj,'format
')
A = fscanf(obj,'format
',size)
[A,count] = fscanf(...)
[A,count,msg] = fscanf(...)
A = fscanf(obj)
считывает данные о ASCII из устройства, соединенного к объекту последовательного порта, obj
, и возвращает его в A
. Данные преобразованы в текст с помощью формата %c
. Для двоичных данных используйте fread
.
A = fscanf(obj,'
считывает данные и преобразовывает его согласно format
')format
. format
является спецификацией преобразования языка C. Спецификации преобразования включают символ %
и символы преобразования d, i, o, u, x, X, f, e, E, g, G, c, и s. Обратитесь к спецификациям формата файлового ввода-вывода sscanf
или руководству C для получения дополнительной информации.
A = fscanf(obj,'
читает количество значений, заданных format
',size)size
. Допустимые опции для size
:
| Читайте в большинстве значений |
| Читайте в большинстве значений m на n, заполняющих матрицу m на n в порядке следования столбцов. |
size
не может быть inf
, и ошибка возвращена, если конкретное количество значений не может храниться во входном буфере. Если size
не имеет формы [m,n]
, и преобразование символов задано, то A
возвращен как вектор - строка. Вы задаете размер, в байтах, входного буфера со свойством InputBufferSize
. Значение ASCII составляет один байт.
[A,count] = fscanf(...)
возвращает количество чтения значений к count
.
[A,count,msg] = fscanf(...)
возвращает предупреждающее сообщение в msg
, если операция чтения не завершалась успешно.
Создайте объект последовательного порта s
и соедините s
с осциллографом Tektronix® TDS 210, который отображает синусоиду. Этот пример работает над платформой Windows®.
s = serial('COM1');
fopen(s)
Используйте функцию fprintf
, чтобы сконфигурировать осциллограф, чтобы измерить напряжение от пика к пику синусоиды, возвратить тип измерения и возвратить напряжение от пика к пику.
fprintf(s,'MEASUREMENT:IMMED:TYPE PK2PK') fprintf(s,'MEASUREMENT:IMMED:TYPE?') fprintf(s,'MEASUREMENT:IMMED:VALUE?')
Поскольку значением по умолчанию для свойства ReadAsyncMode
является continuous
, данные, сопоставленные с этими двумя командами запроса, автоматически возвращены во входной буфер.
s.BytesAvailable
ans = 21
Используйте fscanf
, чтобы считать тип измерения. Операция завершится, когда первый терминатор строки будет считан.
meas = fscanf(s)
meas = PK2PK
Используйте fscanf
, чтобы считать напряжение от пика к пику как число с плавающей запятой и исключить терминатор строки.
pk2pk = fscanf(s,'%e',14)
pk2pk = 2.0200
Отключите s
от осциллографа и удалите s
из памяти и рабочей области.
fclose(s) delete(s) clear s
Прежде чем можно будет считать данные из устройства, они должны быть соединены с obj
с функцией fopen
. Связанный объект последовательного порта имеет значение свойства Status
open
. Ошибка возвращена, при попытке выполнить операцию чтения, в то время как obj
не соединяется с устройством.
Если msg
не включен как выходной аргумент, и операция чтения не была успешна, то предупреждающее сообщение возвращено в командную строку.
Значение свойства ValuesReceived
увеличено количеством чтения значений – включая терминатор строки – каждый раз, когда fscanf
выпущен.
Операция чтения с fscanf
блокирует доступ к командной строке MATLAB® до:
Считался терминатор строки, заданный как свойство Terminator.
Прошло время, заданное как свойство Timeout.
Считалось количество значений, заданных в size.
Входной буфер заполнен (если size
не задан),
BytesAvailable
| BytesAvailableFcn
| InputBufferSize
| Status
| Terminator
| Timeout
| fgetl
| fgets
| fopen
| fread
| textscan