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

通过这两个实验。你学会使用了吗?呵呵...

posted @   mengfanrong  阅读(24142)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2015-01-29 socketpair的使用
2015-01-29 ibatis 开发中的经验 (一)ibatis 和hibernate 在开发中的理解
2015-01-29 秒杀多线程第四篇 一个经典的多线程同步问题
2015-01-29 数据结构与算法之递推算法 C++与PHP实现
2015-01-29 hibernate 一对多关联关系(具体分析)
2015-01-29 史上最简单的Hibernate入门简单介绍
2015-01-29 ThreadPool.QueueUserWorkItem的性能问题
点击右上角即可分享
微信分享提示