标题: MATLAB,GUI 上位机接收到下位机数据,解包后输出波形(以脉搏波和袖带压为例) [打印本页] 作者: haidaowang 时间: 2020-6-18 15:42 标题: MATLAB,GUI 上位机接收到下位机数据,解包后输出波形(以脉搏波和袖带压为例) 步骤一:串口设置$ V2 ]% w! V$ l/ I g0 {& H4 d0 u2 a
上位机和下位机实现数据传输是通过串口,以下是串口设置的内容(当然了,这部分都是基于GUI界面已经画好之后的设置)其中还有一个“打开串口”按钮未作说明,“打开串口”的响应函数中可以设置调用解包函数句柄。, v# L W( v h. J3 J* h
% @% z# u$ p$ | I2 j2 l$ vmovegui(handles.figure1,'center');%将图窗移动到屏幕上的指定位置0 ] T1 O1 M7 l4 C7 a" U8 c
%movegui(h,position) 将图窗 h 移到指定的屏幕位置并保持图窗的大小。 * p. m$ N5 i! D8 nset(handles.popupmenu2,'string',{'4800','9600','14400','19200','38400','57600','76800','115200'});1 F7 N7 `# A6 s1 G
set(handles.popupmenu3,'string',{'8','9'});! }7 B7 t1 h/ Q6 I$ D
set(handles.popupmenu4,'string',{'1','1.5','2'});# d6 L5 b- B; Q- z
set(handles.popupmenu5,'string',{'NONE','ODD','EVEN'});) ~; }) e4 T: n& ], c9 b* Y: v+ b
set(handles.pushbutton1,'String','打开串口');; ], b! d/ [% O; b2 n- r" n. ?, P
Ports = instrhwinfo('serial');$ Q o+ `* n/ S+ e3 A' Y
port_num = length(Ports.AvailableSerialPorts);$ v* h7 ^8 @3 Y5 X; B
ports_sum = ''; ) c; W$ j4 U: Q" h- \if port_num > 0% Q5 Z" t L( `% ]: N, N
for i=1:port_num ) B% M3 J3 K( b$ b# K# b( C ports_sum = [ports_sum,Ports.AvailableSerialPorts(i)]; 8 N7 v" H$ d) H4 g- Z) | end . c4 P8 A/ d2 z/ Welse , }4 @" p1 v5 H) H ports_sum ='None'; * m' H# i+ t) ]end & T+ S3 B" h) k( m# c- Fset(handles.popupmenu1,'string',ports_sum);" P& Z/ {. n# A( Y( l, N# B; \
F% q& L9 y+ R0 X 7 I# I; i8 c+ S2 R9 _步骤二:设置解包函数5 P; Z( E) j5 L" H0 m
当数据发上来后,要及时对数据进行解包,并通过数据传输协议进行数据处理,这一步是关键,解包的思路好坏将关系到程序的执行能力和图像的呈现。因为打包解包这个函数每个工程有自己独特的方式,此处仅截图。3 C6 V. n5 l; A$ E. D, ?