找回密码
 注册
Simdroid-非首页
查看: 150|回复: 9

[3. Fortran] Java读取Fortran程序的标准输入输出及二进制输出文件

[复制链接]
发表于 2009-9-21 16:58:40 | 显示全部楼层 |阅读模式 来自 美国
本帖最后由 qinxl 于 2009-9-22 10:02 编辑

由于无法打包可执行程序,请将Fortran源程序编译后的可执行文件命名为spln.exe并置于Java程序可调用的目录下。
Java为Fortran提供了一个通往internet世界的桥梁。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2010-7-16 13:56:06 | 显示全部楼层 来自 辽宁大连
Simdroid开发平台
IF(COMMAND_ARGUMENT_COUNT().GE.1) THEN
这个语句在CVF下编译有问题,你是在什么环境下编译的?
另外,在fortran执行后,怎么将文件名传递给java的?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-16 15:46:51 | 显示全部楼层 来自 美国
哦,那个语句属于Fortran2003标准。我用的是g95。gfortran或intel Fortran应该也可以编译。

至于Fortran的文件名传递,在Java中使用如下语句:
Process process = Runtime.getRuntime().exec(new String[]{"spln.exe", result_fname});
回复 不支持

使用道具 举报

发表于 2010-7-16 20:11:46 | 显示全部楼层 来自 辽宁大连
谢谢.
这个是执行fortran编译后的程序,我想问,那个二进制数据文件的名是怎么传递到java程序中的.
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-16 23:41:26 | 显示全部楼层 来自 北京
第二个字符串参数result_fname就是.
回复 不支持

使用道具 举报

发表于 2010-7-17 09:56:24 | 显示全部楼层 来自 辽宁大连
谢谢!!!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-28 11:23:59 | 显示全部楼层 来自 美国
一些补充说明:
上面的例子是Windows系统32位平台的。
Fortran二进制文件的前32位(4个字节)表示的是文件长度,后面才是数据。
Windows平台下二进制数据采用的是小端字节序,而Java统一采用大端字节序,因此字节序也需要转换。

对于64位平台,前8个字节应该是文件长度;Unix/Linux系统本身采用的是大端字节序,因此也不需要转换。但这些我没测试过。
回复 不支持

使用道具 举报

发表于 2011-4-6 22:34:39 | 显示全部楼层 来自 湖南长沙
没有搞好,我的情况是,现在有一个EXE,如果启动这个exe时,会要你传入个文件名(写好数据的),
传入后又会问你一些选择,反正要做几步选择,这个用java如果启用这个EXE呀,数据如何传,求指点呀,搞了很久都没搞好,
回复 不支持

使用道具 举报

发表于 2011-4-6 22:37:02 | 显示全部楼层 来自 湖南长沙
1# qinxl
能加你么
回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-7 13:20:21 | 显示全部楼层 来自 美国
1.现在有一个EXE,如果启动这个exe时,会要你传入个文件名(写好数据的)
参见SplineMainSevice第14行。
2. 传入后又会问你一些选择,反正要做几步选择,这个用java如果启用这个EXE呀,数据如何传
参见SplineMainSevice第24-28行。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 06:59 , Processed in 0.046172 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表