Это минимальные шаги, требуемые связываться с удаленным хостом с помощью TCP/IP.
В этом примере вы читаете страницу из Редактора RFC веб-сайт с помощью объекта TCP/IP.
Создайте и сконфигурируйте инструментальный объект — Сначала вы создаете объект TCP/IP в рабочей области MATLAB®. Порт 80
стандартный порт для веб-серверов.
t = tcpip('www.rfc-editor.org', 80);
По умолчанию объект TCP/IP имеет InputBufferSize
из 512
, что означает, что это может только считать 512 байтов за один раз. rfc-editor.org
данные о веб-странице очень больше 512 байтов, таким образом, необходимо установить большее значение для этого свойства.
t.InputBufferSize = 30000;
Чтобы успешно отправить команду в веб-страницу, установите Terminator
свойство объекта TCP/IP.
t.Terminator = {"LF", "CR/LF"};
Соедините объект — Затем вы открываете связь с сервером. Если бы сервер не присутствует или не принимает связи, вы получили бы ошибку здесь.
fopen(t);
Запишите и считайте данные — можно теперь связаться с сервером с помощью функций fprintf
fscanf
fwrite
, и fread
.
Чтобы попросить, чтобы веб-сервер отправил веб-страницу, вы используете GET
команда. Можно попросить текстовый файл из Редактора RFC, использование веб-сайта 'ПОЛУЧАЕТ
.(path/filename)
'
fprintf(t, 'GET /rfc/rfc793.txt');
Сервер получает команду и передает веб-страницу обратно. Вы видите, передали ли какие-либо данные обратно путем рассмотрения BytesAvailable
свойство объекта.
t.BytesAvailable
Теперь можно начать считывать данные о веб-странице. По умолчанию, fscanf
читает одну строку за один раз. Можно прочитать строки данных до BytesAvailable
значением является 0
. Обратите внимание на то, что вы не будете видеть представленную веб-страницу; данные о файле HTML прокрутят на экране.
while (t.BytesAvailable > 0) A = fscanf(t) end
Разъединитесь и вымойтесь — Если вы хотите сделать больше коммуникации, можно продолжить читать и записывать данные здесь. Если вы сделаны с объектом, закрываете его и удаляете его.
fclose(t);
delete(t);
clear t
Этот пример показывает то, что происходит, когда объект TCP/IP теряет свою связь с удаленным сервером. Сервером является Генератор Sony/Tektronix® AWG520 Arbitrary Waveform (AWG). Его адресом является sonytekawg.yourdomain.com
и его порт 4000. IP-адрес хоста AWG 192.168.1.10 и является пользователем, конфигурируемым в инструменте. Связанное имя хоста дано вашим администратором сети. Номер порта фиксируется и найден в документации инструмента.
AWG может пропустить связь, потому что это выведено из эксплуатации, это выключается и так далее:
Создайте инструментальный объект — Создают объект TCP/IP для AWG.
t = tcpip('sonytekawg.yourdomain.com', 4000);
Свяжите с инструментом — Подключение к удаленному инструменту.
fopen(t)
Запишите и считайте данные — Запись команда к инструменту и считайте назад результат.
fprintf(t,'*IDN?')
fscanf(t)
ans = SONY/TEK,AWG520,0,SCPI:95.0 OS:2.0 USR:2.0
Примите, что сервер пропускает связь. При попытке читать из инструмента, тайм-аут происходит, и предупреждение выведено.
fprintf(t,'*IDN?')
fscanf(t)
Warning: A timeout occurred before the Terminator was reached. (Type "warning off instrument:fscanf:unsuccessfulRead" to suppress this warning.) ans = ''
На данном этапе объект и инструмент все еще соединяются.
t.Status
ans = open
При попытке записать в инструмент снова, сообщение об ошибке возвращено, и связь автоматически закрывается.
fprintf(t,'*IDN?')
??? Error using ==> fprintf Connection closed by RemoteHost. Use FOPEN to connect to RemoteHost.
Обратите внимание на то, что, если объект TCP/IP соединяется с локальным хостом, предупреждающее сообщение не отображено. Вместо этого сообщение об ошибке отображено после следующей операции чтения после того, как связь будет пропущена.
Разъединитесь и вымойтесь — Когда вам больше не будет нужен t
, необходимо отключить его от хоста и удалить его из памяти и из рабочего пространства MATLAB.
fclose(t)
delete(t)
clear t