Считайте и запишите данные о ASCII по TCP/IP

Этот раздел предоставляет подробную информацию и примеры, исследуя операции чтения 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

Запись данных о ASCII

Вы используете 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.

Свойства записи ASCII

OutputBufferSize свойство задает максимальное количество байтов, которые могут быть записаны в сервер целиком. По умолчанию, OutputBufferSize 512.

t.OutputBufferSize
ans = 
    512

ValuesSent свойство указывает на общее количество значений, записанных в сервер, поскольку объект был соединен с сервером.

t.ValuesSent
ans = 
    32

Чтение данных о ASCII

Вы используете 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

Свойства чтения ASCII

InputBufferSize свойство задает максимальное количество байтов, которые можно считать из сервера. По умолчанию, InputBufferSize 512.

t.InputBufferSize
ans = 
    512

ValuesReceived свойство указывает на общее количество значений, считанных из сервера, включая терминатор строки.

t.ValuesReceived
ans = 
    32

Очистка

Если вы закончены с объектом TCP/IP, отключаете его от сервера, удаляете его из памяти и удаляете его из рабочей области. Если вы используете сервер эха, выключаете его.

fclose(t);
delete(t);
clear t
echotcpip('off');