爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6695|回复: 12

C#与GRADS混合编程

[复制链接]

新浪微博达人勋

发表于 2014-10-10 17:02:19 | 显示全部楼层 |阅读模式
GrADS
系统平台: VS2010,grads1.9
问题截图: -
问题概况: 我在vs2010的环境下,用C#调用GRADS.exe来执行通过fortran转换的micaps高空数据,它生成了dat,ctl,gs文件,可是在C#里面调用时,却得不出来图,一直很郁闷,请大家帮帮我!
我看过提问的智慧: 看过
自己思考时长(天): 2

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x

2014100708.dat

214.93 KB, 下载次数: 30

C#代码.txt

1.86 KB, 下载次数: 41

gk14100708.ctl

266 Bytes, 下载次数: 23

gk14100708.gs

374 Bytes, 下载次数: 27

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-10 21:28:36 | 显示全部楼层
你这样以附件形式放在这里,别人想帮你还要花积分下载
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-10-10 22:58:51 | 显示全部楼层
传说中的谁 发表于 2014-10-10 21:28
你这样以附件形式放在这里,别人想帮你还要花积分下载

哎呀,我这里下载不需要积分啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-10-10 23:01:45 | 显示全部楼层
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

      



        private void CallGrads(string GsFile)
        {
            System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
            Info.WindowStyle = ProcessWindowStyle.Hidden;
            Info.CreateNoWindow = true;
            Info.UseShellExecute = true;
            Info.WorkingDirectory = @"C:\GrADS19\win32\";
            Info.FileName = "grads.exe";
            Info.Arguments = string.Format(@"-blc {0}", GsFile);
            System.Diagnostics.Process proc;
            try
            {
                proc = System.Diagnostics.Process.Start(Info);
                if (proc != null)
                    proc.WaitForExit(5000);

            }
            catch { };
           

        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string _WorkDir = Application.StartupPath;
            Environment.SetEnvironmentVariable("gaddir", _WorkDir + @"\GrADS19\dat");
            Environment.SetEnvironmentVariable("gascrp", _WorkDir + @"\GrADS19\lib");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string GsPath = @"D:\ZDZT\dat\gk14100708.gs";
            if (File.Exists(GsPath))
            {
                StreamReader sr = new StreamReader(GsPath);
                string GsFile = sr.ReadToEnd();
                CallGrads(GsPath);
            }
            else
            {
                MessageBox.Show("gs文件不存在或有错误!");
            }
        }


    }


}



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-10-10 23:02:09 | 显示全部楼层
小小人 发表于 2014-10-10 23:01
using System;
using System.Collections.Generic;
using System.Drawing;

这是他的C#代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-11 08:00:53 | 显示全部楼层
小小人 发表于 2014-10-10 23:01
using System;
using System.Collections.Generic;
using System.Drawing;

比在fortran下复杂好多啊!!!吓死人喽
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-12 17:11:50 | 显示全部楼层
呵呵  慢慢研究吧 我也在做这方面的,可以共同探索
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-23 01:03:26 | 显示全部楼层
抱歉抱歉,这几天比较忙。
我试了一下,主要有这几个问题。
1、ctl文件的问题。

DSET d:\ZDZT\dat\gk14100708.dat
TITLE gkZL
UNDEF -9999.0
XDEF 61 linear 70.0 1.0
YDEF 41 linear 15.0 1.0
ZDEF 11 LEVELS 1000 925 850 700 500 400 300 250 200 150 100
TDEF 1 LINEAR 00Z07Oct1914 24hr
VARS 4
hh    11 99 height
tt    11 99 temperature
ENDVARS

这里面有两个问题:1是 vars 4,但实际只给了两个变量hh tt
                           2是gk14100708.dat文件不存在, 你给的数据文件名是2014100708.dat
我研究你的数据文件,我直接改成 vars 2了。

2、C#文件里的问题
    这里是:
            string _WorkDir = Application.StartupPath;
            Environment.SetEnvironmentVariable("gaddir", _WorkDir + @"\GrADS19\dat");
            Environment.SetEnvironmentVariable("gascrp", _WorkDir + @"\GrADS19\lib");
   这里却是:
           Info.WorkingDirectory = @"C:\GrADS19\win32\";

那么问题就来了,你的GrADS19到底安装在哪里?是 C:\还是 Application.StartupPath (也就是可执行文件目录)

我把 _WorkDir  强制改成 c:\,把GrADS19放到c:\下,运行程序,还是没画出图来。

3、gs文件的问题
    'printim d:\ZDZT\gif\gk14100708.gif X600 Y500 white'

     文件夹 d:\zdzt\gif 不存在,手工建一个,运行,OK,完美出图。

等等,这就是你要的图吗?呵呵!
gk14100708.gif
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-23 01:11:53 | 显示全部楼层
C#代码贴一下

using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace CallGrADS
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {

            //var workDir = Application.StartupPath;
            const string workDir = @"c:\";
            Environment.SetEnvironmentVariable("gaddir", workDir + @"\GrADS19\dat");
            Environment.SetEnvironmentVariable("gascrp", workDir + @"\GrADS19\lib");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            const string gsPath = @"D:\ZDZT\dat\gk14100708.gs";
            if (File.Exists(gsPath))
            {
                var sr = new StreamReader(gsPath);
                string gsFile = sr.ReadToEnd();
                CallGrads(gsPath);
            }
            else
            {
                MessageBox.Show("gs文件不存在或有错误!");
            }
        }
        private void CallGrads(string gsFile)
        {
            var info = new ProcessStartInfo
            {
                WindowStyle = ProcessWindowStyle.Hidden,
                CreateNoWindow = true,
                UseShellExecute = true,
                WorkingDirectory = @"C:\GrADS19\win32\",
                FileName = "grads.exe",
                Arguments = string.Format(@"-blc {0}", gsFile)
            };
            try
            {
                var proc = Process.Start(info);
                proc.WaitForExit(5000);
            }
            catch { }
        }
    }
}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-23 01:24:42 | 显示全部楼层
这个图不知道是怎么回事。
41*61*11*2=55022
220088 / 55022 = 4
所以应该有4个变量吧?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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