使用 JNI C 驱动程序的 JavaFx 项目

问题描述 投票:0回答:1

我需要开发一个桌面应用程序,使用 PCI-e 驱动程序从 FPGA 板读取/写入数据。驱动程序已经安装,我可以编译用于 I/O 的可执行文件的源代码,因为它们是作为 Visual Studio 项目提供的。

目标是修改这些驱动程序,以便可以通过应用程序在 GUI 级别使用它们,我最初想到用 Java 开发(我不知道这是否是最好的方法);在这种情况下,我的想法是使用 JNI,但是我找到的关于从 Java 生成 .h 文件和从 C 文件生成 .dll 文件的所有指南都是关于可以从命令行单独编译的文件,而我被困住了有两个项目,一个 JavaFX 和一个 Visual Studio 项目。

对于开发这样的应用程序,什么可能是比我假设的更好的解决方案?

提前致谢

c javafx java-native-interface driver pci-e
1个回答
0
投票

这是对替代方案的意见,可能适用也可能不适用于您的应用。

本机接口的替代方案是使用网络接口(例如套接字连接或 HTTP Rest 服务器)。这可以通过修改驱动程序代码来实现一个套接字或 HTTP 服务器来操作它接收到的消息来完成。

然后,使用 HTTP 客户端或套接字客户端的 JavaFX Java 客户端可以连接到驱动程序支持的网络接口以向其发送请求。这将消除应用程序的本机部分和 UI 部分之间的紧密耦合。

我建议使用 HTTP 和 REST 作为协议,使用 JSON 作为数据交换格式(有很多教程介绍如何使用各种技术实现这一点)。

如果需要,这样的设置还可以处理驱动程序的远程控制(类似于登录路由器 UI 来修改路由器设置,如果您熟悉这种过程)。

通过明确的协议,客户端UI软件与服务器完全解耦。因此,您可以选择用于开发客户端 UI 的技术,例如,独立的 JavaFX 应用程序或可从浏览器使用的 Angular Web 应用程序都可以。

这种方案的缺点是通信和处理开销。它可能不太适合异常的高数据吞吐量,但如果不需要,那么性能就不是问题。

© www.soinside.com 2019 - 2024. All rights reserved.