⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用matlab写的串口接收程序.txt

📁 matlab程序能够实时接收COM数据并提取有关信息。
💻 TXT
字号:
%%%%%%%%%%%%%%%%%%%%%%%%串口接收函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%thomas1847,2007.1.22%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%注:查询方式
function serialcomm                                                        
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -