matlab读取串口数据并显示曲线

[复制链接]
 楼主| gaoyang9992006 发表于 2016-4-7 10:52 | 显示全部楼层 |阅读模式

游客,如果您要查看本帖隐藏内容请回复


 楼主| gaoyang9992006 发表于 2016-4-7 10:54 | 显示全部楼层

%%%%%%%%%%%%%%%%%%%%%%%%串口接收函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%thomas1847,2007.1.22%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%注:查询方式
function serialcomm                                                        
web -browser
clear;clc;                                                                 %清除变量
g=serial('com1');                                                          %创建串口对象
g.baudrate=2400;                                                           %设置波特率,缺省9600bit/s
g.parity='none';                                                           %无奇偶校验
g.stopbits=1;                                                              %停止位
g.timeout=0.5;                                                             %设置读操作完成时间为1s,缺省10s                                          
g.inputbuffersize=256;                                                     %输入缓冲区为32b,缺省值为512b
%设置
recbuf=zeros(1,40);                                                        %清接收缓冲区(40)        
framelen=23;                                                               %帧长度(每帧23byte)
framenum=0;                                                                %清接收帧数
rectr=0;                                                                   %接收计数器清零
xctr=0;
%输入接收的数据帧数
recnum= input('请输入要接收的数据帧数:\n');                                 %输入接收帧数                                                                      %清  
%打开串口设备
fopen(g);                                                                  %打开串口设备对象g
%进入接收循环
while framenum<recnum                                                      %
       recdta=fread(g,1,'uint8');                                          %读入数据
       if recdta==255                                                      %找帧头
          rectr=rectr+1;                                                   %接收计数器加1
          recbuf(rectr)=recdta;                                            %送入接收缓冲区      
       elseif recdta==framelen&rcbuf(1)==255                               %验证接收长度和帧头
          framelen=recdta;                                                 %取帧长度
          rectr=rectr+1;                                                   %接收计数器加1
          recbuf(rectr)=recdta;                                            %送入接收缓冲区
       elseif rectr>1&rectr<framelen                                       %接收数据
          rectr=rectr+1;                                                   %接收计数器加1
          recbuf(rectr)=recdta;                                            %送入接收缓冲区
          if rectr==framelen                                               %如果接收完进行处理
             rectr=0;                                                      %清接收计数器
             framenum=framenum+1;                                          %帧数累加
             %可根据具体通讯协议提取数据,例如:data1~data4
             data1=(recbuf(3)*256^3+recbuf(4)*256^2+recbuf(5)*256+recbuf(6))/100;      %接收原始数据
             data2=(recbuf(7)*256^3+recbuf(8)*256^2+recbuf(9)*256+recbuf(10))/100;     %接收非线性补偿后的数据
             data3=(recbuf(11)*256^3+recbuf(12)*256^2+recbuf(13)*256+recbuf(14))/100;  %接收蠕变补偿后的数据
             data4=(recbuf(15)*256^3+recbuf(16)*256^2+recbuf(17)*256+recbuf(18))/100;  %接收滤波后的数据
             fprintf('%8.2f    %8.2f   %8.2f    %8.2f\n',data1,data2,data3,data4)      %输出显示
             %可根据具体通讯协议取出数据
          end
       else rectr=0;                                                       %未找到帧头清计数器
       end                                                                 %接收结束   
end                                                                        %主循环结束                                                                                
%程序结束关闭串口类
fclose(g);                                                                 %关闭串口                                                               
delete(g);                                                                 %删除串口对象
clear g ;                                                                  %清除变量
end




lvyunhua 发表于 2016-4-7 16:00 | 显示全部楼层
没有图片曲线展示吗!
 楼主| gaoyang9992006 发表于 2016-4-8 18:12 | 显示全部楼层
lvyunhua 发表于 2016-4-7 16:00
没有图片曲线展示吗!

没有,那个可以根据绘图函数自己修改。
854552391 发表于 2016-4-13 17:42 | 显示全部楼层
本帖最后由 cooldog123pp 于 2021-9-25 17:15 编辑

6666666666666666666666666感谢楼主分享~
 楼主| gaoyang9992006 发表于 2016-4-13 20:08 | 显示全部楼层
854552391 发表于 2016-4-13 17:42
6666666666666666666666666

哈哈,你总是这么调皮
man2man 发表于 2016-4-14 08:51 | 显示全部楼层
看一看
 楼主| gaoyang9992006 发表于 2016-4-14 11:49 | 显示全部楼层

不用再为不会用VS做串口客户端发愁了。
854552391 发表于 2016-4-14 19:49 | 显示全部楼层
楼主有没有 matlab 飞思卡尔的 上位机程序  或者 教程啊   我是小白。。。
 楼主| gaoyang9992006 发表于 2016-4-15 10:17 | 显示全部楼层
854552391 发表于 2016-4-14 19:49
楼主有没有 matlab 飞思卡尔的 上位机程序  或者 教程啊   我是小白。。。

MATLAB_GUI上位机制作流程.pdf (669.64 KB, 下载次数: 290)



给你找了个教程,很不错,应该可以帮你完成。
a20084666 发表于 2016-4-18 12:14 | 显示全部楼层
什么东西,想看看
wllty520 发表于 2016-4-18 20:24 | 显示全部楼层
本帖最后由 cooldog123pp 于 2021-9-25 17:16 编辑

哈哈哈哈哈哈哈哈哈哈哈 感谢楼主分享~
 楼主| gaoyang9992006 发表于 2016-4-19 10:09 | 显示全部楼层
wllty520 发表于 2016-4-18 20:24
哈哈哈哈哈哈哈哈哈哈哈

xiexie .
QQ745021926 发表于 2016-4-19 13:55 | 显示全部楼层
支持楼主
 楼主| gaoyang9992006 发表于 2016-4-19 13:58 | 显示全部楼层
天干物燥 发表于 2016-4-26 22:35 | 显示全部楼层
撒打算打打打算打多少瓦的
comprends 发表于 2016-4-27 00:33 | 显示全部楼层
急需,看看
李不走寻常路 发表于 2016-4-27 09:17 | 显示全部楼层
leetoun 发表于 2016-4-28 14:41 | 显示全部楼层
学习学习
 楼主| gaoyang9992006 发表于 2016-4-28 20:08 | 显示全部楼层

给你推荐个编程框架:QT。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16351

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部