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串口通信相关推荐

  1. Matlab上位机开发(一) —— 了解上位机

    1. 上位机的作用 在嵌入式项目开发中,无论是单片机项目.嵌入式Linux项目.FPGA项目,上位机始终是一个很重要的部分,主要用于: 数据显示(波形.温度等) 用户控制(LED,继电器等) 文件传输 ...

  2. Matlab上位机开发

    Matlab上位机开发 1 了解上位机 1.1 上位机的作用 1.2 常用上位机开发方式 1.2.1 Windows上位机(基于串口通信) 1.2.2 Android上位机(基于网络通信) 1.3 教 ...

  3. java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践

    写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...

  4. 上位机开发之三菱PLC通信

    前言 三菱MC协议是开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问. MC协议是Melsec协议的简 ...

  5. matlab上位机串口通信,MATLAB GUIDE 上位机串口通信开发 绘制图形

    本人因项目需求,需要开发这个串口通信上位机界面,用于实时绘制串口发送过来的数据.本人之前基本没使用过MATLAB,也就知道个zeros(100)这种在命令行窗口中输入的函数.至于MATLAB能开发图形 ...

  6. C#上位机开发串口通信编程——倒计时器开发

    C#上位机开发串口通信编程--倒计时器开发 一.介绍 这是我按照B站上的一个上位机开发视频教程开发的倒计时器开发,本来只有开始计时功能,没有停止计时功能,停止计时功能后面我自己添加了. 视频网址:C# ...

  7. 安卓开发板之串口通信,通过modbus Rtu协议控制下位机

    安卓开发板之串口通信,通过modbus Rtu协议控制下位机 1.环境准备 2.编写串口操作核心类 3.编写测试类 前言:因为公司最近有个人脸识别门禁的项目,这个项目主要业务是实现远程人脸注册,管理员 ...

  8. 485通信原理_上位机开发之单片机通信实践

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

  9. pythonqt4上位机开发_「新阁教育」自由口通信上位机实战案例

    1.引言 组态软件作为一种通用软件,体系结构较为庞大.功能软件包多.价格也比较昂贵,而且对于一些复杂的业务逻辑或自定义的协议,实现起来比较麻烦.近几年,C#/.NET上位机开发应用越来越广泛,相对于传 ...

最新文章

  1. 显著提升图像识别网络效率,Facebook提出IdleBlock混合组成方法
  2. 系统安全攻防战:DLL注入技术详解
  3. 模块计算机型x86yu,ldd3学习之九:与硬件通信
  4. c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...
  5. Linux 下Oracle11g 自动随系统启动
  6. Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响
  7. java开发人员_Java 8:开发人员怎么看?
  8. iOS 计算文字宽度的一个细节
  9. 高效的序列化/反序列化数据方式 Protobuf
  10. 入门第十课 Python语句的编写之while
  11. 程序员的代码为什么永远写不完?
  12. linux 下ip命令对比ifconfig命令
  13. .Net 1.1 到 .Net 2.0 开发日志
  14. Tiny4412 小试牛刀
  15. 计算机毕业设计java+ssm协同过滤推荐算法的电影资源平台(源码+系统+mysql数据库+Lw文档)
  16. 计算机管理里找不到固态硬盘,教大家电脑插上固态硬盘提示找不到设备怎么办...
  17. vue3+vant Failed to resolve import “E:/code3/jianmu-user-yd/node_modules/vant/lib/vant/es/icon/style
  18. Leetcode 368. Largest Divisible Subset
  19. 第一类和第二类曲面积分的转换
  20. nginx 模糊匹配location写法

热门文章

  1. Android获取手机当前连接的WiFi信息(SSID,IP,连接状态)
  2. 关于我用chat gpt生成了一篇nba比赛前瞻预测文章,大家觉得怎么样!
  3. python爬虫实战之爬取知乎帖子
  4. 易验:APP一键登录,就这么简单
  5. python词汇网络分析_文本分析之制作网络关系图——Python
  6. pdf文件转图片(java实现)
  7. 【华为ensp实战案例——路由网络的构建与配置】
  8. TP5后端,VUE前端请求聚合数据成语大全
  9. 高效管理,OA系统如何做到?
  10. C# 控制台项目练习--当当网