
RS232接收到数据进入EXCEL
2个回答
展开全部
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
<
0.1
'延时时间调整
com_String
=
MSComm1.Input
MSComm1.RThreshold
=
1
i
=
i
+
1:
If
i
>
255
Then
i
=
1
Application.Cells(3,
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.InputLen
=
0
'为
0
时,使用
Input
将使
MSComm
控件读取接收缓冲区中全部的内容。
MSComm1.InputMode
=
comInputModeText
'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)
MSComm1.RTSEnable
=
True
MSComm1.InBufferCount
=
0
'清空缓冲区
End
Sub
Private
Sub
UserForm_Initialize()
iniMscomm
End
Sub
7.双击thisWorkBook,复制以下代码到窗体里:
VB
code
'VBA代码
Private
Sub
Workbook_Open()
UserForm1.Show
0
'UserForm1.Hide
End
Sub
8.保存文件并关闭excel,然后再打开你的文件,然后单击窗体上的按钮看看。
9.这个程序已经做过测试,sys2003
office2003。
10.如果excel中有数据输入,再去测试设置,注意com口号与波特率的设置。
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
<
0.1
'延时时间调整
com_String
=
MSComm1.Input
MSComm1.RThreshold
=
1
i
=
i
+
1:
If
i
>
255
Then
i
=
1
Application.Cells(3,
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.InputLen
=
0
'为
0
时,使用
Input
将使
MSComm
控件读取接收缓冲区中全部的内容。
MSComm1.InputMode
=
comInputModeText
'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)
MSComm1.RTSEnable
=
True
MSComm1.InBufferCount
=
0
'清空缓冲区
End
Sub
Private
Sub
UserForm_Initialize()
iniMscomm
End
Sub
7.双击thisWorkBook,复制以下代码到窗体里:
VB
code
'VBA代码
Private
Sub
Workbook_Open()
UserForm1.Show
0
'UserForm1.Hide
End
Sub
8.保存文件并关闭excel,然后再打开你的文件,然后单击窗体上的按钮看看。
9.这个程序已经做过测试,sys2003
office2003。
10.如果excel中有数据输入,再去测试设置,注意com口号与波特率的设置。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询