Это минимальные шаги, требуемые связываться с удаленным хостом с помощью 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;
Соедините объект — Затем, вы открываете связь с сервером. Если бы сервер не присутствует или не принимает связи, вы получили бы ошибку здесь.
fopen(t);
Запишите и считайте данные — можно теперь связаться с сервером с помощью функций fprintf
, fscanf
, fwrite
и fread
.
Чтобы попросить, чтобы веб-сервер отправил веб-страницу, вы используете команду GET
. Можно попросить текстового файла из Редактора RFC у веб-сайта с помощью
.'GET (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