Matlab控制DA输出
最近需要利用Matlab控制模拟量输出板(支持标准modbus指令)输出电压信号,因此顺便学习一下利用Matlab GUI创建用户界面,串口通信等知识。
Matlab GUI创建用户界面
通过以下两种方式可新建GUI:
(1)输入命令:guide;
(2)点击"新建"——>“图形用户界面”;
根据实际需要选择相应的模板,笔者这里直接选择默认的“Blank GUI”,保存后会得到一个.fig和一个.m文件。.fig是用户界面窗口定义文件,.m是源程序文件。
在界面窗口的左侧控件区域,选择相应控件拖动到右侧网格区域,安排好布局。
创建的界面如下:
双击控件或者在控件上右键“属性检查器”,对控件进行属性设置,一般只需设置“String”和“Tag”属性。“String”我理解为该控件显示在GUI界面中的字符/字符串,“Tag”是每个控件的唯一标识。
OpeningFcn(hObject, eventdata, handles, varargin)函数会在窗口可见之前执行,可以进行一些预操作,本文的代码
如下:
% --- Executes just before RS232_2019_5_20 is made visible.
function RS232_2019_5_20_OpeningFcn(hObject, eventdata, handles, varargin)
global data1;
global data2;
data1=0;
data2=0;
global COM;
global rate;
COM='COM4'; %打开GUI界面时默认是COM4
rate=9600;
set(handles.mCOM,'value', 4);
set(handles.mBaudRates,'value',1);
set(handles.mCloseSerial,'Enable','off'); %“关闭串口”不可见
set(handles.mDAOutput,'Enable','off'); %“DA输出”不可见
set(handles.mDA1Edit,'Enable','off');
set(handles.mDA2Edit,'Enable','off');
Matlab中通过回调函数(Callback Function)来对事件进行响应。在控件上右键“查看回调”——>“Callback”,可跳转到.m源文件中该控件相应的回调函数位置,在这里对事件进行响应处理即可。
例如本文中“打开串口”的回调函数如下:
% --- Executes on button press in mOpenSerial.
function mOpenSerial_Callback(hObject, eventdata, handles)
clc
instrreset
global s;
global rate;
global COM;
global outdec;
global outhex;
global outstr;
s=serial(COM); %创建串口对象,并用s标识
set(s,'BaudRate',rate,'DataBits',8,'StopBits',1,'Parity','None',