Matlab上位机开发(五)Matlab串口通信
1. Matlab串口通信
Matlab提供了串口通信的功能,串口通信的流程如下:
1.1. 创建串口对象
创建一个串口对象的API如下:
scom = serial('<串口号>');
串口号为COM8
的形式,这个API有个缺点:不能自动检测目前电脑中存在中的串口。
创建之后设置该串口对象的属性:
- InputBufferSize:输入缓冲区大小(单位字节)
- OutputBufferSize:输出缓冲区大小(单位字节)
- ReadAsyncMode:数据读取模式
- BaudRate:波特率
- Parity:校验位
- StopBits:停止位
- DataBits :数据位
- Terminator:触发中断的字符(一般是换行符)
- FlowControl:流控
- timeout:一次操作超时时间
- BytesAvailableFcnMode:设置数据读入格式
- BytesAvailableFcnCount:触发中断的数据数量
- BytesAvailableFcn:串口接收中断回调函数
常用设置如下:
scom.InputBufferSize =512;
scom.OutputBufferSize =512;
scom.ReadAsyncMode='continuous';
scom.BaudRate =115200;
scom.Parity ='none';
scom.StopBits =1;
scom.DataBits =8;
scom.Terminator ='CR';
scom.FlowControl ='none';
scom.timeout =1;
scom.BytesAvailableFcnMode = 'byte';
scom.BytesAvailableFcnCount = 1024;
scom.BytesAvailableFcn = @callback;
1.2. 打开串口
打开串口的API为:
fopen(scom);
打开串口可能会发生异常,所以此函数建议放在try..catch..end
中执行:
tryfopen(scom);
catch<捕获到异常时需要打印或者显示的信息>
end
1.3. 写入数据
向串口写入数据的API有两个:
fwrite(scom,A); % 以二进制形式向串口对象写入数据A
fprintf(scom,str); %以字符(ASCII码)形式向串口写数据str(字符或字符串)
如果BytesAvailableFcnMode设置的为byte,则使用 fwrite 。
1.4. 读取数据
从串口读取数据的API也有两个:
A = fread(scom,size); %从串口对象中读取size字节长短的二进制数据,以数组形式存于A
str = fscanf(scom); %从串口对象中读取字符或字符串(ASCII码)形式数据,以字符数组形式存于str
如果BytesAvailableFcnMode设置的为byte,则使用 fread。
1.5. 关闭串口
在不使用串口或者关闭界面之前,必须要关闭串口,否则下次将无法打开该串口:
close(scom)
2. 串口中断
上面讲述了使用fread手动读取数据的方式,但是实际应用中,需要使用串口中断自动接收并处理数据。
2.1. 触发中断的条件
触发串口Bytes available事件有两种条件:
- 当接收到的字符数达到指定的数目时(BytesAvailableFcnCount 属性);
- 当接收到指定字符时(Terminator 属性);
2.2. 串口中断处理回调函数
在上一节设置属性的最后有这样一行代码:
scom.BytesAvailableFcn = @callback;
这行代码就是设置串口中断处理回调函数,如果是纯m文件可以这样设置,但是在GUI界面中还要传入handles调用控件,如下:
scom.BytesAvailableFcn = {@calllback,handles};
这里我设置的函数名为callbcak
,回调函数自己实现即可:
function callback(s,event,handles)
接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。
Matlab上位机开发(五)Matlab串口通信相关推荐
- Matlab上位机开发(一) —— 了解上位机
1. 上位机的作用 在嵌入式项目开发中,无论是单片机项目.嵌入式Linux项目.FPGA项目,上位机始终是一个很重要的部分,主要用于: 数据显示(波形.温度等) 用户控制(LED,继电器等) 文件传输 ...
- Matlab上位机开发
Matlab上位机开发 1 了解上位机 1.1 上位机的作用 1.2 常用上位机开发方式 1.2.1 Windows上位机(基于串口通信) 1.2.2 Android上位机(基于网络通信) 1.3 教 ...
- java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践
写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...
- 上位机开发之三菱PLC通信
前言 三菱MC协议是开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问. MC协议是Melsec协议的简 ...
- matlab上位机串口通信,MATLAB GUIDE 上位机串口通信开发 绘制图形
本人因项目需求,需要开发这个串口通信上位机界面,用于实时绘制串口发送过来的数据.本人之前基本没使用过MATLAB,也就知道个zeros(100)这种在命令行窗口中输入的函数.至于MATLAB能开发图形 ...
- C#上位机开发串口通信编程——倒计时器开发
C#上位机开发串口通信编程--倒计时器开发 一.介绍 这是我按照B站上的一个上位机开发视频教程开发的倒计时器开发,本来只有开始计时功能,没有停止计时功能,停止计时功能后面我自己添加了. 视频网址:C# ...
- 安卓开发板之串口通信,通过modbus Rtu协议控制下位机
安卓开发板之串口通信,通过modbus Rtu协议控制下位机 1.环境准备 2.编写串口操作核心类 3.编写测试类 前言:因为公司最近有个人脸识别门禁的项目,这个项目主要业务是实现远程人脸注册,管理员 ...
- 485通信原理_上位机开发之单片机通信实践
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...
- pythonqt4上位机开发_「新阁教育」自由口通信上位机实战案例
1.引言 组态软件作为一种通用软件,体系结构较为庞大.功能软件包多.价格也比较昂贵,而且对于一些复杂的业务逻辑或自定义的协议,实现起来比较麻烦.近几年,C#/.NET上位机开发应用越来越广泛,相对于传 ...
最新文章
- 显著提升图像识别网络效率,Facebook提出IdleBlock混合组成方法
- 系统安全攻防战:DLL注入技术详解
- 模块计算机型x86yu,ldd3学习之九:与硬件通信
- c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...
- Linux 下Oracle11g 自动随系统启动
- Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响
- java开发人员_Java 8:开发人员怎么看?
- iOS 计算文字宽度的一个细节
- 高效的序列化/反序列化数据方式 Protobuf
- 入门第十课 Python语句的编写之while
- 程序员的代码为什么永远写不完?
- linux 下ip命令对比ifconfig命令
- .Net 1.1 到 .Net 2.0 开发日志
- Tiny4412 小试牛刀
- 计算机毕业设计java+ssm协同过滤推荐算法的电影资源平台(源码+系统+mysql数据库+Lw文档)
- 计算机管理里找不到固态硬盘,教大家电脑插上固态硬盘提示找不到设备怎么办...
- vue3+vant Failed to resolve import “E:/code3/jianmu-user-yd/node_modules/vant/lib/vant/es/icon/style
- Leetcode 368. Largest Divisible Subset
- 第一类和第二类曲面积分的转换
- nginx 模糊匹配location写法