VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库

前面说的Delphi通过Activex DLL同时调用PowerBasic和FreeBasic写的DLL,是在WINDOWS基础平台上完成的。 而 .NET平台是架在WINDOWS基础平台之上的,它的上面VB.NET或C#等开发的APP程序,下面写一下用VB.NET,通过VB6注册的Activex DLL公共对象COM,调用PowerBasic和FreeBasic写的DLL实现,核心功能是MKI/CVI MKL/CVL MKS/CVS MKD/CVD的IEEE浮点计算。它们在一些传统产业上还在应用,而且一时半时也不会弃之不用。

先创建新项目

往下翻,找到VB窗体项目,中途大多是C#移动开发。

在项目菜单中选填加引用

确认后加到依赖项下

在窗体上摆一些控件,和VB6设计时的界面内容差不多。

在程序的最上部把注册的COM引用进来

在Command1下写代码

复制代码
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim s As MBFIEEECRC = New MBFIEEECRC
        TextBox11.Text = "VERSION" : TextBox1.Text = s.ModbusRoutines(PBFB:=1, commandno:=10, commandval:=TextBox11.Text)
        TextBox11.Text = "AUTHOR" : TextBox10.Text = s.ModbusRoutines(PBFB:=1, commandno:=10, commandval:=TextBox11.Text)

        TextBox2.Text = s.ModbusRoutines(PBFB:=1, commandno:=1, commandval:="1123.21")      'MKI
        TextBox9.Text = s.ModbusRoutines(PBFB:=1, commandno:=5, commandval:=TextBox2.Text)  'CVI

        TextBox3.Text = s.ModbusRoutines(PBFB:=1, commandno:=2, commandval:="1123.21")      'MKL
        TextBox8.Text = s.ModbusRoutines(PBFB:=1, commandno:=6, commandval:=TextBox3.Text)  'CVL

        TextBox4.Text = s.ModbusRoutines(PBFB:=1, commandno:=3, commandval:="1123.21")      'MKS
        TextBox7.Text = s.ModbusRoutines(PBFB:=1, commandno:=7, commandval:=TextBox4.Text)  'CVS

        TextBox5.Text = s.ModbusRoutines(PBFB:=1, commandno:=4, commandval:="1123.21")      'MKD
        TextBox6.Text = s.ModbusRoutines(PBFB:=1, commandno:=8, commandval:=TextBox5.Text)  'CVD
    End Sub

MBFIEEECRC是COM的对外接口,把它NEW一个出来就可以用了,用法和VB6开发差不多一样的,调用函数ModbusRoutines时参数写至里面,有一个地方留心一点。

入口参数是字符串时,先所它放到文本框中再将文本框中的TEXT作为参数使用,不宜直接将字符串作为参数传给COM,因为表面看上去无差别,但存储方式是有差异的,DLL间传送字符串时比较好的解决办法是先放到文本框,再送出文本框内容,在写COM时也如些处理一下,能免去调用时莫明其妙地异常退出。

编译时选用x86模式,因为COM是线程内x32的。如果选了x64模式,编译通不能运行,找不到COM中的函数。正确编译后在x86的debug文件夹下生成可执行文件,同时把VB6的创建的那些DLL考贝进来。

双击WinFormsApp1.exe即可运行,点Command1执行,结果就出来了。

VS2022版的项目文件于下面的链接中

https://download.csdn.net/download/weixin_45707491/88244514

相关推荐
德思特36 分钟前
测试效率跃升10倍!射频开关矩阵一站式解决多端口S参数测试与通信系统自动化路由难题
经验分享
上海广测检测科技有限公司1 小时前
VR眼镜PSB认证详解:新加坡安全标志注册制度的合规要求与技术要点分析
经验分享·vr
砚凝霜1 小时前
软考网络工程师|第 9 章 网络诊断命令 + 故障工具 + 故障排查完整笔记
网络·笔记
sdffdfdfdfd2 小时前
炫软美业管理系统:全链路数字化赋能,解锁美业门店盈利新范式
经验分享
南城以南溫暖如初1472 小时前
社区健身小程序开发流程详解:技术选型与实施经验分享
java·经验分享·spring boot·mysql·vue·apache
九硕智慧建筑一体化厂家2 小时前
打破系统孤岛!IBMS 一体化平台,构建智慧楼宇全域管控体系
运维·网络·人工智能·笔记·智慧城市
黑泽明*3 小时前
LVS-Keepalived-全解析
服务器·开发语言·笔记·学习·php
IT小白杨3 小时前
从Chromium重构到真实ARM云手机:多账号隔离方案的技术演进
大数据·经验分享·智能手机·重构·安全架构·指纹浏览器
熊猫钓鱼>_>3 小时前
Seedance 2.0 技术深度解析:重构AI视频生成的世界模型新范式
人工智能·笔记·ai·重构·音视频·变革·sedence2.0
天天爱吃肉82184 小时前
【工程师硬件学习笔记:串口‑总线体系与三电试验室异构系统集成深度实战】
大数据·笔记·python·嵌入式硬件·学习·汽车