我目前的任务是迁移最初使用 Visual Basic 6 构建的旧传感器数据采集应用程序。它使用基于 C 的 DLL 与硬件通信并收集传感器数据。目标是使应用程序现代化并使其跨**多个平台运行 - **Windows、iOS、macOS 和 Android。
我们选择 .NET MAUI 进行此次迁移,因为它具有跨平台支持。但是,我有几个问题,并且有点不知道从哪里开始,特别是关于 DLL,这显然是 Windows 特定的:
如何让现有的基于 C 的 DLL 在 macOS、iOS 和 Android 上运行? DLL 应该重写还是有办法将其包装在跨平台解决方案中? 如果我需要重写或改编 DLL,我应该采取什么方法(例如 P/Invoke、特定于平台的服务)? 如何确保硬件通信(DLL 当前处理的)能够跨不同平台运行? 我应该从哪里开始迁移?第一步应该是什么? 是否有任何工具、库或资源可以帮助迁移 DLL 或处理跨平台硬件通信? 我一直在网上寻找答案,但尚未找到此类迁移的明确指南或流程。任何指导、资源或建议都会非常有帮助!
谢谢!
有了 DLL 源代码,事情看起来好多了。 硬件不是我的专业领域。 但是,有了这些信息,其他人应该能够帮助您。
使用 iOS(也许是 Android)访问自定义硬件可能会遇到挑战,但同样,其他人对这些平台了解更多。
有跨平台的 .NET USB 库,包括https://github.com/MelbourneDeveloper/Device.Net(这看起来是最好的起点;在某些平台上,它依赖于 LibUsbDotNet),https: //github.com/LibUsbDotNet/LibUsbDotNet 和 https://github.com/mikeobrien/HidLibrary .
如果这不起作用,您仍然可以选择编写每个平台的本机硬件接口代码,然后将其连接到应用程序的其余部分(非硬件部分可以使用.NET MAUI)。
我确实注意到一件事:您提供的来源经常提到 PCI,但很少提到 USB。 它似乎期望连接到 PCI 卡,而不是 USB 设备。 不过,再次强调,我不是硬件专家。
作为第一步,我将从源代码重建 DLL,并确保 VB6 程序与刚刚构建的版本正常工作。 这将帮助您验证您是否拥有真正的最新源代码(如果 DLL 未在积极开发中)。