将串口接收到的数据保存到EXCEL文档.docx

上传人:b****4 文档编号:1040908 上传时间:2022-10-15 格式:DOCX 页数:10 大小:98.33KB
下载 相关 举报
将串口接收到的数据保存到EXCEL文档.docx_第1页
第1页 / 共10页
将串口接收到的数据保存到EXCEL文档.docx_第2页
第2页 / 共10页
将串口接收到的数据保存到EXCEL文档.docx_第3页
第3页 / 共10页
将串口接收到的数据保存到EXCEL文档.docx_第4页
第4页 / 共10页
将串口接收到的数据保存到EXCEL文档.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

将串口接收到的数据保存到EXCEL文档.docx

《将串口接收到的数据保存到EXCEL文档.docx》由会员分享,可在线阅读,更多相关《将串口接收到的数据保存到EXCEL文档.docx(10页珍藏版)》请在冰豆网上搜索。

将串口接收到的数据保存到EXCEL文档.docx

将串口接收到的数据保存到EXCEL文档

《一》

用VBDDE通讯!

《二》

1.启动excel从:

工具-->宏-->VisualBasic编辑器,打开excelVBA.

2.在ThisWorkbook上右单击鼠标选择插入--用户窗体

3.单击一下插入的窗体,单击菜单上的--工具--附加控件--选择MicrosoftCommunicationsControl,version6.0

4.在窗体上添加mscomm1,添加commandButton1

5.单串口机子,短接rs232的2脚和3脚,双串口机子用232线连接两个串口,注意2、3线交叉,我这里以单串口短接举例。

6.复制以下代码到你的窗体里:

VBcode

'VBA代码

PrivateSubCommandButton1_Click()

  MSComm1.Output="BEG1END"

EndSub

PrivateSubMSComm1_OnComm()

  Dimt1AsLong,com_StringAsString

  StaticiAsInteger

  t1=Timer

  

  SelectCaseMSComm1.CommEvent

    CasecomEvReceive'收到RThreshold定义的字符数1字节

        MSComm1.RThreshold=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.SaveAs"C:

\d1.xls"

EndSub

PrivateSubiniMscomm()

  'OnErrorResumeNext

'=====-----初始化通信串口-----=====

  MSComm1.CommPort=1              '使用COM1

  MSComm1.Settings="9600,N,8,1"      '9600波特,无奇偶校验,8位数据,一个停止位

  MSComm1.PortOpen=True            '打开端口

  

  MSComm1.RThreshold=1            '缓冲区有1个字节就产生OnComm事件

  MSComm1.InputLen=0              '为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。

  

  MSComm1.InputMode=comInputModeText  'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)

  MSComm1.RTSEnable=True

  MSComm1.InBufferCount=0          '清空缓冲区

  

EndSub

PrivateSubUserForm_Initialize()

  iniMscomm

EndSub

7.双击thisWorkBook,复制以下代码到窗体里:

VBcode

'VBA代码

PrivateSubWorkbook_Open()

  UserForm1.Show0

  'UserForm1.Hide

EndSub

8.保存文件并关闭excel,然后再打开你的文件,然后单击你窗体上的按钮看看。

9.这个程序是我为你特意做的,已经做过测试,sys2003office2003。

10.如果excel中有数据输入,再去测试你的设置,注意com口号与波特率的设置。

《三》

markexcel串口

 

还有一个办法就是用任何编程,只需将收到的数据用csv文件的格式,生成一个文本文件,然后就可以用excel打开了。

这个方法适合于任何语言,只要能生成文本文件就可以了。

 

如果存成txt再打包可以的话,Perl简单些,不熟悉的人3天也能做出来.

Spreadsheet:

:

WriteExcel和Spreadsheet:

:

ParseExcel

《四》

ExcelVBA串口通信

2010-01-2716:

411466人阅读评论(0)收藏举报

用c#也可以实现这种功能,那就是用serialPort控件,这里用VBA写的,用MSComm控件实现。

其实还有另外一个控件叫NETComm控件,也可以做,源码中注释很清楚,不再赘述

[vb:

showcolumns:

firstline[1]]viewplaincopyprint?

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

