MicroStation二次开发问题记录(1):打开项目时自动加载dll文件

环境配置


Windows10
MicroStation CE Update16
Visual Studio 2019

前言


开发好的dll文件若每次都需要在打开MS时单独加载,则过于繁琐,因此可以在确定的工程项目文件中进行一次设置,在打开该文件时自动加载

一、加载dll文件


1. 点击File—Settings—Configuration—Configuration Variables

2. 搜索或选择MS_DGNAPPS,点击右侧的编辑Edit

3. Edit Mode改为Append,在New Value中输入需要加载的文件,这里是HelloWorld.dll,这个文件保存的路径为dll文件的默认保存路径D:\Microstation\MicroStation\Mdlapps(笔者安装在D盘下)

4. 点击OK保存退出即可,此时保存并关闭dgn文件,再次打开时按下F9可以看到HelloWorld文件已被加载

### 如何通过 C# 进行 MVS 的二次开发 #### 1. 基本概念 MVS(可能指 Microstation Visualization System 或其他相关软件)提供了用于工业相机控制的 SDK,开发者可以通过加载特定 DLL 文件实现功能扩展。以下是基于提供的引用内容以及常见实践总结的 C# 中 MVS 二次开发的关键步骤。 --- #### 2. Dll 加载 安装 MVS 后,系统会自动将对应的 32 位和 64 位动态链接库 (DLL) 添加到系统的环境变量中[^1]。这些 DLL 是实现核心功能的基础组件。 如果需要手动确认路径,可以检查 `PATH` 环境变量是否包含类似以下路径: ``` C:\Program Files\Microvision\SDK\Lib\x86\ C:\Program Files\Microvision\SDK\Lib\x64\ ``` 对于 C# 开发者来说,确保项目能够正确访问上述 DLL 非常重要。 --- #### 3. 工程配置 创建一个新的 C# 控制台应用程序或 Windows Forms 应用程序,并按照以下步骤操作: - **添加引用**:右键点击解决方案资源管理器中的“引用”,选择“添加引用”。浏览至 MVS 安装目录下的 `Lib` 子文件夹,找到并引入 `MvCameraControl.Net.dll`。 - 如果涉及图像处理工具 Halcon,则还需要额外引入 `halcondotnet.dll`[^2]。 完成以上设置后,即可在代码中调用相关类和方法来初始化设备、捕获数据等。 --- #### 4. 编写代码示例 下面展示了一个简单的例子,演示如何利用上述提到的核心库连接摄像头并获取基本信息。 ```csharp using System; using MvCameraControlNet; class Program { static void Main(string[] args){ try{ // 初始化相机对象实例化 IntPtr hCamera = new IntPtr(); // 枚举可用设备列表 MV_CC_DEVICE_INFO_LIST stDevList = new MV_CC_DEVICE_INFO_LIST(); int nRet = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, ref stDevList); if(nRet != 0 || stDevList.nDeviceNum == 0){ Console.WriteLine("No device found!"); return ; } // 打开第一个检测到的设备 MV_CC_DEVICE_INFODeviceInfo = stDevList.pDeviceInfo[0]; nRet = MV_CC_CreateHandle(ref hCamera , DeviceInfo ); if( nRet != 0 ){ throw new Exception ("Failed to create handle"); } // 设置触发模式为连续采集 string strCommand = "TriggerMode"; string strValue = "Off"; nRet = MV_CC_SetEnumValue(hCamera,strCommand,strValue); if( nRet != 0 ){ throw new Exception ("Error setting trigger mode"); } // 开始抓图 nRet = MV_CC_StartGrabbing(hCamera ); if( nRet != 0 ){ throw new Exception ("Start grabbing failed!"); } Console.WriteLine("Camera started successfully."); }catch(Exception ex){ MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK, MessageBoxIcon.Error); }finally{ if(hCamera != null && hCamera .ToInt32() != 0 ) MV_CC_DestroyHandle(hCamera ); } } } ``` 此脚本展示了从枚举设备到启动捕捉的主要流程。注意实际应用需根据具体需求调整参数设定部分。 --- #### 5. 错误处理机制 当执行某些命令失败或者硬件状态发生变化,通常不会立即抛出异常而是返回错误码给调用方自行判断。因此建议每次 API 调用之后都验证其结果值是否等于零(`nRet==0`)表示成功;否则依据官方文档查找对应含义采取适当措施恢复服务。 另外值得注意的是,在调试阶段最好开启日志记录以便于定位潜在问题所在区域。 --- #### 6. 测试与部署注意事项 测试期间务必保证目标机器已正确安装全部依赖项包括但不限于.NET Framework版本匹配度以及操作系统架构一致性等问题。正式发布前还需考虑安全性加固比如加密敏感信息传输通道防止未授权访问等情况发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值