Form1.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Windows.Forms.DataVisualization.Charting;
  11. using Extender;
  12. using DBManager;
  13. using MeasureData;
  14. using System.Data.SQLite;
  15. using MeasureThread;
  16. using System.Configuration;
  17. namespace OxfordTest
  18. {
  19. public partial class Form1 : Form
  20. {
  21. //全局只有一个fatorySEM
  22. static ExtenderInterface factoryExtender = ExtenderInterface.Instance;
  23. //IExtenderControl iExtender = factoryExtender.IExtender;
  24. IExtenderControl iExtender ;
  25. public Form1()
  26. {
  27. InitializeComponent();
  28. }
  29. //获取电压
  30. private void button1_Click(object sender, EventArgs e)
  31. {
  32. tBHV.Text = iExtender.GetSEMVoltage().ToString();
  33. }
  34. //输入限制只能是数字
  35. private void textBox_KeyPress(string text, object sender, KeyPressEventArgs e)
  36. {
  37. //允许输入数字、小数点、删除键和负号
  38. if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != (char)('.') && e.KeyChar != (char)('-'))
  39. {
  40. MessageBox.Show("请输入正确的数字");
  41. text = "";
  42. e.Handled = true;
  43. }
  44. if (e.KeyChar == (char)('-'))
  45. {
  46. if (text != "")
  47. {
  48. MessageBox.Show("请输入正确的数字");
  49. text = "";
  50. e.Handled = true;
  51. }
  52. }
  53. //小数点只能输入一次
  54. if (e.KeyChar == (char)('.') && ((TextBox)sender).Text.IndexOf('.') != -1)
  55. {
  56. MessageBox.Show("请输入正确的数字");
  57. text = "";
  58. e.Handled = true;
  59. }
  60. //第一位不能为小数点
  61. if (e.KeyChar == (char)('.') && ((TextBox)sender).Text == "")
  62. {
  63. MessageBox.Show("请输入正确的数字");
  64. text = "";
  65. e.Handled = true;
  66. }
  67. //第一位是0,第二位必须为小数点
  68. if (e.KeyChar != (char)('.') && ((TextBox)sender).Text == "0")
  69. {
  70. MessageBox.Show("请输入正确的数字");
  71. text = "";
  72. e.Handled = true;
  73. }
  74. //第一位是负号,第二位不能为小数点
  75. if (((TextBox)sender).Text == "-" && e.KeyChar == (char)('.'))
  76. {
  77. MessageBox.Show("请输入正确的数字");
  78. text = "";
  79. e.Handled = true;
  80. }
  81. }
  82. //设定电压
  83. private void button2_Click(object sender, EventArgs e)
  84. {
  85. iExtender.SetSEMVoltage(float.Parse(tBHVIn.Text));
  86. }
  87. //电压输入限制
  88. private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  89. {
  90. textBox_KeyPress(tBHVIn.Text, sender, e);
  91. }
  92. //获取工作距离
  93. private void button3_Click(object sender, EventArgs e)
  94. {
  95. tBWD.Text = iExtender.GetWorkingDistance().ToString();
  96. }
  97. //获取放大倍数
  98. private void button4_Click(object sender, EventArgs e)
  99. {
  100. tBMag.Text = iExtender.GetMagnification().ToString();
  101. }
  102. //获取亮度
  103. private void button5_Click(object sender, EventArgs e)
  104. {
  105. tBBright.Text = iExtender.GetBrightness().ToString();
  106. }
  107. //获取对比度
  108. private void button6_Click(object sender, EventArgs e)
  109. {
  110. tBContast.Text = iExtender.GetContrast().ToString();
  111. }
  112. //设定工作距离
  113. private void button7_Click(object sender, EventArgs e)
  114. {
  115. iExtender.SetWorkingDistance(float.Parse(tBWDIn.Text));
  116. }
  117. //设定放大倍数
  118. private void button8_Click(object sender, EventArgs e)
  119. {
  120. iExtender.SetMagnification(float.Parse(tBMagIn.Text));
  121. }
  122. //设定亮度
  123. private void button9_Click(object sender, EventArgs e)
  124. {
  125. iExtender.SetBrightness(float.Parse(tBrightIn.Text));
  126. }
  127. //设定对比度
  128. private void button10_Click(object sender, EventArgs e)
  129. {
  130. iExtender.SetContrast(float.Parse(tBContrastIn.Text));
  131. }
  132. private void tBWDIn_KeyPress(object sender, KeyPressEventArgs e)
  133. {
  134. textBox_KeyPress(tBWDIn.Text, sender, e);
  135. }
  136. private void tBMagIn_KeyPress(object sender, KeyPressEventArgs e)
  137. {
  138. textBox_KeyPress(tBMagIn.Text, sender, e);
  139. }
  140. private void tBrightIn_KeyPress(object sender, KeyPressEventArgs e)
  141. {
  142. textBox_KeyPress(tBrightIn.Text, sender, e);
  143. }
  144. private void tBContrastIn_KeyPress(object sender, KeyPressEventArgs e)
  145. {
  146. textBox_KeyPress(tBContrastIn.Text, sender, e);
  147. }
  148. //获取X
  149. private void button11_Click(object sender, EventArgs e)
  150. {
  151. tBX.Text = iExtender.GetStageAtX().ToString();
  152. }
  153. //获取Y
  154. private void button12_Click(object sender, EventArgs e)
  155. {
  156. tBY.Text = iExtender.GetStageAtY().ToString();
  157. }
  158. //获取Z
  159. private void button13_Click(object sender, EventArgs e)
  160. {
  161. tBZ.Text = iExtender.GetStageAtZ().ToString();
  162. }
  163. //获取T
  164. private void button14_Click(object sender, EventArgs e)
  165. {
  166. tBT.Text = iExtender.GetStageAtT().ToString();
  167. }
  168. //获取R
  169. private void button15_Click(object sender, EventArgs e)
  170. {
  171. tBR.Text = iExtender.GetStageAtR().ToString();
  172. }
  173. //获取全部
  174. private void button21_Click(object sender, EventArgs e)
  175. {
  176. tBX.Text = iExtender.GetStageAtX().ToString();
  177. tBY.Text = iExtender.GetStageAtY().ToString();
  178. tBZ.Text = iExtender.GetStageAtZ().ToString();
  179. tBT.Text = iExtender.GetStageAtT().ToString();
  180. tBR.Text = iExtender.GetStageAtR().ToString();
  181. }
  182. //设定XY
  183. private void button22_Click(object sender, EventArgs e)
  184. {
  185. iExtender.MoveStageXY(float.Parse(tBXIn.Text), float.Parse(tBYIn.Text));
  186. }
  187. //设定全部
  188. private void button23_Click(object sender, EventArgs e)
  189. {
  190. float[] pos = new float[5];
  191. pos[0] = float.Parse(tBXIn.Text);
  192. pos[1] = float.Parse(tBYIn.Text);
  193. pos[2] = float.Parse(tBZIn.Text);
  194. pos[3] = float.Parse(tBTIn.Text);
  195. pos[4] = float.Parse(tBRIn.Text);
  196. iExtender.SetStagePosition(pos);
  197. }
  198. //设定X
  199. private void button16_Click(object sender, EventArgs e)
  200. {
  201. iExtender.SetStageGotoX(float.Parse(tBXIn.Text));
  202. }
  203. //设定Y
  204. private void button17_Click(object sender, EventArgs e)
  205. {
  206. iExtender.SetStageGotoY(float.Parse(tBYIn.Text));
  207. }
  208. //设定Z
  209. private void button18_Click(object sender, EventArgs e)
  210. {
  211. iExtender.SetStageGotoZ(float.Parse(tBZIn.Text));
  212. }
  213. //设定T
  214. private void button19_Click(object sender, EventArgs e)
  215. {
  216. iExtender.SetStageGotoT(float.Parse(tBTIn.Text));
  217. }
  218. //设定R
  219. private void button20_Click(object sender, EventArgs e)
  220. {
  221. iExtender.SetStageGotoR(float.Parse(tBRIn.Text));
  222. }
  223. private void tBXIn_KeyPress(object sender, KeyPressEventArgs e)
  224. {
  225. textBox_KeyPress(tBXIn.Text, sender, e);
  226. }
  227. private void tBYIn_KeyPress(object sender, KeyPressEventArgs e)
  228. {
  229. textBox_KeyPress(tBYIn.Text, sender, e);
  230. }
  231. private void tBZIn_KeyPress(object sender, KeyPressEventArgs e)
  232. {
  233. textBox_KeyPress(tBZIn.Text, sender, e);
  234. }
  235. private void tBTIn_KeyPress(object sender, KeyPressEventArgs e)
  236. {
  237. textBox_KeyPress(tBTIn.Text, sender, e);
  238. }
  239. private void tBRIn_KeyPress(object sender, KeyPressEventArgs e)
  240. {
  241. textBox_KeyPress(tBRIn.Text, sender, e);
  242. }
  243. private void button24_Click(object sender, EventArgs e)
  244. {
  245. string path = System.Environment.CurrentDirectory;
  246. iExtender.GrabImage(path+"\\测试.tif", 0, 0, 0, 0, 0);
  247. Bitmap ExtenderImage = iExtender.GetBitmap();
  248. if (ExtenderImage != null)
  249. {
  250. pBImage.Image = ExtenderImage;
  251. }
  252. }
  253. int li = 0;
  254. //点采集
  255. private void button25_Click(object sender, EventArgs e)
  256. {
  257. long[] XrayData = new long[2000];
  258. Dictionary<string, double> listElement = new Dictionary<string, double>();
  259. iExtender.XrayPointCollecting(2000,Convert.ToInt32(txtpx1.Text), Convert.ToInt32(txtpy1.Text), out XrayData, out listElement);
  260. ShowData(XrayData, listElement);
  261. li++;
  262. }
  263. void ShowData(long[] XrayData, Dictionary<string, double> listElement)
  264. {
  265. Series series = chart1.Series[0];
  266. series.Points.Clear();
  267. for (int i = 0; i < 2000; i++)
  268. {
  269. series.Points.AddXY(i, XrayData[i]);
  270. }
  271. this.dataGridView1.Rows.Clear();
  272. int index = 0;
  273. var ie = listElement.GetEnumerator();
  274. while (ie.MoveNext())
  275. {
  276. this.dataGridView1.Rows.Add();
  277. this.dataGridView1.Rows[index].Cells[0].Value = ie.Current.Key;
  278. this.dataGridView1.Rows[index].Cells[1].Value = ie.Current.Value;
  279. index++;
  280. }
  281. }
  282. void ShowReadData(long[] XrayData)
  283. {
  284. Series series = chart1.Series[1];
  285. series.Points.Clear();
  286. for (int i = 0; i < 2000; i++)
  287. {
  288. series.Points.AddXY(i, XrayData[i]);
  289. }
  290. }
  291. //面采集
  292. private void button26_Click(object sender, EventArgs e)
  293. {
  294. long[] XrayData = new long[2000];
  295. Dictionary<string, double> listElement = new Dictionary<string, double>();
  296. List<Segment> listSeg = new List<Segment>();
  297. Segment seg1 = new Segment();
  298. seg1.X = 1;
  299. seg1.Y = 1;
  300. seg1.Length = 10;
  301. listSeg.Add(seg1);
  302. Segment seg2 = new Segment();
  303. seg2.X = 1;
  304. seg2.Y = 10;
  305. seg2.Length = 10;
  306. listSeg.Add(seg2);
  307. iExtender.XrayAreaCollectiong(200, listSeg, out XrayData, out listElement);
  308. ShowData(XrayData, listElement);
  309. }
  310. private void btnCreateDB_Click(object sender, EventArgs e)
  311. {
  312. MeasureFile msf = new MeasureFile();
  313. //msf.FileName = @"E:\HOZ\Test\asd.msf";
  314. // MeasureDB db = new MeasureDB(msf);
  315. }
  316. private void btnReadP_Click(object sender, EventArgs e)
  317. {
  318. SQLiteConnection m_db = new SQLiteConnection("data source =" + @"E:\HOZ\Test\MeasureDB.db");
  319. m_db.Open();
  320. String sql = "Select XrayData from XrayData where ID =" + NUDNum.Value.ToString();
  321. //SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, m_db);
  322. //DataSet ds = new DataSet();
  323. //adapter.Fill(ds);
  324. //DataTable dt = ds.Tables[0];
  325. SQLiteCommand cmd = new SQLiteCommand(sql, m_db);
  326. SQLiteDataReader sdr = cmd.ExecuteReader();
  327. sdr.Read();
  328. byte[] blob = null;
  329. blob = new byte[sdr.GetBytes(0, 0, null, 0, int.MaxValue)];
  330. sdr.GetBytes(0, 0, blob, 0, blob.Length);
  331. sdr.Close();
  332. m_db.Close();
  333. m_db.Dispose();
  334. long[] rd = new long[blob.Length / 4];
  335. for(int i=0;i<rd.Length;i++)
  336. {
  337. long temp = BitConverter.ToInt32(blob, i * 4);
  338. rd[i] = temp + 10;
  339. }
  340. ShowReadData(rd);
  341. }
  342. int xraydata_id = 1;
  343. int analysispoints_id = 1;
  344. private void btnTest_Click(object sender, EventArgs e)
  345. {
  346. List<Point> listPoints = new List<Point>();
  347. List<List<Segment>> listFeature = new List<List<Segment>>();
  348. List<Segment> ls = new List<Segment>();
  349. listPoints.Add(new Point(Convert.ToInt32(txtpx1.Text), Convert.ToInt32(txtpy1.Text)));
  350. listPoints.Add(new Point(Convert.ToInt32(txtpx2.Text), Convert.ToInt32(txtpy2.Text)));
  351. listPoints.Add(new Point(Convert.ToInt32(txtpx3.Text), Convert.ToInt32(txtpy3.Text)));
  352. listPoints.Add(new Point(Convert.ToInt32(txtpx4.Text), Convert.ToInt32(txtpy4.Text)));
  353. listPoints.Add(new Point(Convert.ToInt32(txtpx5.Text), Convert.ToInt32(txtpy5.Text)));
  354. Segment sgt = new Segment();
  355. sgt.X = Convert.ToInt32(txtarea1x1.Text);
  356. sgt.Y = Convert.ToInt32(txtarea1y1.Text);
  357. sgt.Length = Convert.ToInt32(txtarea1l1.Text);
  358. ls.Add(sgt);
  359. sgt = new Segment();
  360. sgt.X = Convert.ToInt32(txtarea1x2.Text);
  361. sgt.Y = Convert.ToInt32(txtarea1y2.Text);
  362. sgt.Length = Convert.ToInt32(txtarea1l2.Text);
  363. ls.Add(sgt);
  364. sgt = new Segment();
  365. sgt.X = Convert.ToInt32(txtarea1x3.Text);
  366. sgt.Y = Convert.ToInt32(txtarea1y3.Text);
  367. sgt.Length = Convert.ToInt32(txtarea1l3.Text);
  368. ls.Add(sgt);
  369. listFeature.Add(ls);
  370. ls = new List<Segment>();
  371. sgt = new Segment();
  372. sgt.X = Convert.ToInt32(txtarea2x1.Text);
  373. sgt.Y = Convert.ToInt32(txtarea2y1.Text);
  374. sgt.Length = Convert.ToInt32(txtarea2l1.Text);
  375. ls.Add(sgt);
  376. sgt = new Segment();
  377. sgt.X = Convert.ToInt32(txtarea2x2.Text);
  378. sgt.Y = Convert.ToInt32(txtarea2y2.Text);
  379. sgt.Length = Convert.ToInt32(txtarea2l2.Text);
  380. ls.Add(sgt);
  381. sgt = new Segment();
  382. sgt.X = Convert.ToInt32(txtarea2x3.Text);
  383. sgt.Y = Convert.ToInt32(txtarea2y3.Text);
  384. sgt.Length = Convert.ToInt32(txtarea2l3.Text);
  385. ls.Add(sgt);
  386. listFeature.Add(ls);
  387. //m_MeasDB.InsetAPoint(analysispoints_id, pname[analysispoints_id-1], @"D:\\", listPoints.Count, listFeature.Count);
  388. long[] XrayData = null;
  389. Dictionary<string, double> listElement = null;
  390. //点扫描数据存储
  391. for(int i=0;i<listPoints.Count;i++)
  392. {
  393. XrayData = new long[2000];
  394. listElement = new Dictionary<string, double>();
  395. iExtender.XrayPointCollecting(msf.MParam.EDSParam.DwellTime, listPoints[i].X, listPoints[i].Y, out XrayData, out listElement);
  396. //m_MeasDB.InsertAPointXay(analysispoints_id, xraydata_id, listPoints[i].X, listPoints[i].Y, XrayData, listElement);
  397. xraydata_id++;
  398. }
  399. //面扫描数据存储
  400. int AreasNo = 0;
  401. foreach (List<Segment> listSeg in listFeature)
  402. {
  403. XrayData = new long[2000];
  404. listElement = new Dictionary<string, double>();
  405. iExtender.XrayAreaCollectiong(msf.MParam.EDSParam.AreaTime, listSeg, out XrayData, out listElement);
  406. //写入数据库
  407. AreasNo++;
  408. //m_MeasDB.InsertAAreaXay(analysispoints_id, xraydata_id, AreasNo, listSeg, XrayData, listElement);
  409. xraydata_id++;
  410. }
  411. analysispoints_id++;
  412. MessageBox.Show("测试完成!");
  413. }
  414. MeasureDB m_MeasDB = null;
  415. MeasureFile msf = null;
  416. List<String> pname = new List<string>();
  417. private void Form1_Load(object sender, EventArgs e)
  418. {
  419. //向数据库插入分析点数据
  420. msf = new MeasureFile();
  421. msf.FileName = @"E:\HOZ\Test\asd.msf";
  422. msf.MParam.EDSParam.DwellTime = 200;
  423. msf.MParam.EDSParam.AreaTime = 200;
  424. // m_MeasDB = new MeasureDB(msf);
  425. pname.Add("aaaa");
  426. pname.Add("bbbb");
  427. pname.Add("cccc");
  428. OTSMeasureOutputNlog lowWindow = new OTSMeasureOutputNlog();
  429. lowWindow.Visible = true;
  430. }
  431. private void button27_Click(object sender, EventArgs e)
  432. {
  433. try
  434. {
  435. iExtender = factoryExtender.IExtender;
  436. MessageBox.Show("连接能谱成功");
  437. }
  438. catch (Exception x)
  439. {
  440. MessageBox.Show("oxford 初始化失败" + x.Message);
  441. }
  442. }
  443. private void button28_Click(object sender, EventArgs e)
  444. {
  445. var log = NLog.LogManager.GetCurrentClassLogger();
  446. log.Info("sfdasdfasdsafgasddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",false);
  447. }
  448. private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  449. {
  450. if (iExtender != null)
  451. {
  452. iExtender.CloseExtender();
  453. }
  454. }
  455. private void button29_Click(object sender, EventArgs e)
  456. {
  457. long[] XrayData = new long[2000];
  458. Dictionary<string, double> listElement = new Dictionary<string, double>();
  459. Segment seg1 = new Segment();
  460. seg1.X = Convert.ToInt32(textRegionX1.Text);
  461. seg1.Y = Convert.ToInt32(textRegionY1.Text);
  462. seg1.Length = Convert.ToInt32(textRegionwidth1.Text);
  463. int h = Convert.ToInt32(textRegionHeight.Text);
  464. List<Segment> listSeg = new List<Segment>();
  465. for (int i = 0; i < h; i++)
  466. {
  467. Segment seg2 = new Segment();
  468. seg2.X = seg1.X;
  469. seg2.Y = seg1.Y + i;
  470. seg2.Length = seg1.Length;
  471. listSeg.Add(seg2);
  472. }
  473. iExtender.XrayAreaCollectiong(Convert.ToInt32(textTime.Text), listSeg, out XrayData, out listElement);
  474. ShowData(XrayData, listElement);
  475. }
  476. private void button30_Click(object sender, EventArgs e)
  477. {
  478. MeasureThread.Measure mt ;
  479. //mt = new Measure(ConfigurationManager.AppSettings["WebServerIP"].ToString(),
  480. // ConfigurationManager.AppSettings["WebServerPort"].ToString(),
  481. // ConfigurationManager.AppSettings["WebServerUrl"].ToString(), );
  482. //mt.EDS_Analysis(mt.MeasureFile.ListCutHole[0]);
  483. }
  484. }
  485. }