8

这个问题源于我们这里的一个问题,我们正在寻找解决它的方法。我们有一台非常旧的机器(运行 DOS 6.22),它需要与用 Java 编写的串行应用程序通信。但是我们既没有找到基于 C/C++ 事件的 rs232 库来实现 DOS 机器的程序(还),也没有找到已经编译的程序来完成这项工作。但是由于我们已经有一个基于 Java 事件的 rs232 程序,我们想知道是否可以编译它并从中制作一个 .exe 以将其安装在旧机器上。

如果可能的话,这将是解决问题的简单方法,但如果不是,是否有任何 rs232 库来为我们的旧机器构建程序?提前致谢。

4

1 回答 1

3

Linux gcj 能够将 java 程序编译为无需 VM 即可运行的可执行代码。因此,您可以在 linux 机器上使用 gcj 交叉编译并为 DOS 创建一个 .EXE。见http://gcc.gnu.org/java。对于它支持的平台列表,请参见http://gcc.gnu.org/install/specific.html,DOS 将是列表中的第 7 项。

也就是说,我不认为你是基于 java 的 rs232 库可以工作,即使程序的其余部分可以工作,而且你会有各种 Java 不容易忍受的其他限制,比如著名的640K 内存限制,在实际系统中您会发现它更接近 440K。

您会发现基于事件的编程的另一个复杂之处是 DOS 是单线程的。因此,除了协作多任务处理之外,您不能轻易使用任何形式的基于事件的编程。这并不难,但要注意这一点。

在 DOS 中,您实际上将编写一个串行设备驱动程序来与串行端口通信,就像操作系统驱动程序一样,设置寄存器并启动数据传输,就像 char 驱动程序在 linux 中所做的那样。在http://en.wikibooks.org/wiki/Serial_Programming/DOS_Programming上有一本关于该主题的 wikibook,内容丰富。

于 2012-11-14T23:21:21.940 回答