Matlab---串口操作---數據採集篇


matlab功能強大,串口操作也非常easy。相信看過下面兩個實驗你就能掌握咯!

開始吧!

實驗1:

從電腦COM2口讀取數據。並將數據保存在TXT文件里,方便數據分析,以下是M腳本:

%名 稱:Matlab串口-Lab1
%描 述:串口讀,並寫入txt文件里
s=serial('com2');
s.BytesAvailableFcnMode='byte';  % 串口設置
s.InputBufferSize=4096;
s.OutputBufferSize=1024;
s.BytesAvailableFcnCount=100;
s.ReadAsyncMode='continuous';
s.Terminator='CR';
fopen(s);                  %打開串口
out=fread(s,10,'uint8');   %一次讀出10個字符  
fprintf('%3c',out);        %一個字符占三位輸出,%c字符,%d整型

fid=fopen('serial_data.txt','w+'); % 'a+'讀寫方式打開,將文件指針指向文件末尾。

假設文件不存在則嘗試創建之 fprintf(fid,'%3c',out); % 寫入文件里 fclose(fid); fclose(s); delete(s);

實驗2:

相同的功能。用函數寫更規范,代碼例如以下:

% 打開串口
function scom = OpenSerial(sname, HReadFcn)
scom = serial(sname);
scom.BytesAvailableFcnMode = 'terminator';
scom.Terminator = '.';
scom.BytesAvailableFcn = HReadFcn;
try
fopen(scom);
catch err
fprintf('%s打開失敗。

\n', sname); end fprintf('%s成功打開。\n', sname); end % 寫串口 function WriteSerial(scom, str) fprintf(scom, str ,'async'); % 異步方式 end % 讀串口回調函數 function ReadFcn_Com2(obj, ~) n = get(obj, 'BytesAvailable'); if n a = fread(obj, n, 'uchar'); c = char(a'); fprintf('%s\n', c); end end % 關閉串口 function CloseSerial(scom) try fclose(scom); catch err fprintf('%s關閉失敗。

', scom.Name); return end delete(scom); end

仿真例如以下,使用虛擬串口連接串口2和3。打開串口調試助手,以默認方式打開com3


在matlab命令框中例如以下輸入命令打開串口com2

>> scom =OpenSerial('com2', @ReadFcn_Com2);

com2成功打開。

    向com2寫

>>WriteSerial(scom, 'Hello!');

串口調試助手收到信息


用串口調試助手回復matlab。點上圖中的手動發送(發送的信息已英文句號.結束),matlab中收到信息

Hello, Matlab.

>> 

    關閉串口

>> CloseSerial(scom)

部分參考:http://blog.sina.com.cn/s/blog_6163bdeb0102e8qc.html

通過這兩個實驗。你學會使用了嗎?呵呵...


免責聲明!

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



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