这个问题源于我们在这里遇到的问题,我们正在寻找解决问题的方法。我们有一台非常老的机器(运行DOS 6.22),需要与用Java编写的串行应用程序进行通信。但是我们既没有找到基于C / C ++事件的rs232库来实现DOS机器的程序,也没有找到已经编译好的程序来完成这项工作。但是既然我们已经有了一个基于rs232工作的Java事件程序,我们想知道是否可以编译它并从中创建一个.exe来将它安装在旧机器中。
如果可能的话,这将是一个简单的方法,但如果不是,是否有任何rs232库来为我们的旧机器构建程序?提前谢谢。
答案 0 :(得分: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中的方式相同。这个主题有一个wikibook,在http://en.wikibooks.org/wiki/Serial_Programming/DOS_Programming有很多信息。