欢迎来到天天文库
浏览记录
ID:9879680
大小:136.50 KB
页数:10页
时间:2018-05-13
《将串口接收到的数据保存到excel文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《一》用VBDDE通讯!《二》1.启动excel从:工具-->宏-->VisualBasic编辑器,打开excelVBA.2.在ThisWorkbook上右单击鼠标选择插入--用户窗体3.单击一下插入的窗体,单击菜单上的--工具--附加控件--选择MicrosoftCommunicationsControl,version6.04.在窗体上添加mscomm1,添加commandButton15.单串口机子,短接rs232的2脚和3脚,双串口机子用232线连接两个串口,注意2、3线交叉,我这里以单串口短接举例。6.复制以下
2、代码到你的窗体里:VBcode'VBA代码PrivateSubCommandButton1_Click() MSComm1.Output="BEG1END"EndSubPrivateSubMSComm1_OnComm() Dimt1AsLong,com_StringAsString StaticiAsInteger t1=Timer SelectCaseMSComm1.CommEvent CasecomEvReceive'收到RThreshold定义的字符数1字节 MSComm1.RTh
3、reshold=0 Do DoEvents LoopWhileTimer-t1<0.1'延时时间自己调整 com_String=MSComm1.Input MSComm1.RThreshold=1 i=i+1:Ifi>255Theni=1 Application.Cells(3,i).Value=com_String EndSelect 'ActiveWorkbook.SaveAsFilename:="C:d1.xls"EndSubP
4、rivateSubiniMscomm() 'OnErrorResumeNext'=====-----初始化通信串口-----===== MSComm1.CommPort=1 '使用COM1 MSComm1.Settings="9600,N,8,1" '9600波特,无奇偶校验,8位数据,一个停止位 MSComm1.PortOpen=True '打开端口 MSComm1.RThreshold=1 '缓冲区有1个字节就产生OnCom
5、m事件 MSComm1.InputLen=0 '为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。 MSComm1.InputMode=comInputModeText 'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项) MSComm1.RTSEnable=True MSComm1.InBufferCount=0 '清空缓冲区 EndSubPrivateSubUserForm_Initialize(
6、) iniMscommEndSub7.双击thisWorkBook,复制以下代码到窗体里:VBcode'VBA代码PrivateSubWorkbook_Open() UserForm1.Show0 'UserForm1.HideEndSub8.保存文件并关闭excel,然后再打开你的文件,然后单击你窗体上的按钮看看。9.这个程序是我为你特意做的,已经做过测试,sys2003office2003。10.如果excel中有数据输入,再去测试你的设置,注意com口号与波特率的设置。《三》markexcel串口还有一个办法
7、就是用任何编程,只需将收到的数据用csv文件的格式,生成一个文本文件,然后就可以用excel打开了。这个方法适合于任何语言,只要能生成文本文件就可以了。如果存成txt再打包可以的话,Perl简单些,不熟悉的人3天也能做出来.Spreadsheet::WriteExcel和Spreadsheet::ParseExcel《四》ExcelVBA串口通信2010-01-2716:411466人阅读评论(0)收藏举报用c#也可以实现这种功能,那就是用serialPort控件,这里用VBA写的,用MSComm控件实现。其实还有另外一
8、个控件叫NETComm控件,也可以做,源码中注释很清楚,不再赘述[vb:showcolumns:firstline[1]]viewplaincopyprint?·········10········20········30········40········50········60········70········
此文档下载收益归作者所有