Matlab - 上位機TCP/IP通訊
Function | Description |
---|---|
tcplicent | 創建TCP/IP客戶端對象,以用於TCP/IP進行通信 |
read | 通過TCP/IP讀取遠程主機上的數據 |
write | 通過TCP/IP向遠程主機傳輸數據 |
創建TCP/IP連接
使用主機名創建對象
t = tcpclient("www.maths.com",80);
/*當使用主機名(例如指定的 Web 地址或 'localhost')連接時,將根據網絡接口的配置解析 IP 地址。其結果可能會將地址解析為 IPv4 地址或 IPv6 地址。如果 TCP/IP 服務器只接受傳入連接為某種類型的地址,例如 IPv4 地址,則在創建客戶端時可能需要使用顯式 IP 地址,而不是主機名。*/
使用IP地址創建對象
t = tcpclient('172.28.154.231', 4012);
/*使用IP,port建立TCP/IP對象*/
Timeout
t = tcpclient('172.28.154.231', 4012, 'Timeout', 20);
/*指定讀寫操作的等待時間(以秒為單位)*/
/*Timeout 不設置時,默認為10*/
/*如果指定的地址或端口無效,或者無法建立與服務器的連接,則不會創建對象。*/
ConnectTimeout
t = tcpclient('172.28.154.231', 4012, 'ConnectTimeout', 10)
/*指定對遠程主機的連接請求是成功還是失敗的最長時間(以秒為單位)*/
/*此參數數值僅可以在創建期間修改,*/
/*如果指定的地址或端口無效,或者無法建立與服務器的連接,則不會創建對象。*/
創建后對 Client的修改
<object_name>.<property_name> = <property_value>;
t.Timeout = 30;
讀取和寫入數據
read
read(t) //讀取所有發送的發送的數據。
read(t, 5) //僅讀取五個字節的數。
read(t, 10, 'double') //讀取十個字節的數據,並且轉化為double類型。
write
/*write 函數以同步方式將數據寫入與 tcpclient 對象連接的遠程主機。首先指定數據,然后寫入該數據。此函數一直等到指定數量的值寫入遠程主機。*/
/*在此示例中,tcpclient 對象 t 已存在。*/
data = 1:10; //創建數組data
write(t, data); //輸出數據
/*對於任何讀寫操作,該數據類型將轉換為 uint8 以便傳輸數據。如果指定了其他數據類型,則可以將其重新轉換為所設置的任何數據類型。*/
read and write
>>t = tcplicent('172.28.154.231',1045) //創建TCP/IP Client
>>data = uint8(1:10) //創建data數組
>>whos data //檢查data數據
Name Size Bytes Class Attributes
data 1x10 10 uint8
>>write(t, data) //發送data數據
>>t.BytesAvailable //檢查是否使用BytesAvailable屬性寫入了數據
ans =
10
>>read(t) //從服務器讀取數據
ans =
1 2 3 4 5 6 7 8 9 10
>>clear t //清楚tcp/ip對象 t
從服務器獲取數據
t = tcpclient('172.28.154.231', 1045) //創建TCP/IP Client
data = read(t, 30, 'double');
/*使用 read 函數獲取數據。對於來自 3 個傳感器(溫度、壓力和濕度)的 10 個樣本,指定要讀取的字節數為 30。將數據類型指定為 double。*/
data = reshape(data, [3, 10]);
/*將 1×30 數據重構為 10×3 數據,各用一列來顯示溫度、壓力和濕度。*/
subplot(311); //繪制溫度圖。
plot(data(:, 1));
subplot(312); //繪制壓力圖。
plot(data(:, 2));
subplot(313); //繪制濕度圖。
plot(data(:, 3));
clear t //清除對象斷開連接
關閉TCP/IP連接
clear <Objectname>;