private void btn_OK_Click(object sender, EventArgs e) { if (textBand1.Text == "" || textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "" || textBox7.Text == "" || textBox8.Text == "" || textBox9.Text == "" || textBox10.Text == "" || txtHeight.Text == "" || txtSaveFile.Text == "") { MessageBox.Show("请检查输入、输出以及参数设置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { //开始水汽计算程序 try { COM_IDL_connectLib.COM_IDL_connect oCom = new COM_IDL_connectLib.COM_IDL_connect(); oCom.CreateObject(0, 0, 0); //oCom.ExecuteString("window,1,title='C#call IDL'"); //oCom.ExecuteString("plot,sin(findgen(200)/20)"); //oCom.DestroyObject(); oCom.SetIDLVariable("imagePath1", textBand1.Text); //热红外劈窗通道图像1 oCom.SetIDLVariable("imagePath2", textBox1.Text); //热红外劈窗通道图像2 oCom.SetIDLVariable("imagePath3", textBox2.Text); //红外波段图像 oCom.SetIDLVariable("imagePath4", textBox3.Text); //近红外通道图像 oCom.SetIDLVariable("band1", Convert.ToDouble(txtHeight.Text)); //劈窗通道波长1 oCom.SetIDLVariable("band2", Convert.ToDouble(textBox4.Text)); //劈窗通道波长2 oCom.SetIDLVariable("BareSoilNDVIThresholdValue", Convert.ToDouble(textBox6.Text)); //裸土NDVI阈值 oCom.SetIDLVariable("vegetationNDVIThresholdValue", Convert.ToDouble(textBox5.Text)); //植被NDVI阈值 oCom.SetIDLVariable("BareSoilEmissivity1", Convert.ToDouble(textBox8.Text)); //裸土发射率1 oCom.SetIDLVariable("BareSoilEmissivity2", Convert.ToDouble(textBox7.Text)); //裸土发射率2 oCom.SetIDLVariable("vegetationEmissivity1", Convert.ToDouble(textBox10.Text)); //植被发射率1 oCom.SetIDLVariable("vegetationEmissivity2", Convert.ToDouble(textBox9.Text)); //植被发射率2 oCom.SetIDLVariable("windowSize1", Convert.ToDouble(textBox12.Text)); //窗口设置1 oCom.SetIDLVariable("windowSize2", Convert.ToDouble(textBox13.Text)); //窗口设置2 //oCom.SetIDLVariable("outputdir", txtSaveFile.Text); string tmp = "splitpwv_jicheng,'" + textBand1.Text + "','" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + txtSaveFile.Text.ToString() + "'," + Convert.ToDouble(txtHeight.Text) + "," + Convert.ToDouble(textBox4.Text) + "," + Convert.ToDouble(textBox12.Text) + "," + Convert.ToDouble(textBox13.Text) + "," + Convert.ToDouble(textBox6.Text) + "," + Convert.ToDouble(textBox5.Text) + "," + Convert.ToDouble(textBox8.Text) + "," + Convert.ToDouble(textBox7.Text) + "," + Convert.ToDouble(textBox10.Text) + "," + Convert.ToDouble(textBox9.Text) + ""; Console.WriteLine(tmp); string tmp2 = ".compile '" + Application.StartupPath.ToString() + "\\splitpwv_jicheng.pro'"; oCom.ExecuteString(tmp2); oCom.ExecuteString(tmp); //oCom.ExecuteString("splitpwv_jicheng,imagePath1,imagePath2,imagePath3,imagePath4,outputdir,band1,band2,windowSize1,windowSize2,BareSoilNDVIThresholdValue,vegetationNDVIThresholdValue,BareSoilEmissivity1,BareSoilEmissivity2,vegetationEmissivity1,vegetationEmissivity2"); oCom.DestroyObject(); //oCom.ExecuteString("Restore,'splitpww.sav'");//编译程序 //oCom.ExecuteString("splitpww"); //oCom.ExecuteString(tmp); MessageBox.Show("运行成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }