abap调vb写的dll实现电子天平的读数(带控件版)

废话不多说,直接上。

鉴于abap调研的dll文件需要在wins注册,自己尝试过delphi和C#感觉不是很好,最后毅然选择了VB来写

因为需要用到MScomm控件,所以对于将要写的dll需要带form的,貌似这样才能将控件加到dll中来。

步骤:

1,新建dll程序,添加一个窗体

2,在from_load中初始化com口参数

1
2
3
4
5
6
7
8
With  MSComm1
         .CommPort = 1  '设置Com1为通信端口
         .Settings = "1200,n,7,1"   '设置通信端口参数 9600赫兹、偶校验、7个数据位、1个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。
         .InBufferSize = 16  '设置缓冲区接收数据为40字
         .InputLen = 1  '设置Input一次从接收缓冲读取字节数为1
         .RThreshold = 1  '设置接收一个字节就产生OnComm事件
         .PortOpen = True
  End  With

3,写对应的端口数据接受(因为之前用端口测试工具测试过传出的数据流,所以下面代码只是针对特定数据流的截取)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
On  Error  Resume  Next
If  MSComm1.CommEvent = comEvReceive Then
   If  MSComm1.InBufferCount > 0 Then
    Rx_buff = MSComm1.Input
    If  Rx_buff = "N"  Then  start = "S"
    Constop = False
    For  i = 0 To  UBound(Rx_buff)
    If  start = "S"  Then
    send = send & Rx_buff
    If  Len(send) > 17 Then
    Text1.Text = CDbl (Mid(send, 8, 10))
    start = "E"
    MSComm1.PortOpen = False
    End  If
    End  If
    Next  i
   End  If
End  If

 4,在dll的class1中写函数啦

1
2
3
4
5
6
7
8
9
Public  Function  show()
Form1.str = "s"
Form1.Caption = "连接状态"
Form1.show vbModal
End  Function
 
Public  Function  sget() As  String
sget = Form1.str & Form1.send
End  Function

先调出窗口,再获取端口值

因为能力有限,在测试的时候无法将窗口隐藏而不影响到form_load的执行,所以,才有这个必须出现的窗口

好了,至此,一个带from的调用Mscomm控件的dll文件就写好了,

5,将dll文件保存到system32/syswow64下

运行cmd注册dll文件

6,abap调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
REPORT ZLYTEST_DLLTEST001.
include ole2incl.
data win32 type ole2_object.
DATA SUM TYPE I.
data label type string.
create object win32 'lytest10.class1' .
*create object win32 'TESTDLL' .
call METHOD of win32 'show' .
call method of win32 'sget'  = label.
 
 
* 0  Successful processing of the method meth.
* 1  Communication Error to SAP GUI.
* 2  Error when calling method meth.
* 3  Error when setting a property.
* 4  Error when reading a property.
*
 
 
write label.

  至此,就将数据带回abap来了,然后怎么操作这个数,就看需求啦

转载于:https://www.cnblogs.com/sapSB/p/3660050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值