当前位置: 首页 > news >正文

matlab实时串口通讯示例

matlab可过serail类实现串口通讯。serial的详细属性可通过【doc serial】或【get】命令查看。

一、基本流程

1. 创建serial对象,配置通信属性:波特率,奇偶校验,数据位,停止位,一般这几个就够了。

2. 打开串口。函数:fopen。

3. 读数据。函数:fread(串口对象,读取的字节数,数据格式【uchar | uint8】)。uchar代表ASCII,uint8代表十六进制。

4. 写数据到。函数:fwrite(串口对象,写的数据,数据格式)

5. 关闭串口。

二、示例目标

1. 每隔两秒读取输入缓冲区所有内容。同时向输出缓冲区输出字符。

2. 当输入缓冲区新增字节数大于等于设定值时,显示输入缓冲区字节数。

三、代码

1. 主函数,main.m

% file: main.m
handles = instrfindall;
delete(handles);
scom = serial('com3', 'BaudRate',9600, 'Parity','None', 'DataBits',8, ...
    'StopBits',1,'TimerFcn','timer_fcn(scom)', 'TimerPeriod',2,...
    'BytesAvailableFcnCount',10, 'BytesAvailableFcn', 'bytes_fcn(scom)',...
    'BytesAvailableFcnMode','byte');
fopen(scom);

2. 定时器函数:timer_fcn

% file: timer_fcn.m
function timer_fcn(scom)
    n_bytes = scom.BytesAvailable;  % 获取读取缓冲区字节数。
    fwrite(scom, 'wahaha|  ', 'uchar');     % 定时写入数据到输出缓冲区。
    if n_bytes
        txt = fread(scom, n_bytes, 'uchar');
        disp(char(txt'));        % 将读取到的ASCII转为字符。
    end
end

3. 新增字节达到设定值的触发函数,bytes_fcn

% file: bytes_fcn.m
function a = bytes_fcn(scom)
    % 显示当前缓冲区字节数
    fprintf('Bytes in ROM: %d\n', scom.BytesAvailable);
end

四、运行效果

用串口助手每个4秒向代码指定的COM3写入【www.baidu.com】,同时定时显示COM3写入到串口调试助手的内容。

matlab的main.m运行结果。注意,运行结束后,需要用fclose(scom)和delete(scom)删除对象。

 

 

相关文章:

  • 通过域名打开网站是做映射么/百度数据网站
  • 网站建设和优司怎么样/足球排名世界排名
  • 扬州哪里做网站/电脑培训速成班多少钱
  • 网站里的活动专题栏怎么做/win10优化软件
  • 花生壳域名做网站/百度电脑网页版
  • 字幕如何做模板下载网站/宁波网站推广找哪家公司
  • 18-CSS3的2D和3D属性
  • 【韩顺平老师讲MySQL】数据类型详解
  • 认识和了解Linux文件系统。
  • Simulink 自动代码生成电机控制:基于Keil软件集成
  • 【ArchSummit】小红书缓存服务多云建设之路
  • Educational Codeforces Round 137 (Rated for Div. 2)-赛后总结
  • Python图形处理
  • 【网站架构】4核CPU的MySQL调优3万RPS吞吐量?数据库集群高可用
  • Codeforces Round #828 (Div. 3)-赛后总结
  • C语言指针个人理解
  • 网络安全系统性学习路线「全文字详细介绍」
  • 你有一份奖学金,请注意查收~浙江财经大学 MBA奖学金