串口采集数据表格显示.docx
- 文档编号:25711695
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:11
- 大小:19.30KB
串口采集数据表格显示.docx
《串口采集数据表格显示.docx》由会员分享,可在线阅读,更多相关《串口采集数据表格显示.docx(11页珍藏版)》请在冰豆网上搜索。
串口采集数据表格显示
竭诚为您提供优质文档/双击可除
串口采集数据,表格显示
篇一:
基于matlab实时串口数据采集与曲线显示
全日制普通本科生毕业设计
基于matlab实时串口数据采集与曲线显示Real-timeseRialdataacquisitionandFiguReshow
basedonmatlab
学生姓名:
学号:
年级专业及班级:
指导老师及职称:
学院:
提交日期:
20xx年5月
全日制普通本科生毕业论文(设计)
诚信声明
本人郑重声明:
所呈交的本科毕业论文(设计)是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。
除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。
对本文的研究做出重要贡献的个人和集体在文中均作了明确的说明并表示了谢意。
本人完全意识到本声明的法律结果由本人承担。
毕业论文(设计)作者签名:
年月日
目录
摘要1关键词11前言2
1.1matlab实时串口数据采集研究现状及发展趋势2
1.2研究的目的和意义4
1.3论文的组织结构52matlab下实时串口数据采集概要5
2.1matlab的serial类5
2.2数据采集6
2.3曲线显示73实时串口数据采集与曲线显示的实现8
3.1实时串口通信的实现8
3.2数据采集的实现9
3.3曲线显示gui的实现104基于matlab的实时串口数据采集与曲线显示的具体做法12
4.1数据采集的一般流程12
4.1.1创建接口对象并设置属性12
4.1.2打开串口设备对象12
4.1.3读写串口操作13
4.1.4关闭并清除设备对象13
4.2基于matlab中断方式的实时串行通信编程13
4.3绘制采集数据的曲线波形和数据显示14
4.3.1绘制曲线波形14
4.3.2数据显示15
4.3.3采集图像15
4.4扩展功能——发送数据175结论17参考文献18致谢19
附录19附录120
基于matlab实时串口数据采集与曲线显示
摘要:
数据采集是获取信息的基本手段,数据采集技术作为信息科学的一个重要分支,它研究信息数据的采集、存储、处理及控制等作业,具有很强的实用性,与传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术。
本设计是在matlabR20xxa版本中以串口通信实时接收目标系统数据,将采集的数据进行时间同步和字对齐处理,并在matlab的数据采集工具箱支持下,利用图形界面gui的设计,直观的实时显示数据曲线。
设计得重点在于在matlab上实现串口数据同步采集与处理,接收数据的时间同步和字对齐,同时扩展了发送数据的功能。
关键词:
matlab;gui;实时串口;数据采集;曲线显示;
Real-timeserialdataacquisitionandFigureshowbasedonmatlab
abstract:
dataacquisitionisthebasicmeansofaccesstoinformation,thistechnologyasanimportantbranchofinformationscience,researchinformationdatacollection,storage,treatmentandcontroloperations,andhighlypractical.dataacquisitiontechnologywithsensordataacquisition,signalmeasurementandprocessing,micro-computersandothertechnologyformedthebasisofacomprehensiveapplicationtechnology.thisdesignversionusematlabR20xxaserialcommunicationtothetargetsystemtoreceivereal-timedata,thedatawillbecollectedfortimesynchronizationandwordalignments,andmatlab’sdataacquisitiontoolboxinsupportofusingthegraphicaluserinterfaceguidesign,intuitivedisplayreal-timedatacurve.Focusdesignedtoachievethematlabserialdatasynchronizationacquisitionandprocessing,receivedatasynchronizationandwordalignment,expandingthefunctionofsendingdata..keywords:
matlab;gui;Real-timeserial;dataacquisition;Figureshow;
1前言
1.1matlab实时串口数据采集研究现状及发展趋势
随着科学技术的发展,数据采集系统得到了越来越广泛得应用,同时人们对数据采集系统的各项技术指标,如:
采样率、线性度、精度、输入范围、控制方法以及抗干扰能力等提出了越来越高的要求,特别是精度和采样率更是使用者和设计者所共同
1
篇二:
vc实现数据采集仪串口数据存入excel模板
//scommtestdlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"scommtest.h"
#include"scommtestdlg.h"
#include"excel9.h"
#include"comdef.h"
#include"math.h"
#include"io.h"
#ifdef_debug
#definenewdebug_new
#undefthis_File
staticcharthis_File[]=__File__;
#endif
/////////////////////////////////////////////////////////////////////////////
//caboutdlgdialogusedforappabout
classcaboutdlg:
publiccdialog
{
public:
caboutdlg();
//dialogdata
//{{aFx_data(caboutdlg)
enum{idd=idd_aboutbox};
//}}aFx_data
//classwizardgeneratedvirtualfunctionoverrides
//{{aFx_ViRtual(caboutdlg)
protected:
virtualvoiddodataexchange(cdataexchange*pdx);
//}}aFx_ViRtual
//implementation
protected:
//{{aFx_msg(caboutdlg)
//}}aFx_msg
declaRe_message_map()
};
caboutdlg:
:
caboutdlg():
cdialog(caboutdlg:
:
idd)
{//ddx/ddVsupport
//{{aFx_data_init(caboutdlg)
//}}aFx_data_init
}
voidcaboutdlg:
:
dodataexchange(cdataexchange*pdx)
{
cdialog:
:
dodataexchange(pdx);
//{{aFx_data_map(caboutdlg)
//}}aFx_data_map
}
begin_message_map(caboutdlg,cdialog)
//{{aFx_msg_map(caboutdlg)
//nomessagehandlers
//}}aFx_msg_map
end_message_map()
/////////////////////////////////////////////////////////////////////////////
//cscommtestdlgdialog
cscommtestdlg:
:
cscommtestdlg(cwnd*pparent/*=null*/)
:
cdialog(cscommtestdlg:
:
idd,pparent)
{
//{{aFx_data_init(cscommtestdlg)
m_strRxdata=_t("");
m_strcurpath=_t("");
//}}aFx_data_init
//notethatloadicondoesnotrequireasubsequentdestroyiconinwin32
m_hicon=afxgetapp()->loadicon(idR_mainFRame);
}
voidcscommtestdlg:
:
dodataexchange(cdataexchange*pdx)
{
cdialog:
:
dodataexchange(pdx);
//{{aFx_data_map(cscommtestdlg)
ddx_control(pdx,idc_edit_cuRpath,m_ctrlsavepath);
ddx_text(pdx,idc_edit_Rxdata,m_strRxdata);
ddx_control(pdx,idc_mscomm1,m_ctrlcomm);
ddx_text(pdx,idc_edit_cuRpath,m_strcurpath);
//}}aFx_data_map
}
begin_message_map(cscommtestdlg,cdialog)
//{{aFx_msg_map(cscommtestdlg)
on_wm_syscommand()
on_wm_paint()
on_wm_queRydRagicon()
on_bn_clicked(idc_button_onbuttonsaVedata,onbuttonsavedata)on_bn_clicked(idc_button_secbutton,onbuttonsecbutton)
//}}aFx_msg_map
end_message_map()
/////////////////////////////////////////////////////////////////////////////
//cscommtestdlgmessagehandlers
boolcscommtestdlg:
:
oninitdialog()
{
cdialog:
:
oninitdialog();
//add"about..."menuitemtosystemmenu.
//idm_aboutboxmustbeinthesystemcommandrange.
asseRt((idm_aboutbox
asseRt(idm_aboutbox cmenu*psysmenu=getsystemmenu(False);
if(psysmenu!
=null)
{
cstringstraboutmenu;
straboutmenu.loadstring(ids_aboutbox);
if(!
straboutmenu.isempty())
{
psysmenu->appendmenu(mF_sepaRatoR);
psysmenu->appendmenu(mF_stRing,idm_aboutbox,straboutmenu);}
}
//settheiconforthisdialog.theframeworkdoesthisautomatically
//whentheapplicationsmainwindowisnotadialog
seticon(m_hicon,tRue);//setbigicon
seticon(m_hicon,False);//setsmallicon
//todo:
addextrainitializationhere
if(m_ctrlcomm.getportopen())
m_ctrlcomm.setportopen(False);
m_ctrlcomm.setcommport
(1);//选择com1
if(!
m_ctrlcomm.getportopen())
m_ctrlcomm.setportopen(tRue);//打开串口
else
afxmessagebox("cannotopenserialport");
m_ctrlcomm.setsettings("9600,n,8,1");//波特率9600,无校验,8个数据位,1个停止位m_ctrlcomm.setinputmode
(1);//1:
表示以二进制方式检取数据
m_ctrlcomm.setRthreshold
(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的oncomm事件
m_ctrlcomm.setinputlen(0);//设置当前接收区数据长度为0
m_ctrlcomm.getinput();//先预读缓冲区以清除残留数据
returntRue;//returntRueunlessyousetthefocustoacontrol
}
voidcscommtestdlg:
:
onsyscommand(uintnid,lpaRamlparam)
{
if((nid
dlgabout.domodal();
}
else
{
cdialog:
:
onsyscommand(nid,lparam);
}
}
//ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.FormFcapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidcscommtestdlg:
:
onpaint()
{
if(isiconic())
{
cpaintdcdc(this);//devicecontextforpainting
sendmessage(wm_iconeRasebkgnd,(wpaRam)dc.getsafehdc(),0);
//centericoninclientrectangle
intcxicon=getsystemmetrics(sm_cxicon);
intcyicon=getsystemmetrics(sm_cyicon);
cRectrect;
getclientRect(
intx=(rect.width()-cxicon+1)/2;
inty=(rect.height()-cyicon+1)/2;
//drawtheicon
dc.drawicon(x,y,m_hicon);
}
else
{
cdialog:
:
onpaint();
}
}
//thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
hcuRsoRcscommtestdlg:
:
onquerydragicon()
{
return(hcuRsoR)m_hicon;
}
begin_eVentsink_map(cscommtestdlg,cdialog)
//{{aFx_eVentsink_map(cscommtestdlg)
on_eVent(cscommtestdlg,idc_mscomm1,1/*oncomm*/,oncomm,Vts_none)
//}}aFx_eVentsink_map
end_eVentsink_map()
voidcscommtestdlg:
:
oncomm()
{
//todo:
addyourcontrolnotificationhandlercodehere
VaRiantvariant_inp;
colesafearraysafearray_inp;
longlen,k;
byterxdata[2048];//设置byte数组an8-bitintegerthatisnotsigned.
cstringstrtemp;
if(m_ctrlcomm.getcommevent()==2)//事件值为2表示接收缓冲区内有字符
{////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlcomm.getinput();//读缓冲区
safearray_inp=variant_inp;//VaRiant型变量转换为colesafearray型变量len=safearray_inp.getonedimsize();//得到有效数据长度
for(k=0;k safearray_inp.getelement(//转换为byte型数组
for(k=0;k {
bytebt=*(char*)(rxdata+k);//字符型
strtemp.Format("%c",bt);//将字符送入临时变量strtemp存放
m_strRxdata+=strtemp;//加入接收编辑框对应字符串
篇三:
vb串口数据采集及曲线动态显示
串口数据采集及曲线动态显示
这个程序主要用到了串口通信和曲线画图
一.主要控件
msomm控件一个,两个timer控件,textbox控件,combo控件,picture控件,command控件
二.实现的功能能
1.串口采集数据
2.用曲线动态显示数据
3.显示时间
4.鼠标点击读数(确定所点击位置的横纵坐标)
三.界面
四.程序
dimtasVariant
dimcasVariant
dimyasinteger
privatedeclaresub
sleeplib"kernel32"(byValdwmillisecondsaslong)api,用sleep实现延时
延时函数
Functiondelay(number)
callsleep(number)
doevents
endFunction
privatesubcombo1_click()选择端口
ifcombo1.text="com1"then
mport=1
elseifcombo1.text="com2"then
elseifcombo1.text="com3"then
mport=3
elseifcombo1.text="com4"then
mport=4
else
mport=5
endif
endsub
privatesubcommand3_click()停止采集
timer2.enabled=False
mscomm1.portopen=False
command2.caption="打开串口"
endsub
privatesubForm_load()初始化
mscomm1.settings="9600,n,8,1"
mscomm1.inputmode=0
mscomm1.Rthreshold=1
mscomm1.sthreshold=0
mscomm1.inbuffersize=1024
mscomm1.outbuffersize=512
mscomm1.inbuffercount=0
mscomm1.outbuffercount=0
combo1.additem"com1"
combo1.additem"com2"
combo1.additem"com3"
combo1.additem"com4"
combo1.additem"com5"
picture1.scale(-100,100)-(100,-100)
command1.caption="采集数据"
command2.caption="打开串口"
timer1.interval=1000
timer2.interval=1000
timer2.enabled=False
endsub
privatesubcommand2_click()
ifcommand2.caption="打开串口"then
mscomm1.portopen=true
command2.caption="关闭串口"
elseifcommand2.caption="关闭串口"then
command2.caption="打开串口"
endif
endsub
privatesubmscomm1_oncomm()触发事件
ifmscomm1.inbuffercount>0then
text4.text=mscomm1.input
c=Val(text4.text)
delay(20)
endif
endsub
privatesubdraw()
picture1.Fontsize="15"设置字体大小
picture1.drawwidth=1
picture1.Forecolor=qbcolor(12)
picture1.cls
picture1.line(-88,-88)-(-88,88)纵坐标
picture1.line(-89,86)-(-88,88)纵坐标箭头及y值
picture1.line(-87,86)-(-88,88)
picture1.pset(-86,88)
picture1.print"y"
picture1.line(-88,0)-(88,0)横坐标
picture1.li
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 采集 数据 表格 显示