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 アドレスやホスト名と置き換えます。
次に示すアドレスとポート
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
関数
read
を使用してデータを収集します。3 つのセンサーから 10 点の標本 (温度、気圧および湿度) を収集するため、読み取るバイト数を30
と指定します。データ型をdouble
と指定します。data = read(t,30,"double");
1 行 30 列のデータを 10 行 3 列に変更して、各列にそれぞれ温度、気圧および湿度を表示します。
data = reshape(data,[3,10]);
温度をプロットします。
subplot(311); plot(data(:,1));
気圧をプロットします。
subplot(312); plot(data(:,2));
湿度をプロットします。
subplot(313); plot(data(:,3));
オブジェクトをクリアして、TCP/IP クライアント オブジェクトとリモート ホストの接続を閉じます。
clear t
Web サイトからのページの読み取り
この例では、TCP/IP オブジェクトを使用して RFC Editor の Web サイトからページを読み取ります。
TCP/IP オブジェクトを作成します。ポート
80
は、Web サーバーの標準ポートです。t = tcpclient("www.rfc-editor.org",80);
TCP/IP オブジェクトの
Terminator
プロパティを設定します。configureTerminator(t,"LF","CR/LF");
これで、関数
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
さらに通信する場合は、データの読み取りと書き込みを続行します。オブジェクトの使用が終了したら、それをクリアします。
clear t