Matlab - 上位機TCP/IP通訊


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>;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM