Form1.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  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.XrayPointCollectiong(200,44, 55, out XrayData, out listElement);
  258. ShowData(XrayData, listElement);
  259. li++;
  260. // Console.WriteLine(li.ToString());
  261. //byte[] bArray = new byte[8000];
  262. //for (int i = 0; i < 2000; i++)
  263. //{
  264. // byte[] temps = BitConverter.GetBytes(XrayData[i]);
  265. // bArray[i * 4] = temps[0];
  266. // bArray[i * 4 + 1] = temps[1];
  267. // bArray[i * 4 + 2] = temps[2];
  268. // bArray[i * 4 + 3] = temps[3];
  269. //}
  270. //SQLiteConnection m_db = new SQLiteConnection("data source =" + @"E:\HOZ\Test\MeasureDB.db");
  271. //m_db.Open();
  272. ////开启一个事务
  273. //using (SQLiteTransaction tr = m_db.BeginTransaction())
  274. //{
  275. // //向能谱数据表插入数据
  276. // string sql = "INSERT INTO XrayData(ID, APID, Type, X, Y, AreasID, ElementNum, XrayData) values ("
  277. // + 2.ToString() + ","
  278. // + 3.ToString() + ","
  279. // + 0.ToString() + ","
  280. // + 111.ToString() + ","
  281. // + 222.ToString() + ","
  282. // + (-1).ToString() + ","
  283. // + listElement.Count.ToString() + ",:XrayData)";
  284. // SQLiteCommand command = new SQLiteCommand(sql, m_db);
  285. // command.Parameters.Add("XrayData", System.Data.DbType.Binary).Value = bArray; // BLOB
  286. // command.ExecuteNonQuery();
  287. // //向能谱元素表插入数据
  288. // int i = 0;
  289. // foreach (KeyValuePair<string, double> element in listElement)
  290. // {
  291. // sql = "INSERT INTO Element(XayID, ElementNum, ElementID, Name, Percent) values ("
  292. // + 2.ToString() + ","
  293. // + listElement.Count.ToString() + ","
  294. // + i.ToString() + ",'"
  295. // + element.Key + "',"
  296. // + element.Value.ToString() + ")";
  297. // command = new SQLiteCommand(sql, m_db);
  298. // command.ExecuteNonQuery();
  299. // i++;
  300. // }
  301. // tr.Commit();
  302. //}
  303. //m_db.Close();
  304. //m_db.Dispose();
  305. }
  306. void ShowData(long[] XrayData, Dictionary<string, double> listElement)
  307. {
  308. Series series = chart1.Series[0];
  309. series.Points.Clear();
  310. for (int i = 0; i < 2000; i++)
  311. {
  312. series.Points.AddXY(i, XrayData[i]);
  313. }
  314. this.dataGridView1.Rows.Clear();
  315. int index = 0;
  316. var ie = listElement.GetEnumerator();
  317. while (ie.MoveNext())
  318. {
  319. this.dataGridView1.Rows.Add();
  320. this.dataGridView1.Rows[index].Cells[0].Value = ie.Current.Key;
  321. this.dataGridView1.Rows[index].Cells[1].Value = ie.Current.Value;
  322. index++;
  323. }
  324. }
  325. void ShowReadData(long[] XrayData)
  326. {
  327. Series series = chart1.Series[1];
  328. series.Points.Clear();
  329. for (int i = 0; i < 2000; i++)
  330. {
  331. series.Points.AddXY(i, XrayData[i]);
  332. }
  333. }
  334. //面采集
  335. private void button26_Click(object sender, EventArgs e)
  336. {
  337. long[] XrayData = new long[2000];
  338. Dictionary<string, double> listElement = new Dictionary<string, double>();
  339. List<Segment> listSeg = new List<Segment>();
  340. Segment seg1 = new Segment();
  341. seg1.X = 1;
  342. seg1.Y = 1;
  343. seg1.Length = 10;
  344. listSeg.Add(seg1);
  345. Segment seg2 = new Segment();
  346. seg2.X = 1;
  347. seg2.Y = 10;
  348. seg2.Length = 10;
  349. listSeg.Add(seg2);
  350. iExtender.XrayAreaCollectiong(200, listSeg, out XrayData, out listElement);
  351. ShowData(XrayData, listElement);
  352. }
  353. private void btnCreateDB_Click(object sender, EventArgs e)
  354. {
  355. MeasureFile msf = new MeasureFile();
  356. msf.FileName = @"E:\HOZ\Test\asd.msf";
  357. MeasureDB db = new MeasureDB(msf);
  358. }
  359. private void btnReadP_Click(object sender, EventArgs e)
  360. {
  361. SQLiteConnection m_db = new SQLiteConnection("data source =" + @"E:\HOZ\Test\MeasureDB.db");
  362. m_db.Open();
  363. String sql = "Select XrayData from XrayData where ID =" + NUDNum.Value.ToString();
  364. //SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, m_db);
  365. //DataSet ds = new DataSet();
  366. //adapter.Fill(ds);
  367. //DataTable dt = ds.Tables[0];
  368. SQLiteCommand cmd = new SQLiteCommand(sql, m_db);
  369. SQLiteDataReader sdr = cmd.ExecuteReader();
  370. sdr.Read();
  371. byte[] blob = null;
  372. blob = new byte[sdr.GetBytes(0, 0, null, 0, int.MaxValue)];
  373. sdr.GetBytes(0, 0, blob, 0, blob.Length);
  374. sdr.Close();
  375. m_db.Close();
  376. m_db.Dispose();
  377. long[] rd = new long[blob.Length / 4];
  378. for(int i=0;i<rd.Length;i++)
  379. {
  380. long temp = BitConverter.ToInt32(blob, i * 4);
  381. rd[i] = temp + 10;
  382. }
  383. ShowReadData(rd);
  384. }
  385. int xraydata_id = 1;
  386. int analysispoints_id = 1;
  387. private void btnTest_Click(object sender, EventArgs e)
  388. {
  389. List<Point> listPoints = new List<Point>();
  390. List<List<Segment>> listFeature = new List<List<Segment>>();
  391. List<Segment> ls = new List<Segment>();
  392. listPoints.Add(new Point(Convert.ToInt32(txtpx1.Text), Convert.ToInt32(txtpy1.Text)));
  393. listPoints.Add(new Point(Convert.ToInt32(txtpx2.Text), Convert.ToInt32(txtpy2.Text)));
  394. listPoints.Add(new Point(Convert.ToInt32(txtpx3.Text), Convert.ToInt32(txtpy3.Text)));
  395. listPoints.Add(new Point(Convert.ToInt32(txtpx4.Text), Convert.ToInt32(txtpy4.Text)));
  396. listPoints.Add(new Point(Convert.ToInt32(txtpx5.Text), Convert.ToInt32(txtpy5.Text)));
  397. Segment sgt = new Segment();
  398. sgt.X = Convert.ToInt32(txtarea1x1.Text);
  399. sgt.Y = Convert.ToInt32(txtarea1y1.Text);
  400. sgt.Length = Convert.ToInt32(txtarea1l1.Text);
  401. ls.Add(sgt);
  402. sgt = new Segment();
  403. sgt.X = Convert.ToInt32(txtarea1x2.Text);
  404. sgt.Y = Convert.ToInt32(txtarea1y2.Text);
  405. sgt.Length = Convert.ToInt32(txtarea1l2.Text);
  406. ls.Add(sgt);
  407. sgt = new Segment();
  408. sgt.X = Convert.ToInt32(txtarea1x3.Text);
  409. sgt.Y = Convert.ToInt32(txtarea1y3.Text);
  410. sgt.Length = Convert.ToInt32(txtarea1l3.Text);
  411. ls.Add(sgt);
  412. listFeature.Add(ls);
  413. ls = new List<Segment>();
  414. sgt = new Segment();
  415. sgt.X = Convert.ToInt32(txtarea2x1.Text);
  416. sgt.Y = Convert.ToInt32(txtarea2y1.Text);
  417. sgt.Length = Convert.ToInt32(txtarea2l1.Text);
  418. ls.Add(sgt);
  419. sgt = new Segment();
  420. sgt.X = Convert.ToInt32(txtarea2x2.Text);
  421. sgt.Y = Convert.ToInt32(txtarea2y2.Text);
  422. sgt.Length = Convert.ToInt32(txtarea2l2.Text);
  423. ls.Add(sgt);
  424. sgt = new Segment();
  425. sgt.X = Convert.ToInt32(txtarea2x3.Text);
  426. sgt.Y = Convert.ToInt32(txtarea2y3.Text);
  427. sgt.Length = Convert.ToInt32(txtarea2l3.Text);
  428. ls.Add(sgt);
  429. listFeature.Add(ls);
  430. //m_MeasDB.InsetAPoint(analysispoints_id, pname[analysispoints_id-1], @"D:\\", listPoints.Count, listFeature.Count);
  431. long[] XrayData = null;
  432. Dictionary<string, double> listElement = null;
  433. //点扫描数据存储
  434. for(int i=0;i<listPoints.Count;i++)
  435. {
  436. XrayData = new long[2000];
  437. listElement = new Dictionary<string, double>();
  438. iExtender.XrayPointCollectiong(msf.MParam.EDSP.DwellTime, listPoints[i].X, listPoints[i].Y, out XrayData, out listElement);
  439. //m_MeasDB.InsertAPointXay(analysispoints_id, xraydata_id, listPoints[i].X, listPoints[i].Y, XrayData, listElement);
  440. xraydata_id++;
  441. }
  442. //面扫描数据存储
  443. int AreasNo = 0;
  444. foreach (List<Segment> listSeg in listFeature)
  445. {
  446. XrayData = new long[2000];
  447. listElement = new Dictionary<string, double>();
  448. iExtender.XrayAreaCollectiong(msf.MParam.EDSP.AreaTime, listSeg, out XrayData, out listElement);
  449. //写入数据库
  450. AreasNo++;
  451. //m_MeasDB.InsertAAreaXay(analysispoints_id, xraydata_id, AreasNo, listSeg, XrayData, listElement);
  452. xraydata_id++;
  453. }
  454. analysispoints_id++;
  455. MessageBox.Show("测试完成!");
  456. }
  457. MeasureDB m_MeasDB = null;
  458. MeasureFile msf = null;
  459. List<String> pname = new List<string>();
  460. private void Form1_Load(object sender, EventArgs e)
  461. {
  462. //向数据库插入分析点数据
  463. msf = new MeasureFile();
  464. msf.FileName = @"E:\HOZ\Test\asd.msf";
  465. msf.MParam.EDSP.DwellTime = 200;
  466. msf.MParam.EDSP.AreaTime = 200;
  467. m_MeasDB = new MeasureDB(msf);
  468. pname.Add("aaaa");
  469. pname.Add("bbbb");
  470. pname.Add("cccc");
  471. OTSMeasureOutputNlog lowWindow = new OTSMeasureOutputNlog();
  472. lowWindow.Visible = true;
  473. }
  474. private void button27_Click(object sender, EventArgs e)
  475. {
  476. try
  477. {
  478. iExtender = factoryExtender.IExtender;
  479. MessageBox.Show("连接能谱成功");
  480. }
  481. catch (Exception x)
  482. {
  483. MessageBox.Show("oxford 初始化失败" + x.Message);
  484. }
  485. }
  486. private void button28_Click(object sender, EventArgs e)
  487. {
  488. var log = NLog.LogManager.GetCurrentClassLogger();
  489. log.Info("sfdasdfasdsafgasddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",false);
  490. }
  491. private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  492. {
  493. if (iExtender != null)
  494. {
  495. iExtender.CloseExtender();
  496. }
  497. }
  498. }
  499. }