Main Content

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 オブジェクトに接続されたリモート ホストからデータを同期的に読み取り、そのデータを返します。読み取りオプションは 3 つあります。

  • 使用可能なすべてのバイトを読み取る (引数なし)。

  • オプションで読み取るバイト数を指定する。

  • オプションでデータ型を指定する。

サイズを指定しないと、既定の read では BytesAvailable プロパティ値を使用します。これは、入力バッファーの使用可能なバイト数と同じです。

次の例では、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 通信の主な使用法の 1 つに、サーバーからのデータ収集があります。次の例では、リモートの気象計からデータを収集してプロットする方法を示します。

メモ

この例の IP アドレスは、実際の IP アドレスではありません。この例は、リモート サーバーに接続する方法を示しています。ここに示すアドレスを、通信するサーバーの IP アドレスやホスト名と置き換えます。

  1. 次に示すアドレスとポート 1045 を使用して tcpclient オブジェクトを作成します。

    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 を使用してデータを収集します。3 つのセンサーから 10 点の標本 (温度、気圧および湿度) を収集するため、読み取るバイト数を 30 と指定します。データ型を 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

Web サイトからのページの読み取り

この例では、TCP/IP オブジェクトを使用して RFC Editor の Web サイトからページを読み取ります。

  1. TCP/IP オブジェクトを作成します。ポート 80 は、Web サーバーの標準ポートです。

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

    TCP/IP オブジェクトの Terminator プロパティを設定します。

    configureTerminator(t,"LF","CR/LF");
  2. これで、関数 writeline および readline を使用してサーバーと通信できるようになりました。

    Web ページを送信するよう Web サーバーに要求するには、GET コマンドを使用します。RFC Editor の Web サイトからのテキスト ファイルを要求するには、'GET (path/filename)' を使用します。

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

    サーバーはコマンドを受信し、Web ページを送り返します。オブジェクトの NumBytesAvailable プロパティを確認すると、送り返されたデータがあるかどうかがわかります。

    t.NumBytesAvailable

    これで、Web ページのデータの読み取りを開始できます。既定では、readline は一度に 1 行を読み取ります。NumBytesAvailable の値が 0 になるまで、データの行を読み取ることができます。表示される Web ページはレンダリングされていません。HTML ファイルのデータが画面上でスクロールされます。

    while (t.NumBytesAvailable > 0)
        A = readline(t)
    end
    
  3. さらに通信する場合は、データの読み取りと書き込みを続行します。オブジェクトの使用が終了したら、それをクリアします。

    clear t

参考

| | |