VB调用COM解决思路
VB调用COM
小弟是学VC的,最近用到VB调用VC写的COM组件,继承COM组件的接口(interface)CAA,并调用里面的函数BB。
因为我对VB语法的 不熟悉,所以实现起来就特别麻烦,希望各位VB达人能指教下,给出源码更加感激不尽,THANK U。
------解决方案--------------------
看看这本书,上面有对COM的详细介绍:
http://download.****.net/source/1371398
------解决方案--------------------
声明创建对象,然后使用其方法属性等。
------解决方案--------------------
好像是这么用,你参考下。
------解决方案--------------------
提供一个vb的大概
小弟是学VC的,最近用到VB调用VC写的COM组件,继承COM组件的接口(interface)CAA,并调用里面的函数BB。
因为我对VB语法的 不熟悉,所以实现起来就特别麻烦,希望各位VB达人能指教下,给出源码更加感激不尽,THANK U。
------解决方案--------------------
看看这本书,上面有对COM的详细介绍:
http://download.****.net/source/1371398
------解决方案--------------------
声明创建对象,然后使用其方法属性等。
------解决方案--------------------
'先定义
Dim xCom as YourComObject
'调用BB
xCom.BB para1,para2,...
好像是这么用,你参考下。
------解决方案--------------------
提供一个vb的大概
Private Recievedata As String
Private Sub Form_Load()
Comm1.Settings = "2400,N,8,1" '设置通信口参数
Comm1.InBufferSize = 190 '设置Comm1接收缓冲区为19字节
Comm1.OutBufferSize = 2 '设置Comm1发送缓冲区为2字节
Comm1.InputMode = comInputModeBinary '设置接收数据模式为二进制形式
Comm1.InBufferCount = 0 '清除接收缓冲区
Comm1.OutBufferCount = 0 '清除发送缓冲区
Comm1.CommPort = 1
Comm1.InputLen = 190 '设置由串型端口读入的字符长度
Comm1.PortOpen = True '打开通信口
Comm1.RThreshold = 19 '设置接收19个字节产生OnComm事件
End Sub
Private Sub InquireScale_Click()
Dim txtSum1 As String
txtSum1 = "SR" & vbLf
If Comm1.PortOpen = False Then
Comm1.PortOpen = True
End If
Comm1.Output = txtSum1
'Debug.Print Comm1.OutBufferCount
'Debug.Print Comm1.InBufferCount
Comm1.OutBufferCount = 0 '清除发送缓冲区
Comm1.InBufferCount = 0 '清除接收缓冲区
End Sub
Private Sub ZeroScale_Click()
Dim txtSum As String
txtSum = "ZI" & vbLf
'Debug.Print TypeName(txtSum)
If Comm1.PortOpen = False Then
Comm1.PortOpen = True
End If
Comm1.Output = txtSum
'Debug.Print Comm1.OutBufferCount
Comm1.OutBufferCount = 0 '清除发送缓冲区
Comm1.InBufferCount = 0 '清除接收缓冲区
End Sub
Private Sub Comm1_OnComm()
On Error Resume Next
Dim BytesReceived() As Byte
Dim buffer As String
Dim HData As String
Dim i As Integer
Select Case Comm1.CommEvent
Case comEvReceive '接收十六进制数据。并以十六进制显示
buffer = Comm1.Input '接收数据至字符串中
BytesReceived() = buffer '将数据转入Byte数组中
Debug.Print buffer
For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示
If Len(Hex(BytesReceived(i))) = 1 Then
HData = HData & "0" & Hex(BytesReceived(i))
Else
HData = HData & Hex(BytesReceived(i))
End If
Recievedata = HData
'最后将结果后入Recievedata中
Comm1.OutBufferCount = 0 '清除发送缓冲区