1.Private Sub btn_Close_Click()  

2.MSComm1.PortOpen = False '打开串口  

3.btn_Start.Enabled = True '连接按钮响应  

4.btn_Close.Enabled = False '断开按钮变灰  

5.End Sub  

6.  

7.Private Sub btn_exit_Click()  

8.If MSComm1.PortOpen = True Then '如果串口被打开  

9.    MSComm1.PortOpen = False '关闭按钮  

10.End If  

11.Unload UserForm1 '关闭窗体  

12.End Sub  

13.  

14.Private Sub btn_Start_Click()  

15.iniMSComm '对串口控件设置  

16.MSComm1.PortOpen = True  

17.btn_Close.Enabled = True  

18.btn_Start.Enabled = False  

19.End Sub  

20.  

21.Private Sub iniMSComm() '对串口控件设置  

22.MSComm1.CommPort = 1 '占用的串口号,1表示COM1  

23.MSComm1.Settings = "115200,n,8,1" '这个自己根据自己的情况设置  

24.  

25.MSComm1.RThreshold = 1  

26.MSComm1.InputLen = 0  

27.'MSComm1.PortOpen = True'这句话放到连接按钮事件中去  

28.MSComm1.InputMode = comInputModeText  

29.MSComm1.RTSEnable = True  

30.MSComm1.InBufferCount = 0  

31.End Sub  

32.  

33.Private Sub MSComm1_OnComm() '事件处理  

34.Dim t1 As Long, com_string As String  

35.Static i As Integer  

36.t1 = Timer  

37.Select Case MSComm1.CommEvent  

38.    Case comEvReceive '如果接收到数据则执行下列语句  

39.        MSComm1.RThreshold = 0  

40.        Do  

41.            DoEvents  

42.        Loop While Timer - t1 < 0.1  

43.        com_string = MSComm1.Input  

44.        MSComm1.RThreshold = 1  

45.        i = i + 1:

 If i > 255 Then i = 1  

46.        Application.Cells(3, i).Value = com_string '写到Excel中去  

47.        txtRec.Text = txtRec.Text + com_string '写到文本框中去  

48.End Select  

49.End Sub  

《五》

VBA的妙用:

串口通讯程序与EXCEL相结合

发布时间:

2010-3-11    发布者:

北京世纪长秋科技有限公司

1VBA简介

  VisualBasic的应用程序版(VBA)是Microsoft公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft可编程应用软件所共享。

在没有VBA以前,一些应用软件如Excel、Word、Access、Project等都采用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门去学习,它们之间互不兼容,使得应用软件之间不能在程序上互联。

拥有一种可跨越多个应用软件,使各应用软件产品具有高效、灵活且一致性的开发工具是至关重要的。

VBA作为一种新一代的标准宏语言,具有上述跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计人员仅需学习一种统一的标准宏语言,就可以转换到特定的应用软件上去,程序设计人员在编程和调试代码时所看到的是相同的用户界面,而且VBA与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。

有了VBA以后,多种应用程序共用一种宏语言,节省了程序人员的学习时间,提高了不同应用软件间的相互开发和调用能力。

2串口通讯程序

  简单的串口通讯程序一般是先由上位机向下位机发送读(write)或写(read)数据命令,然后等待下位机应答;下位机接受到命令之后,首先要对数据命令进行校验,对于符合校验约束的命令下位机会将相应的数据回复到上位机,对于不符合校验约束的命令下位机或将其抛弃或回复错误信息;上位机接收到下位机的响应之后,首先要对接收到的回复信息进行校验,对不符合校验约束的数据进行异常处理,对符合校验约束的信息进行解码,解码之后的信息便是上位机从下位机获得的有效信息了。

  上位机向串口发送读命令之后需要等待下位机应答并读取回复信息,常用的等待有3种方式:

1)轮询式

  上位机向串口发送读命令之后一直等待下位机应答,通讯程序处于一个等待循环中。

  优点:

速度快、误码率低(几乎不存在误码)。

  缺点:

消耗CPU。

(解决办法:

使用Sleep()API函数)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1