1. 程式人生 > >C#與MATLAB通信-2

C#與MATLAB通信-2

fopen clas 時速 end available 文本 time div txt

-1 與-2 都是通過桌面的文本文件.txt來實現C#與MATLAB端的數據傳輸,這個txt文件就起到了中間的連接,但若將服務器端放在雲服務器上,因為不在同一臺計算機中,所以不能找到一個二者都能訪問到的中間文件txt 所以這種方法不可行

用fwrite函數發送變量值給服務器端,代碼也很簡單,不知道當時為什麽在這上邊整不明白,重要的幾句代碼如下:

a=‘1.1‘;%模擬存儲電機的實時速度
fwrite(s,a,‘int8‘);%發送電機的實時速度給服務器端

receive=fread(s,get(s,‘BytesAvailable‘));
data=char(receive)‘% ’使接收到的列向量轉置成一個字符串類型

MATLAB(客戶端)

 1 s = tcpip(127.0.0.1, 125, NetworkRole,client);
 2 set(s, InputBufferSize, 30); 
 3 set(s, outputBufferSize, 30); 
 4 set(s,Timeout,3);
 5 fopen(s);
 6 b=1;
 7 c=1;
 8 d=1;
 9 
10 a=1.1;%模擬存儲電機的實時速度
11 fwrite(s,a,int8);%發送電機的實時速度給服務器端
12 pause(1);%暫停一秒
13 
14 while(b)%while循環是想 只有讀到PID控制器計算完成的信號後,再往下執行代碼 否則在原地等待 直到讀到信號
15 read=fread(s,1) 16 if read==49 17 b=0; 18 end 19 end 20 receive=fread(s,get(s,BytesAvailable)); 21 data=char(receive)22 23 24 a=2.2;%模擬存儲電機的實時速度 25 fwrite(s,a,int8);%發送電機的實時速度給服務器端 26 pause(1);%暫停一秒 27 28 while(c)%while循環是想 只有讀到PID控制器計算完成的信號後,再往下執行代碼 否則在原地等待 直到讀到信號 29
read=fread(s,1) 30 if read==49 31 c=0; 32 end 33 end 34 receive=fread(s,get(s,BytesAvailable)); 35 data=char(receive)36 37 a=3.3;%模擬存儲電機的實時速度 38 fwrite(s,a,int8);%發送電機的實時速度給服務器端 39 pause(1);%暫停一秒 40 41 while(d)%while循環是想 只有讀到PID控制器計算完成的信號後,再往下執行代碼 否則在原地等待 直到讀到信號 42 read=fread(s,1) 43 if read==49 44 d=0; 45 end 46 end 47 receive=fread(s,get(s,BytesAvailable)); 48 data=char(receive)49 50 fclose(s)

代碼:

C#與MATLAB通信-2