Form1.cs 20 KB

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