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

来源:读后感 发布时间:2020-05-17 21:05:12 点击:
一 用VB DDE通讯 二 1.启动excel从工具--宏--Visual Basic 编辑器,打开excel VBA. 2.在ThisWorkbook上右单击鼠标选择插入--用户窗体 3.单击一下插入的窗体,单击菜单上的--工具--附加控件--选择Microsoft Communications Control, version 6.0 4.在窗体上添加mscomm1,添加commandButton1 5.单串口机子,短接rs232的2脚和3脚,双串口机子用232线连接两个串口,注意2、3线交叉,我这里以单串口短接举例。

6.复制以下代码到你的窗体里 VB code VBA代码 Private Sub CommandButton1_Click MSComm1.Output “BEG1END“ End Sub Private Sub MSComm1_OnComm Dim t1 As Long, com_String As String Static i As Integer t1 Timer Select Case MSComm1.CommEvent Case comEvReceive 收到 RThreshold定义的字符数1字节 MSComm1.RThreshold 0 Do DoEvents Loop While Timer - t1 255 Then i 1 Application.Cells3, i.Value com_String End Select ActiveWorkbook.SaveAs Filename“C\d1.xls“ End Sub Private Sub iniMscomm On Error Resume Next -----初始化通信串口----- MSComm1.CommPort 1 使用 COM1 MSComm1.Settings “9600,N,8,1“ 9600 波特,无奇偶校验,8 位数据,一个停止位 MSComm1.PortOpen True 打开端口 MSComm1.RThreshold 1 缓冲区有1个字节就产生OnComm事件 MSComm1.Len 0 为 0 时,使用 将使 MSComm 控件读取接收缓冲区中全部的内容。

MSComm1.Mode comModeText以二进制形式取回用comModeBinary,以文本形式取回是(缺省项) MSComm1.RTSEnable True MSComm1.InBufferCount 0 清空缓冲区 End Sub Private Sub User_Initialize iniMscomm End Sub 7.双击thisWorkBook,复制以下代码到窗体里 VB code VBA代码 Private Sub Workbook_Open User1.Show 0 User1.Hide End Sub 8.保存文件并关闭excel,然后再打开你的文件,然后单击你窗体上的按钮看看。

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

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

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

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

如果存成txt再打包可以的话, Perl简单些,不熟悉的人3天也能做出来. SpreadsheetWriteExcel 和 SpreadsheetParseExcel 四 Excel VBA串口通信 2010-01-27 1641 1466人阅读 评论0 收藏 举报 用c也可以实现这种功能,那就是用serialPort控件,这里用VBA写的,用MSComm控件实现。其实还有另外一个控件叫NETComm控件,也可以做,源码中注释很清楚,不再赘述 [vbshowcolumnsfirstline[1]] view plaincopyprint 102030405060708090100110120130140150 1. PrivateSubbtn_Close_Click 2. MSComm1.PortOpenFalse打开串口 3. btn_Start.EnabledTrue连接按钮响应 4. btn_Close.EnabledFalse断开按钮变灰 5. EndSub 6. 7. PrivateSubbtn_exit_Click 8. IfMSComm1.PortOpenTrueThen如果串口被打开 9. MSComm1.PortOpenFalse关闭按钮 10. EndIf 11. UnloadUser1关闭窗体 12. EndSub 13. 14. PrivateSubbtn_Start_Click 15. iniMSComm对串口控件设置 16. MSComm1.PortOpenTrue 17. btn_Close.EnabledTrue 18. btn_Start.EnabledFalse 19. EndSub 20. 21. PrivateSubiniMSComm对串口控件设置 22. MSComm1.CommPort1占用的串口号,1表示COM1 23. MSComm1.Settings“115200,n,8,1“这个自己根据自己的情况设置 24. 25. MSComm1.RThreshold1 26. MSComm1.Len0 27. MSComm1.PortOpenTrue这句话放到连接按钮事件中去 28. MSComm1.ModecomModeText 29. MSComm1.RTSEnableTrue 30. MSComm1.InBufferCount0 31. EndSub 32. 33. PrivateSubMSComm1_OnComm事件处理 34. Dimt1AsLong,com_stringAsString 35. StaticiAsInteger 36. t1Timer 37. SelectCaseMSComm1.CommEvent 38. CasecomEvReceive 如果接收到数据则执行下列语句 39. MSComm1.RThreshold0 40. Do 41. DoEvents 42. LoopWhileTimer-t1255Theni1 46. Application.Cells3,i.Valuecom_string写到Excel中去 47. txtRec.TexttxtRec.Textcom_string写到文本框中去 48. EndSelect 49. EndSub 五 VBA的妙用串口通讯程序与EXCEL相结合 发布时间2010-3-11发布者北京世纪长秋科技有限公司 1 VBA简介 Visual Basic的应用程序版(VBA)是Microsoft公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。在没有VBA以前,一些应用软件如Excel、Word、Access、Project等都采用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门去学习,它们之间互不兼容,使得应用软件之间不能在程序上互联。拥有一种可跨越多个应用软件,使各应用软件产品具有高效、灵活且一致性的开发工具是至关重要的。VBA作为一种新一代的标准宏语言,具有上述跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计人员仅需学习一种统一的标准宏语言,就可以转换到特定的应用软件上去,程序设计人员在编程和调试代码时所看到的是相同的用户界面,而且VBA与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。有了VBA以后,多种应用程序共用一种宏语言,节省了程序人员的学习时间,提高了不同应用软件间的相互开发和调用能力。

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

上位机向串口发送读命令之后需要等待下位机应答并读取回复信息,常用的等待有3种方式 1) 轮询式 上位机向串口发送读命令之后一直等待下位机应答,通讯程序处于一个等待循环中。

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

缺点消耗CPU。(解决办法使用Slee

推荐访问:屋顶 屋顶 屋顶
上一篇:2020高考数学(文)二轮复习2命题及其关系、充分条件与必要条件Word版含解析
下一篇:最后一页

Copyright @ 2013 - 2018 韩美范文网- 精品教育范文网 All Rights Reserved

韩美范文网- 精品教育范文网 版权所有 湘ICP备11019447号-73