打印

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

[复制链接]
93341|285
手机看帖
扫描二维码
随时随地手机跟帖
沙发
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
没有图片曲线展示吗!

没有,那个可以根据绘图函数自己修改。

使用特权

评论回复
5
854552391| | 2016-4-13 17:42 | 只看该作者
本帖最后由 cooldog123pp 于 2021-9-25 17:15 编辑

6666666666666666666666666感谢楼主分享~

使用特权

评论回复
6
gaoyang9992006|  楼主 | 2016-4-13 20:08 | 只看该作者
854552391 发表于 2016-4-13 17:42
6666666666666666666666666

哈哈,你总是这么调皮

使用特权

评论回复
7
man2man| | 2016-4-14 08:51 | 只看该作者
看一看

使用特权

评论回复
8
gaoyang9992006|  楼主 | 2016-4-14 11:49 | 只看该作者

不用再为不会用VS做串口客户端发愁了。

使用特权

评论回复
9
854552391| | 2016-4-14 19:49 | 只看该作者
楼主有没有 matlab 飞思卡尔的 上位机程序  或者 教程啊   我是小白。。。

使用特权

评论回复
10
gaoyang9992006|  楼主 | 2016-4-15 10:17 | 只看该作者
854552391 发表于 2016-4-14 19:49
楼主有没有 matlab 飞思卡尔的 上位机程序  或者 教程啊   我是小白。。。

MATLAB_GUI上位机制作流程.pdf (669.64 KB)



给你找了个教程,很不错,应该可以帮你完成。

使用特权

评论回复
11
a20084666| | 2016-4-18 12:14 | 只看该作者
什么东西,想看看

使用特权

评论回复
12
wllty520| | 2016-4-18 20:24 | 只看该作者
本帖最后由 cooldog123pp 于 2021-9-25 17:16 编辑

哈哈哈哈哈哈哈哈哈哈哈 感谢楼主分享~

使用特权

评论回复
13
gaoyang9992006|  楼主 | 2016-4-19 10:09 | 只看该作者
wllty520 发表于 2016-4-18 20:24
哈哈哈哈哈哈哈哈哈哈哈

xiexie .

使用特权

评论回复
14
QQ745021926| | 2016-4-19 13:55 | 只看该作者
支持楼主

使用特权

评论回复
15
gaoyang9992006|  楼主 | 2016-4-19 13:58 | 只看该作者

非常感谢。

使用特权

评论回复
16
天干物燥| | 2016-4-26 22:35 | 只看该作者
撒打算打打打算打多少瓦的

使用特权

评论回复
17
comprends| | 2016-4-27 00:33 | 只看该作者
急需,看看

使用特权

评论回复
18
李不走寻常路| | 2016-4-27 09:17 | 只看该作者

使用特权

评论回复
19
leetoun| | 2016-4-28 14:41 | 只看该作者
学习学习

使用特权

评论回复
20
gaoyang9992006|  楼主 | 2016-4-28 20:08 | 只看该作者

给你推荐个编程框架:QT。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1893

主题

15621

帖子

197

粉丝