本文具体介绍app设计的过程,该app接收的数据格式是16位整形数,分byte以字符方式打印。打印U16变量var,打印格式为

printf("%c%c\n",U8(var>>8),U8(var));

app设计如下

文章目录

  • 1. 选择串口
  • 2. 选择波特率
  • 3. 串口状态控制

1. 选择串口

使用下拉框控件

双击"下拉框",“下拉框”label变为可编辑,修改label为“COM”;同样修改“option 1”为“COM1”

也可以选中控件后,通过右下角的属性修改。这里我们修改一下控件的name “DropDown”,修改为“COM”
这里可以添加多个串口,如“COM2,COM3…… ”,也可以通过读取电脑识别到的串口,赋值给app.COM.Items

  tryfclose(instrfind);catch          end           Ports = instrhwinfo('serial');           app.COM.Items=flipud(Ports.SerialPorts);%COM1一般为电脑自己的串口,这里把串口数从大到小排列赋值给COM

该段代码我们我们在启动函数startupFcn()中实现
startupFcn函数内可以添加其他初始化操作,当然你也可以把这些初始化封装起来。如下定义 函数COMInitialFun(),并在startupFcn()中调用

2. 选择波特率

操作类似 选择串口同样使用下拉框控件,这里勾选了“允许用户键入文本”,防止可选波特率无法覆盖实际需求

3. 串口状态控制

先在app属性中添加名为“SERIAL”的串口对象

选用Button控件进行串口状态控制,将控件名改为“SerialSts”和标签修改为“Open”;选用TextArea控件监控串口状态,将控件名改为“SampleSts”
右键Open 控件或者在右下的属性里增加回调函数SerialStsButtonPushed() 回调函数SerialStsButtonPushed(app)

try           fclose(instrfind);
catch
end
if strcmp(app.SerialSts.Text,'Close')              try                fclose(app.SERIAL);                app.SerialSts.Text='Open';                app.SampleSts.Value=[app.SampleSts.Value(2:end);['关闭',app.COM.Value,'成功']];                    catch                 app.SampleSts.Value=[app.SampleSts.Value(2:end);['关闭',app.COM.Value,'失败']];app.SerialSts.Text='Close';              end             delete(app.SERIAL);
else                 try                        app.SERIAL=serial(app.COM.Value,'baudrate',str2num(app.Baud.Value));                    app.SERIAL.BytesAvailableFcnCount = 3;                    set(app.SERIAL,'BytesAvailableFcnMode','byte'); %设置中断触发方式terminator                   set(app.SERIAL,'BytesAvailableFcn',{@app.ReceiveSerial});                       fopen(app.SERIAL);                 %打开串口                      app.SerialSts.Text='Close';     app.SampleSts.Value=[app.SampleSts.Value(2:end);['打开',app.COM.Value,'成功']];                    catch                     app.SampleSts.Value=[app.SampleSts.Value(2:end);['打开',app.COM.Value,'失败']]; app.SerialSts.Text='Open';                   fclose(app.SERIAL);                    delete(app.SERIAL);                 end                            end

定义串口中断函数ReceiveSerial,其中中断函数需要添加形参src和event

function ReceiveSerial(app,src,event)data = fread(app.SERIAL,3);                                    if data(3) == 10      %10——换行符对应的ASICII码                                dataPrint = data(1)*256+data(2);                    app.SampleSts.Value=[app.SampleSts.Value(2:end);num2str(dataPrint )];                                     else                app.WaitCount=app.WaitCount+1;                app.WaitCount=mod(app.WaitCount,100);                app.SampleSts.Value=[app.SampleSts.Value(2:end);['Waiting',num2str(app.WaitCount)]];                pause(1);       end
end

这里我们给app.SampleSts.Value进行初始化并在启动函数中调用,定义打印数据的长度,同时新增等待计数变量WaitCount,在初始化函数中初始化,

app.SampleSts.Value={'';'';'';'';'Initial'};
app.WaitCount=0;


源码在我的上传资源中SerialApp.mlapp

