C#與MATLAB通信-2
阿新 • • 發佈:2017-05-05
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控制器計算完成的信號後,再往下執行代碼 否則在原地等待 直到讀到信號 29read=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