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

上传人:b****4 文档编号:7673937 上传时间:2023-05-08 格式:DOCX 页数:13 大小:98.18KB
下载 相关 举报
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第1页
第1页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第2页
第2页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第3页
第3页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第4页
第4页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第5页
第5页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第6页
第6页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第7页
第7页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第8页
第8页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第9页
第9页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第10页
第10页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第11页
第11页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第12页
第12页 / 共13页
将串口接收到的数据保存到EXCEL文档Word文件下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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"

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 

清空缓冲区

PrivateSubUserForm_Initialize()

iniMscomm

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

PrivateSubWorkbook_Open()

UserForm1.Show0

UserForm1.Hide

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 

断开按钮变灰 

5.End 

6. 

7.Private 

btn_exit_Click() 

8.If 

MSComm1.PortOpen 

Then 

如果串口被打开 

9. 

关闭按钮 

10.End 

If 

11.Unload 

UserForm1 

关闭窗体 

12.End 

13. 

14.Private 

btn_Start_Click() 

15.iniMSComm 

对串口控件设置 

16.MSComm1.PortOpen 

17.btn_Close.Enabled 

18.btn_Start.Enabled 

19.End 

20. 

21.Private 

iniMSComm() 

22.MSComm1.CommPort 

占用的串口号,1表示COM1 

23.MSComm1.Settings 

"

115200,n,8,1"

这个自己根据自己的情况设置 

24. 

25.MSComm1.RThreshold 

26.MSComm1.InputLen 

27.'

True'

这句话放到连接按钮事件中去 

28.MSComm1.InputMode 

comInputModeText 

29.MSComm1.RTSEnable 

30.MSComm1.InBufferCount 

31.End 

32. 

33.Private 

MSComm1_OnComm() 

事件处理 

34.Dim 

t1 

As 

Long, 

com_string 

String 

35.Static 

Integer 

36.t1 

Timer 

37.Select 

Case 

MSComm1.CommEvent 

38. 

comEvReceive 

如果接收到数据则执行下列语句 

39. 

MSComm1.RThreshold 

40. 

Do 

41. 

DoEvents 

42. 

Loop 

While 

<

0.1 

43. 

MSComm1.Input 

44. 

45. 

1:

>

255 

46. 

Application.Cells(3, 

i).Value 

写到Excel中去 

47. 

txtRec.Text 

写到文本框中去 

48.End 

Select 

49.End 

《五》

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函数)。

2)消息式

  消息式通讯是采用响应WINDOWS消息的办法读取串口。

节省CPU、误码率低。

发送接收机制过于繁琐。

3)定时接收式

  定时接收式通讯是根据预设的定时器时间进行读取数据。

发送接收机制相对简单、节省CPU。

误码率太高,不同的硬件需要配置不同的通讯时间参数,需要严格的校验运算。

3EXCEL-VBA串口通讯实例

  软件:

EXCEL。

  硬件:

艾默生EC10PLC。

  功能:

通过EXCEL中的按钮控制PLC的输出继电器Y0。

  界面:

RUN(运行通讯)、STOP(停止通讯)、Y0(Y0ON/OFF控制)。

主程序:

  OptionExplicit

  PublicDeclare 

SubSleepLib"

kernel32"

(ByValdwMillisecondsAsLong)

FunctionSetTimerLib"

user32"

(ByValhwndAsLong,ByValnIDEventAsLong,ByValuElapseAsLong,ByVallpTimerFuncAsLong)AsLong

FunctionKillTimerLib"

(ByValhwndAsLong,ByValnIDEventAsLong)AsLong

  Publiccom1AsNewMSCommLib.MSComm

  Publicy0SttAsBoolean

  Publicy0_onAsBoolean

  PublictmrFlagAsBoolean

  PublictmrAsLong

  Subrunn()

    OnErrorGoToed

    com1.Settings="

9600,e,8,1"

    Ifcom1.PortOpen=FalseThen

      com1.PortOpen=True

    EndIf

    tmr=SetTimer(0,0,500,AddressOfontimer)

    ExitSub

  ed:

  MsgBox"

串口打开错误!

  EndSub

  Substoppi()

    Ifcom1.PortOpen=TrueThen

      com1.PortOpen=False

      KillTimer0,tmr

  PublicFunctionontimer() 

  Dima(7)AsByte

  DimaddAsLong

  OnErrorGoToed

  IftmrFlag=FalseThen

    tmrFlag=True

    Ify0_on=TrueThen

      y0_on=False

      Ify0Stt=TrueThen

      a(0)=&

H1

      a

(1)=&

H5

      a

(2)=&

H0

      a(3)=&

      a(4)=&

HFF

      a(5)=&

      a(6)=&

H8C

      a(7)=&

H3A

      com1.Output=a

      add=0

      Do

        DoEvents

        Sleep10

        add=add+1

        Ifadd>

=100Then

          ExitDo

        EndIf

      LoopUntilcom1.InBufferCount 

=8

      Else

HCD

HCA

=8

      EndIf

  EndIf

  tmrFlag=False

  ExitFunction

MsgBox"

串口错误!

  EndFunction

  界面程序:

  PrivateSubcmd1_Click()

  y0_on=True

  y0Stt=Noty0Stt

  PrivateSubcmdRun_Click()

  runn

  CheckBox1.Value=1

  PrivateSubcmdStop_Click()

  stopp

  CheckBox1.Value=0

4结束语

  由上可见,VBA已经广泛应用于微软的应用软件当中,所以为更好的完善二次开发功能,众多的组态软件都在VBA支持上做了努力,世纪星组态软件开发语言已与VBA非常相似,相信在未来的版本中,世纪星将全面支持VBA,它的二次开发功能会迈上一个新的台阶。

《六》

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2