废话不多说,直接上。

鉴于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来了,然后怎么操作这个数,就看需求啦

abap调vb写的dll实现电子天平的读数(带控件版)的更多相关文章

  1. VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示

    1.VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示 2.以前也有Excel导入通用功能,但速度有些慢一会把两种实现方式都提供出为参考对比. 一.原通用导入exc ...

  2. 图形报表 webChart.dll 以及其它的图形报表控件 (转)

    http://www.carlosag.net/Tools/WebChart/sampleDataSet.aspx http://www.carlosag.net/Tools/WebChart/sam ...

  3. 假设写一个android桌面滑动切换屏幕的控件(一)

    首先这个控件应该是继承ViewGroup: 初始化: public class MyGroup extends ViewGroup{ private Scroller mScroller; priva ...

  4. VB将PDF流写入ACCESS数据库,通过AcroPDF控件读出PDF流之实现

    问题描述: 1.把pdf文件写入access2.读出时用AcroPDF控件 问题解答: 使用流对象保存和显示图片与文件打开vb6,新建工程. 添加两个按钮,一个image控件注意:Access中的ph ...

  5. 在VB中动态执行VBS代码,可操控窗体控件

    通过执行一段VBS代码来操控窗体内的控件也可以使用AddObject方法添加自己的类,那么在动态VBS代码中也一样可以使用在增加程序扩展性或是有脚本化需求的时候,这个方法还是不错的. Option E ...

  6. NX二次开发-调内部函数UGS::UICOMP_enum::set_width(int)更改BlockUI的枚举控件宽度

    版本 NX11+VS2013 内容说明 这个内部函数的设置方法,我之前不会,是QQ群里的一位大佬分享出来的. 关于这块,我也百度搜了一下,找到了几个相关的. 1.直接手动修改BlockUI界面 在低版 ...

  7. 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)

    最近一个项目需要显示二维码,所以花了点时间(只用了一个晚上,写的很不完善),写了个显示二维码的控件.当然这个控件用到了些开源的代码,比如qrencode,所以我也打算把我的代码开源. 我的代码参考了 ...

  8. 多年前写的文本框扩展控件(有ValueChanging事件等),已放github

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 使用 GitHub ...

  9. c++ c# java 调用 c++ 写的dll

    1. vs 中新建win32 dll 项目   testdll 添加实现文件       test.cpp #include "stdafx.h" #include <ios ...

随机推荐

  1. windows programming can't find windows.h

    在用控制台编译c++程序的时候,可能会遇到找不到windows.h的情况.这是因为我们在使用cl命令的时候,并没有配置好环境变量. 所以我们在运行cl命令之前,我们可以运行C:\Program Fil ...

  2. MySQL字符集转换(latin1到utf8)

    http://blog.chinaunix.net/uid-25266990-id-3344584.html

  3. JS 获取url参数

    <html> <body> 浏览器中输入 http://localhost/test/js_url.php?a1=aaa&a2=bbb&a3=ccc 会依次弹出 ...

  4. android屏幕适配原则

    1.尽量使用线性布局和相对布局 2.尽量使用dip和sp,不要使用px 3.为不同的分辨率提供不同的布局文件和图片 4.在AndroidMainfest.xml中设置多分辨率支持 5.层级嵌套,合理布 ...

  5. C语言-自定义函数

    C语言自定义函数 --1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 ...

  6. HTML5 History 模式

    vue-router 默认 hash 模式 -- 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不想要很丑的 hash,我们可以用路由的 his ...

  7. bzoj1080

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1080 神暴力,待搞懂. 代码 #include <cstdio> #includ ...

  8. async和await

    总结下博客园中看到的async和await public static class TaskAsyncHelper { /// <summary> /// 将一个方法function异步运 ...

  9. JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度

    alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...

  10. 如何修改Hadoop的默认日志级别,还真是麻烦

    鄙人使用的Hadoop版本为2.6.4.Hadoop的默认日志级别为INFO,对于百台以上的集群,如果文件操作频繁的话,NameNode会狂打日志,对性能会有一定的影响. 我们可以通过http://& ...