【matlab】与开发板进行串口通信

文章目录

之前写了篇matlab的串口使用方式,那个使用的是虚拟串口,和proteus通信的,没有使用实物硬件,后来有人问,当时有点忙,一直搁置了,今天补充下。

【Matlab】串口通信(serialport对象,读写、回调、删除等)

一、软硬件准备

我早就没有stm32这些硬件了,找到一块esp8266(esp-12f模组的),这个也有串口,可以用。

🗝️以前写的esp8266的文章:

只要有串口就行了。

现在电脑通常没有串口,尤其是笔记本,台式的话有的主板还有。所以要使用USB转串口,这个相比大家很熟悉了。USB转串口模块应该都买的有,看你模块用的啥芯片,下载对应的软件驱动,比如:ch340

先用串口软件连接一下,软件是:串口调试助手。在Microsoft store下载的,你随便用啥都行。

试了下没问题:波特率啥的根据你的硬件或者代码而定,我这个是下载的一个8266的固件,里面设置的115200。

我只是调试硬件与matlab通信,其它的就不做了,esp8266的AT指令既能接收又能返回消息,串口收发都有了。

二、matlab连接esp8266串口

首先,前面已经使用串口助手,调试确认了,可以正常通信,波特率为:115200,1停8数据,端口号是:COM5。

创建串口对象:并设置终止符为回车换行(这个可能与你的开发板那边的串口代码有关)。

bash 复制代码
% 创建串口对象
s = serialport('COM5',115200); 

s.configureTerminator("CR/LF")

再设置一个接收的回调:

bash 复制代码
% 设置回调
configureCallback(s,"terminator",@mycallbackfunc)

% 回调函数
function mycallbackfunc(s,~)
      data = readline(s);
      % 打印时间和收到的内容
      fprintf("[%s] %s\n",string(datetime('now',Format='HH:mm:ss')),data);
end

这样,matlab收到esp8266发送的消息后就能打印出来了,附带有时间信息。

现在使用写入函数向esp8266发送AT指令就可以收到esp8266的回复了。

bash 复制代码
writeline(s,'AT+GMR') 

完整代码:

bash 复制代码
clear
clc

%%
% 列出串口
serialportlist

% 创建串口对象
s = serialport('COM5',115200); 

s.configureTerminator("CR/LF")

% 设置回调
configureCallback(s,"terminator",@mycallbackfunc)

% 回调函数
function mycallbackfunc(s,~)
      data = readline(s);
      % 打印时间和收到的内容
      fprintf("[%s] %s\n",string(datetime('now',Format='HH:mm:ss')),data);
end



%%
% 发送一条AT指令给esp8266
writeline(s,'AT+GMR') 

不对啊,这不是挺简单的吗?又水了一篇😅

相关推荐
nnerddboy几秒前
Rust教程04:引用、借用与切片
开发语言·后端·rust
jerryinwuhan23 分钟前
《Python数据预处理》第四章
开发语言·python
长江&后浪25 分钟前
防火墙的描述
开发语言·网络·php
观无1 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
雨晨源码(同名B站)1 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
我不是疯子是傻子1 小时前
串口通信数据帧粘包拆包再进化:基于 Qt 的滑动窗口与 CRC 校验实战
开发语言·qt
程序员老陆1 小时前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
霸道流氓气质2 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
Patrick在香港2 小时前
Python正则表达式实战:解析和验证香港身份证、车牌、电话格式
开发语言·python·正则表达式
路溪非溪2 小时前
Python语言的执行流程总结
开发语言·python