exponenta event banner

Запись и чтение данных через интерфейс TCP/IP

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

write функция синхронно записывает данные на удаленный хост, подключенный к tcpclient объект. Сначала укажите данные, а затем запишите их. Функция ожидает, пока указанное количество значений не будет записано на удаленный хост.

В этом примере tcpclient объект t уже существует.

% Create a variable called data
data = 1:10;

% Write the data to the object t
write(t, data)

Примечание

Для любой операции чтения или записи тип данных преобразуется в uint8 для передачи данных. Затем он преобразуется обратно в тип данных, заданный при указании другого типа данных.

Считывание данных

read функция синхронно считывает данные с удаленного хоста, подключенного к tcpclient и возвращает данные. Существует три варианта чтения:

  • Считать все доступные байты (без аргументов).

  • Дополнительно укажите количество считываемых байт.

  • При необходимости укажите тип данных.

Если размер не указан, при чтении по умолчанию используется BytesAvailable значение свойства, равное количеству байтов, доступных во входном буфере.

В этих примерах a tcpclient объект t уже существует.

% Read all bytes available.
read(t)

% Specify the number of bytes to read, 5 in this case.
read(t,5)

% Specify the number of bytes to read, 10, and the data type, double.
read(t,10,"double")

Примечание

Для любой операции чтения или записи тип данных преобразуется в uint8 для передачи данных. Затем он преобразуется обратно в тип данных, заданный при указании другого типа данных.

Получение данных с сервера метеостанции

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

Примечание

IP-адрес в этом примере не является рабочим IP-адресом. В примере показано, как подключиться к удаленному серверу. Замените указанный здесь адрес IP-адресом или именем хоста сервера, с которым требуется установить связь.

  1. Создать tcpclient с использованием адреса, показанного здесь, и порта 1045.

    t = tcpclient("172.28.154.231",1045)
    t = 
      tcpclient with properties:
    
                  Address: '172.28.154.231'
                     Port: 1045
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    
  2. Получение данных с помощью read функция. Укажите количество байтов для чтения как 30, для 10 образцов от трех датчиков (температура, давление и влажность). Укажите тип данных как double.

    data = read(t,30,"double");
  3. Преобразуйте данные 1 на 30 в данные 10 на 3, чтобы показать по одному столбцу для температуры, давления и влажности.

    data = reshape(data,[3,10]);
  4. Постройте график температуры.

    subplot(311);
    plot(data(:,1));
  5. Постройте график давления.

    subplot(312);
    plot(data(:,2));
  6. Постройте график влажности.

    subplot(313);
    plot(data(:,3));
  7. Закройте соединение между клиентским объектом TCP/IP и удаленным хостом, очистив объект.

    clear t

Прочитать страницу с веб-сайта

В этом примере выполняется чтение страницы с веб-сайта редактора RFC с использованием объекта TCP/IP.

  1. Создайте объект TCP/IP. Порт 80 является стандартным портом для веб-серверов.

    t = tcpclient("www.rfc-editor.org",80);

    Установите Terminator свойства объекта TCP/IP.

    configureTerminator(t,"LF","CR/LF");
  2. Теперь вы можете взаимодействовать с сервером с помощью writeline и readline функции.

    Чтобы попросить веб-сервер отправить веб-страницу, используйте GET команда. Можно запросить текстовый файл с веб-сайта редактора RFC с помощью 'GET (path/filename)'.

    writeline(t,"GET /rfc/rfc793.txt");

    Сервер получает команду и отправляет обратно веб-страницу. Вы можете увидеть, были ли какие-либо данные отправлены обратно, посмотрев на NumBytesAvailable свойства объекта.

    t.NumBytesAvailable

    Теперь можно начать чтение данных веб-страницы. По умолчанию readline считывает по одной строке за раз. Можно считывать строки данных до NumBytesAvailable значение равно 0. Обратите внимание, что визуализированная веб-страница не отображается; данные HTML-файла прокручиваются на экране.

    while (t.NumBytesAvailable > 0)
        A = readline(t)
    end
    
  3. Если вы хотите больше общаться, вы можете продолжить чтение и запись данных. Если работа с объектом завершена, очистите его.

    clear t

См. также

| | |