基于APP Designer 实现串口数据监测功能App总结(2)——app设计相关推荐

  1. 基于APP Designer 实现串口数据监测功能App总结(1)——函数间变量传递

    文章目录 1.全局变量类型 global: 2.作为app的属性传递: 3.setappdata函数为句柄添加数据: 4.跨空间计算evalin和赋值assignin: 5. 将数据保存到文件,需要时 ...

  2. ionic3实现app启动时进行网络监测功能

    需要联网的app一般都需要进行网络监测,尤其是在app启动时,若未发现网络连接应给出提示,本文在参照官网的基础上实现了app启动进行网络监测,实现该功能其实非常简单,只需用到cordova的一个插件- ...

  3. STM32G070RBT6基于Arduino框架下串口数据接收使用示例

    STM32G070RBT6基于Arduino框架下串口数据接收使用示例 相关篇<STM32G070RBT6基于Arduino串口的使用>

  4. 基于MATLAB App Designer的串口RS485 Modbus上位机

    1. 前言 上学那会儿MATLAB还没有App Designer,记得当时开发了一个基于MATLAB的计算器.最近,由于项目需要一个简单的上位机做监控,结合自身实际,拟定了以下三种方案: PyQt5: ...

  5. iOS APP中嵌入网速监测功能

    企鹅的手机管家.一些网页都提供了网速监测功能.在开发过程中我们偶尔也需要开发这个模块,以提示用户网速的状况,增强用户体验. 常见的网络测速方案 通过调研发现,目前常见的网络测速方案只有两种: 方案1: ...

  6. <UART 波形分析><1>基于RIGOL_DS1202ZE示波器分析串口数据

    目录 <任务内容> <实现硬件&测量平台> 实现原理 <数据结果> 第一帧数据 第二帧数据 第三帧数据 第四帧数据 <波特率计算> 算法一 算法 ...

  7. 我想使用Simulink模型模拟期间生成的数据更新我在App Designer中设计的GUI。换句话说,如何从App Designer访问Simulink模型的运行时参数?

    1.将使用的Simulink模型命名为"Trial.slx",将使用的App Designer应用命名为"TrialApp.mlapp".从App Design ...

  8. qt做的接收串口数据并显示曲线_QT无人机地面站设计与制作

    近年来,无人机可谓是大火.无论是军事,还是民用,它的地位更是不用说.但,如何利用利用现有技术对无人机的信息进行操作,实现人.机合一呢?"无人机地面站"应运而生,结合仿真系统为地面工 ...

  9. 基于MATLAB中APP Designer的采样定理的可视化

    采样定理的可视化 一.APP Designer 介绍 二. 时域抽样定理可视化界面搭建 2.1 时域抽样定理原理 2.2核心代码实现 2.3界面设计与操作 全部代码:https://download. ...

最新文章

  1. POJ-1041 John's trip
  2. 乱思。。。。。。。、、、、、
  3. 使用java spring开发ckeditor的文件上传功能(转)
  4. Struts2.xml
  5. uniny 物体运动到一个点停止_Unity3D中的逐点运动
  6. chrom禁用浏览器回退按钮不管用_什么?作为程序员你都工作了还不会用Git
  7. Math.random()获取随机数
  8. 初识人工智能(一):数据分析(二):numpy科学计算基础库(一)
  9. javascript的Foreach语法
  10. 60-400-045-使用-binlog-Maxwell读取MySQL binlog日志到Kafka
  11. java小数换成字符实现加法_第一、二次笔记总结
  12. Component creation must be done on Event Dispatch Thread错误解决方法
  13. jsp中文乱码现象解决办法
  14. TextCNN文本分类实践
  15. c语言人民日报排版的代码,人民日报都在玩的排版黑科技,教你1分钟上手!
  16. python判断手机号运营商_如何判断手机号的运营商那?
  17. mysql alter index rebuild_Oracle alter index rebuild 说明
  18. 地磁基本知识(二)地磁异常
  19. 沈航计算机考研专业课,2018年沈阳航空航天大学计算机学院811操作系统之计算机操作系统考研基础五套测试题...
  20. jQuery中的end()方法

热门文章

  1. d3dcompiler_43.dll的错误怎么解决?
  2. 华为暂缓校招,解散校招群,冲上热搜,引发应届生强烈不满!
  3. python脚本抢优惠券_Python写京东抢券小工具
  4. 微信公众平台开发(5)--验证消息的确来自微信服务器
  5. SJA1000的调试经历【转】
  6. Python基础1:数据类型、序列
  7. 中国食品加工用酶市场趋势报告、技术动态创新及市场预测
  8. 对话机器人在瓜子的实践
  9. 【调剂】拟接收调剂——安徽工业大学冶金工程学院炼铁新技术研究所
  10. 秋招面经第十一弹:沐瞳科技一面-大数据平台开发工程师