Этот раздел предоставляет подробную информацию и примеры, исследуя операции чтения ASCII и операции записи с объектом TCP/IP.
Большинство настольных инструментов (осциллографы, функциональные преобразователи, и т.д.), которые обеспечивают сетевое соединение, не использует необработанную коммуникацию сокета TCP в инструментальном командном пункте. Вместо этого это поддерживается через стандарт VISA. Для получения дополнительной информации об использовании VISA, чтобы связаться с вашим инструментом, см. Обзор VISA.
Эти функции используются при чтении и записи текста:
Функция | Цель |
---|---|
fprintf | Запишите текст в сервер. |
fscanf | Считайте данные из сервера и отформатируйте как текст. |
Эти свойства сопоставлены с чтением и записью текста:
Свойство | Цель |
---|---|
ValuesReceived | Задает общее количество значений, считанных из сервера. |
ValuesSent | Задает общее количество значений, отправленных в сервер. |
InputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь во входном буфере одновременно. |
OutputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь в буфере вывода одновременно. |
Terminator | Символ раньше отключал команды, отправленные в сервер. |
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB®. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
В данном примере мы будем использовать сервер эха, которому предоставляют тулбокс. Сервер эха позволяет вам экспериментировать с основной функциональностью объектов TCP/IP, не связывая с существующим устройством. Сервер эха является сервисом, который возвращается к адресу и порту отправителя, те же байты, которые это получает от отправителя.
echotcpip('on', 4000)
Необходимо создать объект TCP/IP. В этом примере создайте объект TCP/IP, сопоставленный с хостом 127.0.0.1 (ваша локальная машина), порт 4000. В общем случае имя хоста или адрес и серверный порт будут заданы устройством и вашей конфигурацией сети.
t = tcpip('127.0.0.1', 4000);
Прежде чем можно будет выполнить операцию чтения или операцию записи, необходимо соединить объект TCP/IP с сервером с fopen
функция.
fopen(t)
Если объект был успешно соединен, его Status
свойство автоматически сконфигурировано к open
.
t.Status ans = open
Вы используете fprintf
функционируйте, чтобы записать данные о ASCII в сервер.
fprintf(t, 'Hello World 123');
По умолчанию, fprintf
функция действует в синхронном режиме. Это означает тот fprintf
блокирует командную строку MATLAB, пока одно из следующего не происходит:
Все данные записаны
Тайм-аут происходит, как задано Timeout
свойство
По умолчанию fprintf
функционируйте данные о ASCII записей с помощью %s\n
формат. Все случаи \n
в команде, записанной в сервер, заменяются Terminator
значение свойства. При использовании формата по умолчанию, %s\n
, все команды, записанные в сервер, закончатся Terminator
символ.
Для предыдущей команды перевод строки (LF) отправляется после 'Hello World 123'
записан в сервер, таким образом, указав на конец команды.
Можно также задать формат команды, записанной путем обеспечения третьего входного параметра fprintf
. Принятые символы преобразования формата включают: d, i, o, u, x, X, f, e, E, g, G, c, и s.
Например, команда данных, ранее показанная, может быть записана в сервер с помощью трех вызовов fprintf
.
fprintf(t, '%s', 'Hello'); fprintf(t, '%s', ' World'); fprintf(t, '%s\n', ' 123');
Terminator
символ указывает на конец команды и отправляется после последней возможности в fprintf
.
OutputBufferSize
свойство задает максимальное количество байтов, которые могут быть записаны в сервер целиком. По умолчанию, OutputBufferSize
512
.
t.OutputBufferSize ans = 512
ValuesSent
свойство указывает на общее количество значений, записанных в сервер, поскольку объект был соединен с сервером.
t.ValuesSent ans = 32
Вы используете fscanf
функционируйте, чтобы считать данные о ASCII из сервера. Например, чтобы считать назад данные, возвращенные в сервер эха для нашего первого fprintf
команда:
data = fscanf(t) data = Hello World 123
По умолчанию, fscanf
функционируйте данные о чтениях с помощью '%c'
формат и блоки командная строка MATLAB до одного из следующего происходят:
Терминатор строки получен, как задано Terminator
свойство
Тайм-аут происходит, как задано Timeout
свойство
Входной буфер заполнен
Конкретное количество значений читается
Можно также задать формат данных, считанных путем обеспечения второго входного параметра fscanf
. Принятые символы преобразования формата включают: d, i, o, u, x, X, f, e, E, g, G, c, и s.
Следующие команды возвращают числовое значение как двойное.
Очистите что-либо все еще во входном буфере от предыдущих команд.
flushinput(t);
Отправьте данные в сервер.
fprintf(t, '0.8000');
Считайте ответ.
data = fscanf(t, '%f') data = 0.8000
isnumeric(data) ans = 1
InputBufferSize
свойство задает максимальное количество байтов, которые можно считать из сервера. По умолчанию, InputBufferSize
512
.
t.InputBufferSize ans = 512
ValuesReceived
свойство указывает на общее количество значений, считанных из сервера, включая терминатор строки.
t.ValuesReceived ans = 32
Если вы закончены с объектом TCP/IP, отключаете его от сервера, удаляете его из памяти и удаляете его из рабочей области. Если вы используете сервер эха, выключаете его.
fclose(t); delete(t); clear t
echotcpip('off');