ControllerSettingForm.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. using System;
  2. /*
  3. --创建人:韩维柏
  4. --创建日期:2017-06-20
  5. --修改人:
  6. --修改日期:
  7. --说明:Xray设置
  8. */
  9. using System.Drawing;
  10. using System.Windows.Forms;
  11. using System.Xml;
  12. using System.IO;
  13. using System.Windows.Forms.DataVisualization.Charting;
  14. using System.Threading;
  15. using System.Collections;
  16. using System.Collections.Generic;
  17. using OTSCLRINTERFACE;
  18. using OTSModelSharp.ServiceCenter;
  19. namespace OTSSysMgrApp
  20. {
  21. public partial class ControllerSettingForm : Form
  22. {
  23. #region 全部变量声明
  24. //连接状态
  25. bool ConnectionState = false;
  26. static string xmlFilePath = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFilePath"].ConnectionString;
  27. //日志路径
  28. static string LogPath = System.Configuration.ConfigurationManager.ConnectionStrings["LogPath"].ConnectionString;
  29. static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
  30. IEDSController m_EDSHardwareMgr = null;
  31. //图片
  32. Bitmap bitmap = null;
  33. //国际化
  34. Language lan;
  35. //国际化存储信息
  36. Hashtable table;
  37. #endregion
  38. public enum connectionEnumType
  39. {
  40. EDSOnlyPointXRay = 0,
  41. EDSMultiPointXRay = 1,
  42. EDSAreaXRay = 2,
  43. ScanImage = 3
  44. }
  45. #region 构造函数
  46. public ControllerSettingForm()
  47. {
  48. InitializeComponent();
  49. m_EDSHardwareMgr = EDSController.GetEDSController(Convert.ToInt32(tbRWidth.Text), Convert.ToInt32(tbRHeight.Text), 5000);
  50. lan = new Language(this);
  51. table = lan.GetNameTable(this.Name);
  52. }
  53. /// <summary>
  54. /// 连接电镜
  55. /// </summary>
  56. /// <param name="connectionType"></param>
  57. public bool ConnectionSem(connectionEnumType connectionType)
  58. {
  59. //连接电镜标识
  60. bool DisConnResult = false;
  61. //判断连接状态
  62. if (!ConnectionState)
  63. {
  64. //连接电镜设置
  65. DisConnResult = m_EDSHardwareMgr.Init();
  66. }
  67. if (DisConnResult)
  68. {
  69. ConnectionState = true;
  70. }
  71. else
  72. {
  73. ConnectionState = false;
  74. }
  75. return DisConnResult;
  76. }
  77. /// <summary>
  78. /// EDS初始化
  79. /// </summary>
  80. public bool EDSInit()
  81. {
  82. bool initResult = false;
  83. //线程调用 加载
  84. initResult = m_EDSHardwareMgr.Init();
  85. return initResult;
  86. }
  87. #endregion
  88. #region 窗体中控件事件汇总
  89. private void btnClearXRay_Click(object sender, EventArgs e)
  90. {
  91. chartXRay.Series.RemoveAt(0);
  92. }
  93. private void btnCollectionTime_Click(object sender, EventArgs e)
  94. {
  95. try
  96. {
  97. int CollectionTime = 0;
  98. //判断是否为空与类型
  99. if (!IsNull(tbCollectionTime))
  100. {
  101. tbCollectionTime.Focus();
  102. return;
  103. }
  104. if (!IsType(tbCollectionTime.Text, 1))
  105. {
  106. tbCollectionTime.Focus();
  107. return;
  108. }
  109. //获取参数与设置参数
  110. CollectionTime = Convert.ToInt32(tbCollectionTime.Text);
  111. bool result = false;
  112. if (result)
  113. {
  114. //配置结果提示
  115. ShowMessage(3);
  116. }
  117. else
  118. {
  119. ShowMessage(4);
  120. }
  121. }
  122. catch (Exception ex)
  123. {
  124. //记录日志信息(异常日志)
  125. log.Error(ex.Message.ToString());
  126. }
  127. }
  128. private void ControllerSettingForm_Load(object sender, EventArgs e)
  129. {
  130. //设置窗体图表
  131. Control.CheckForIllegalCrossThreadCalls = false;
  132. ddlDwellTime.SelectedIndex = 2;
  133. InitXRayData();
  134. int width=Convert.ToInt32( tbRWidth.Text);
  135. int height =Convert.ToInt32(tbRHeight.Text);
  136. m_EDSHardwareMgr = EDSController.GetEDSController(width,height,5000);
  137. }
  138. Thread ScanThread = null;
  139. private void btnDisplay_Click(object sender, EventArgs e)
  140. {
  141. GetBSEDisplay();
  142. }
  143. private bool GetScanImage(int iWidth, int iHeigh, string DwellTime, ref byte[] bImageData)
  144. {
  145. //电镜设置对象
  146. var cfun = ScanController.GetScanController();
  147. int GetImgCount = 0;
  148. try
  149. {
  150. //连接电镜
  151. bool IsConnec = cfun.Init();
  152. if (!IsConnec)
  153. {
  154. return false;
  155. }
  156. #region 设置图像分辨率
  157. //设置宽度
  158. if (!cfun.SetImageSize(iWidth, iHeigh))
  159. {
  160. return false;
  161. }
  162. #endregion
  163. #region 采集时间
  164. //采集时间
  165. int nDwellTime = Convert.ToInt32(DwellTime);
  166. //设置采集时间
  167. if (!cfun.SetDwellTime(nDwellTime))
  168. {
  169. return false;
  170. }
  171. #endregion
  172. int resultCount = iWidth * iHeigh;
  173. var img = cfun.AcquireBSEImage();
  174. bImageData = img.GetImageDataPtr();
  175. }
  176. catch (Exception ex)
  177. {
  178. NLog.LogManager.GetCurrentClassLogger().Error(ex.ToString());
  179. return false;
  180. }
  181. return true;
  182. }
  183. protected void GetBSEDisplay()
  184. {
  185. try
  186. {
  187. string str1 = table["str1"].ToString();
  188. btnDisplay.Text = str1;
  189. btnDisplay.Enabled = false;
  190. btnDisplay.Refresh();
  191. if (pbImage.Image != null)
  192. {
  193. pbImage.Image = null;
  194. pbImage.Refresh();
  195. }
  196. Thread.Sleep(100);
  197. //设置图像分辨率
  198. int width = 0;
  199. int height = 0;
  200. //获取宽度
  201. width = Convert.ToInt32(tbRWidth.Text);
  202. height = Convert.ToInt32(tbRHeight.Text);
  203. byte[] ImageByte = new byte[width * height];
  204. Bitmap bitmap = null;
  205. int iWidth = Convert.ToInt32(tbRWidth.Text);
  206. int iHeight = Convert.ToInt32(tbRHeight.Text);
  207. bool resultValue = GetScanImage(iWidth, iHeight, ddlDwellTime.Text, ref ImageByte);
  208. string str2 = table["str2"].ToString();
  209. if (resultValue )
  210. {
  211. if (ImageByte != null)
  212. {
  213. bitmap = CImageHandler.ToGrayBitmap(ImageByte, width, height);
  214. pbImage.Image = bitmap;
  215. btnSaveImage.Enabled = true;
  216. log.Info("Image capture success!\nImage resolution:" + tbRWidth.Text + "X" + tbRHeight.Text + ";");
  217. }
  218. else
  219. {
  220. MessageBox.Show(str2, "Tip");
  221. }
  222. }
  223. else
  224. {
  225. MessageBox.Show(str2, "Tip");
  226. }
  227. }
  228. catch (Exception ex)
  229. {
  230. log.Error("ControllerSettingForm_btnDisplay_Click--错误信息:" + ex.ToString());
  231. }
  232. finally
  233. {
  234. string str = table["btndisplay"].ToString();
  235. btnDisplay.Text = str;
  236. btnDisplay.Enabled = true;
  237. btnDisplay.Refresh();
  238. }
  239. }
  240. private void btnClear_Click(object sender, EventArgs e)
  241. {
  242. pbImage.BackgroundImage = null;
  243. }
  244. Thread EDSThread = null;
  245. private void btnDisplayXRay_Click(object sender, EventArgs e)
  246. {
  247. try
  248. {
  249. string str1 = table["str1"].ToString();
  250. btnDisplayXRay.Text = str1;
  251. btnDisplayXRay.Enabled = false;
  252. btnDisplayXRay.Refresh();
  253. btnPointXRay.Enabled = false;
  254. btnPointXRay.Refresh();
  255. btnAreaRay.Enabled = false;
  256. btnAreaRay.Refresh();
  257. btnClearData.Enabled = false;
  258. btnClearData.Refresh();
  259. InitXRayData();
  260. if (ConnectionSem(connectionEnumType.EDSOnlyPointXRay))
  261. {
  262. if (EDSInit())
  263. {
  264. //图像数据
  265. uint[] a_XrayData = new uint[2000];
  266. uint a_Milliseconds = 0;
  267. //采集时间
  268. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  269. //采集XRay数据
  270. bool result = m_EDSHardwareMgr.CollectSpectrum(a_Milliseconds, ref a_XrayData);
  271. if (!result)
  272. {
  273. log.Info("CollectSpectrum failed!");
  274. }
  275. int[] XData = new int[2000];
  276. uint nXrayCount = 0;
  277. for (int i = 1; i <= 2000; i++)
  278. {
  279. XData[i - 1] = i;
  280. nXrayCount += a_XrayData[i - 1];
  281. }
  282. //绑定数据源
  283. chartData(XData, a_XrayData);
  284. //显示Xray计数
  285. lbXrayCount.Text = nXrayCount.ToString();
  286. }
  287. }
  288. log.Info("Single point collection succeeded!");
  289. }
  290. catch (Exception ex)
  291. {
  292. //记录日志
  293. log.Error(ex.Message.ToString());
  294. }
  295. finally
  296. {
  297. string str = table["btndisplayxray"].ToString();
  298. btnDisplayXRay.Text = str;
  299. btnDisplayXRay.Enabled = true;
  300. btnDisplayXRay.Refresh();
  301. btnPointXRay.Enabled = true;
  302. btnPointXRay.Refresh();
  303. btnAreaRay.Enabled = true;
  304. btnAreaRay.Refresh();
  305. btnClearData.Enabled = true;
  306. btnClearData.Refresh();
  307. }
  308. }
  309. public void RunEDSThread()
  310. {
  311. try
  312. {
  313. //图像数据
  314. uint[] a_XrayData = new uint[2000];
  315. uint a_Milliseconds = 0;
  316. //采集时间
  317. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  318. //采集XRay数据
  319. m_EDSHardwareMgr.CollectSpectrum(a_Milliseconds, ref a_XrayData);
  320. int[] XData = new int[2000];
  321. for (int i = 1; i <= 2000; i++)
  322. {
  323. XData[i - 1] = i;
  324. }
  325. //绑定数据源
  326. chartData(XData, a_XrayData);
  327. }
  328. catch (Exception ex)
  329. {
  330. //记录日志
  331. log.Error(ex.Message.ToString());
  332. }
  333. }
  334. public void chartData(int[] XData, uint[] YData)
  335. {
  336. //chartXRay = new Chart();
  337. //背景
  338. if (chartXRay.ChartAreas.Count == 0)
  339. {
  340. chartXRay.ChartAreas.Add(new ChartArea() { Name = "" }); //背景框
  341. }
  342. chartXRay.ChartAreas[0].Axes[0].MajorGrid.Enabled = false; //X轴上网格
  343. chartXRay.ChartAreas[0].Axes[1].MajorGrid.Enabled = false; //y轴上网格
  344. chartXRay.ChartAreas[0].Axes[0].MajorGrid.LineDashStyle = ChartDashStyle.Dash; //网格类型 短横线
  345. chartXRay.ChartAreas[0].Axes[0].MajorGrid.LineColor = Color.Gray;
  346. chartXRay.ChartAreas[0].Axes[0].MajorTickMark.Enabled = false; // x轴上突出的小点
  347. chartXRay.ChartAreas[0].Axes[1].MajorTickMark.Enabled = false; //
  348. chartXRay.ChartAreas[0].Axes[1].MajorGrid.LineWidth = 1;
  349. //图表数据区,有多个重叠则循环添加
  350. if (chartXRay.Series.Count == 0)
  351. {
  352. chartXRay.Series.Add(new Series() { Name = "" });
  353. }
  354. chartXRay.Series[0].ChartType = SeriesChartType.Line; //图类型(折线)
  355. chartXRay.Series[0].Points.DataBindXY(XData, YData); //添加数据
  356. chartXRay.Series[0].Label = "";
  357. chartXRay.Series[0].LegendText = "";
  358. //折线段配置
  359. chartXRay.Series[0].Color = Color.Blue; //线条颜色
  360. chartXRay.Series[0].BorderWidth = 1; //线条粗细
  361. chartXRay.Series[0].MarkerBorderColor = Color.Red; //标记点边框颜色
  362. chartXRay.Series[0].MarkerBorderWidth = 1; //标记点边框大小
  363. chartXRay.Series[0].MarkerColor = Color.Red; //标记点中心颜色
  364. chartXRay.Series[0].MarkerSize = 0; //标记点大小
  365. //chartXRay.Series[0].BorderWidth = 500;
  366. //另外
  367. //饼图说明设置,这用来设置饼图每一块的信息显示在什么地方
  368. chartXRay.Series[0]["PieLabelStyle"] = "Outside";//将文字移到外侧
  369. chartXRay.Series[0]["PieLineColor"] = "Black";//绘制黑色的连线。
  370. //柱状图其他设置
  371. chartXRay.Series[0]["DrawingStyle"] = "Emboss"; //设置柱状平面形状
  372. chartXRay.Series[0]["PointWidth"] = "0.1"; //设置柱状大小
  373. }
  374. #endregion
  375. #region 设置按钮事件
  376. private void btnSetInfo_Click(object sender, EventArgs e)
  377. {
  378. if (!IsConnection())
  379. {
  380. //return;
  381. }
  382. //获取响应按钮
  383. Button btnTest = (Button)sender;
  384. try
  385. {
  386. //节点名称与节点参数值
  387. string Name = string.Empty;
  388. string Value = string.Empty;
  389. //判断本地中是否存在文件路径
  390. if (ExistsFile(xmlFilePath))
  391. {
  392. //遍历tabHardwareSet标签中所有的TextBox控件
  393. foreach (Control control in this.tabXRay.Controls)
  394. {
  395. //判断类型名称
  396. if (control is TextBox)
  397. {
  398. Name = (control as TextBox).Name.Substring(2);
  399. if (btnTest.Name.Contains(Name))
  400. {
  401. //判断是否为空与类型
  402. if (!IsNull(((TextBox)control)))
  403. {
  404. ((TextBox)control).Focus();
  405. return;
  406. }
  407. if (!IsType(((TextBox)control).Text, 1))
  408. {
  409. ((TextBox)control).Focus();
  410. return;
  411. }
  412. //获取节点名称与节点参数值
  413. Value = (control as TextBox).Text;
  414. SaveSetting(Name, Value);
  415. }
  416. }
  417. }
  418. //遍历tabHardwareSet标签中所有的TextBox控件
  419. foreach (Control control in this.tabImage.Controls)
  420. {
  421. //判断类型名称
  422. if (control is TextBox)
  423. {
  424. Name = (control as TextBox).Name.Substring(2);
  425. if (btnTest.Name.Contains(Name))
  426. {
  427. //判断是否为空与类型
  428. if (!IsNull(((TextBox)control)))
  429. {
  430. ((TextBox)control).Focus();
  431. return;
  432. }
  433. if (!IsType(((TextBox)control).Text, 1))
  434. {
  435. ((TextBox)control).Focus();
  436. return;
  437. }
  438. //获取节点名称与节点参数值
  439. Value = (control as TextBox).Text;
  440. SaveSetting(Name, Value);
  441. }
  442. }
  443. }
  444. }
  445. else
  446. {
  447. //如果文件不存在,则创建文件
  448. CreateFile(xmlFilePath);
  449. }
  450. }
  451. catch (Exception ex)
  452. {
  453. //记录日志信息
  454. log.Error(ex.Message.ToString());
  455. }
  456. }
  457. #endregion
  458. #region 保存设置
  459. /// <summary>
  460. /// 保存设置
  461. /// </summary>
  462. /// <param name="Name">节点名称</param>
  463. /// <param name="Value">节点参数值</param>
  464. public void SaveSetting(string Name, string Value)
  465. {
  466. try
  467. {
  468. //判断XML文件中是否存在
  469. if (!XMLOperationClass.ExistsXmlInfo(Name))
  470. {
  471. //调用添加XML节点功能
  472. XMLOperationClass.AddXmlInfo(Name, Value);
  473. }
  474. else
  475. {
  476. //调用修改XML节点功能
  477. XMLOperationClass.EditXmlInfo(Name, Value);
  478. }
  479. }
  480. catch (Exception ex)
  481. {
  482. //记录日志信息
  483. log.Error(ex.Message.ToString());
  484. }
  485. }
  486. #endregion
  487. #region 修改设置
  488. public void EditSetting(string Name, string Value)
  489. {
  490. try
  491. {
  492. //调用修改XML节点功能
  493. XMLOperationClass.EditXmlInfo(Name, Value);
  494. }
  495. catch (Exception ex)
  496. {
  497. //记录日志信息
  498. log.Error(ex.Message.ToString());
  499. }
  500. }
  501. #endregion
  502. #region 判断文件路径
  503. /// <summary>
  504. /// 判断文件路径
  505. /// </summary>
  506. /// <param name="path"></param>
  507. /// <returns></returns>
  508. public bool CreateFile(string path)
  509. {
  510. Directory.CreateDirectory(path);
  511. return false;
  512. }
  513. #endregion
  514. #region 判断文件是否存在
  515. /// <summary>
  516. /// 判断文件是否存在
  517. /// </summary>
  518. /// <param name="path">文件路径</param>
  519. /// <returns></returns>
  520. public bool ExistsFile(string path)
  521. {
  522. try
  523. {
  524. if (File.Exists(path))
  525. {
  526. return true;
  527. }
  528. return false;
  529. }
  530. catch (Exception ex)
  531. {
  532. //记录日志信息
  533. log.Error(ex.Message.ToString());
  534. return false;
  535. }
  536. }
  537. #endregion
  538. #region 获取窗体中所有参数
  539. /// <summary>
  540. /// 获取窗体中控件的所有参数
  541. /// </summary>
  542. public void GetWindowsControlValue()
  543. {
  544. try
  545. {
  546. XmlDocument doc = new XmlDocument();
  547. //加载Xml文件
  548. doc.Load(xmlFilePath);
  549. //获取根节点
  550. XmlElement root = doc.DocumentElement;
  551. //获取子节点集合
  552. XmlNodeList mainNodes = root.GetElementsByTagName("parameter");
  553. foreach (XmlNode node in mainNodes)
  554. {
  555. //获取Name属性值
  556. string text = ((XmlElement)node).GetAttribute("Name");
  557. string value = ((XmlElement)node).GetAttribute("Value");
  558. foreach (Control control in this.tabXRay.Controls)
  559. {
  560. //判断类型名称
  561. if (control.Name.Contains(text))
  562. {
  563. if (control is TextBox)
  564. {
  565. ((TextBox)control).Text = value;
  566. }
  567. else if (control is ComboBox)
  568. {
  569. ((ComboBox)control).SelectedValue = value;
  570. }
  571. else if (control is CheckBox)
  572. {
  573. ((CheckBox)control).Checked = text.Equals("1") ? true : false;
  574. }
  575. }
  576. }
  577. foreach (Control control in this.tabImage.Controls)
  578. {
  579. //判断类型名称
  580. if (control.Name.Contains(text))
  581. {
  582. if (control is TextBox)
  583. {
  584. ((TextBox)control).Text = value;
  585. }
  586. else if (control is ComboBox)
  587. {
  588. ((ComboBox)control).SelectedValue = value;
  589. }
  590. else if (control is CheckBox)
  591. {
  592. ((CheckBox)control).Checked = text.Equals("1") ? true : false;
  593. }
  594. }
  595. }
  596. }
  597. }
  598. catch (Exception ex)
  599. {
  600. //记录日志信息
  601. log.Error(ex.Message.ToString());
  602. }
  603. }
  604. #endregion
  605. #region 用户信息提示
  606. /// <summary>
  607. /// 提示
  608. /// </summary>
  609. /// <param name="Message"></param>
  610. private void ShowMessage(int MessageType)
  611. {
  612. string message1 = table["message1"].ToString();
  613. string message2 = table["message2"].ToString();
  614. string message3 = table["message3"].ToString();
  615. string message4 = table["message4"].ToString();
  616. string message5 = table["message5"].ToString();
  617. string message6 = table["message6"].ToString();
  618. string message7 = table["message7"].ToString();
  619. string message8 = table["message8"].ToString();
  620. string message9 = table["message9"].ToString();
  621. string message10 = table["message10"].ToString();
  622. string MessageInfo = string.Empty;
  623. switch (MessageType)
  624. {
  625. case 0:
  626. MessageInfo = message1;
  627. break;
  628. case 1:
  629. MessageInfo = message2;
  630. break;
  631. case 2:
  632. MessageInfo = message3;
  633. break;
  634. case 3:
  635. MessageInfo = message4;
  636. break;
  637. case 4:
  638. MessageInfo = message5;
  639. break;
  640. case 5:
  641. MessageInfo = message6;
  642. break;
  643. case 6:
  644. MessageInfo = message7;
  645. break;
  646. case 7:
  647. MessageInfo = message8;
  648. break;
  649. case 8:
  650. MessageInfo = message9;
  651. break;
  652. case 9:
  653. MessageInfo = message10;
  654. break;
  655. }
  656. MessageBox.Show(MessageInfo, "Tip");
  657. }
  658. #endregion
  659. #region 判断控制内容是否为空 与 判断输入的格式是否正确
  660. /// <summary>
  661. /// 判断控制内容是否为空
  662. /// </summary>
  663. /// <param name="tbContent"></param>
  664. /// <returns></returns>
  665. public bool IsNull(TextBox tbContent)
  666. {
  667. if (tbContent.Text.Trim().Equals(""))
  668. {
  669. //为空提示
  670. ShowMessage(0);
  671. //获取焦点
  672. tbContent.Focus();
  673. return false;
  674. }
  675. return true;
  676. }
  677. /// <summary>
  678. ///
  679. /// </summary>
  680. /// <param name="objValue"></param>
  681. /// <param name="objType"></param>
  682. /// <returns></returns>
  683. public bool IsType(object ObjValue, int ObjType)
  684. {
  685. try
  686. {
  687. switch (ObjType)
  688. {
  689. case 1:
  690. int intValue = Convert.ToInt32(ObjValue);
  691. break;
  692. case 2:
  693. double douValue = Convert.ToDouble(ObjValue);
  694. break;
  695. case 3:
  696. float floValue = Convert.ToSingle(ObjValue);
  697. break;
  698. }
  699. return true;
  700. }
  701. catch (Exception)
  702. {
  703. //为空提示
  704. ShowMessage(7);
  705. return false;
  706. }
  707. }
  708. /// <summary>
  709. /// 判断是否连接
  710. /// </summary>
  711. /// <returns></returns>
  712. public bool IsConnection()
  713. {
  714. if (ConnectionState)
  715. {
  716. return true;
  717. }
  718. return false;
  719. }
  720. #endregion
  721. private void ControllerSettingForm_FormClosing(object sender, FormClosingEventArgs e)
  722. {
  723. }
  724. private void tabSetting_SelectedIndexChanged(object sender, EventArgs e)
  725. {
  726. try
  727. {
  728. if (ScanThread != null)
  729. {
  730. ScanThread.Abort();
  731. }
  732. if (EDSThread != null)
  733. {
  734. EDSThread.Abort();
  735. }
  736. if (tabSetting.SelectedIndex == 0)
  737. {
  738. EDSInit();
  739. }
  740. }
  741. catch (Exception)
  742. {
  743. }
  744. }
  745. private void btnSaveImage_Click(object sender, EventArgs e)
  746. {
  747. if (bitmap != null)
  748. {
  749. string fileName = LogPath + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpeg";
  750. bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
  751. }
  752. }
  753. private void btnPointXRay_Click(object sender, EventArgs e)
  754. {
  755. GetPointXRay();
  756. }
  757. protected void GetPointXRay()
  758. {
  759. try
  760. {
  761. string str = table["str1"].ToString();
  762. btnDisplayXRay.Enabled = false;
  763. btnDisplayXRay.Refresh();
  764. btnPointXRay.Text = str;
  765. btnPointXRay.Enabled = false;
  766. btnPointXRay.Refresh();
  767. btnAreaRay.Enabled = false;
  768. btnAreaRay.Refresh();
  769. btnClearData.Enabled = false;
  770. btnClearData.Refresh();
  771. InitXRayData();
  772. if (ConnectionSem(connectionEnumType.EDSMultiPointXRay))
  773. {
  774. if (EDSInit())
  775. {
  776. //图像数据
  777. uint[] a_XrayData = new uint[2000];
  778. uint a_Milliseconds = 0;
  779. //采集时间
  780. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  781. //采集XRay数据
  782. List<COTSParticleClr> cOTSParticleClrs = new List<COTSParticleClr>();
  783. for (int i = 0; i < 5; i++)
  784. {
  785. COTSParticleClr cOTSParticle = new COTSParticleClr();
  786. CPosXrayClr cPosXray = new CPosXrayClr();
  787. cOTSParticle.SetXray(cPosXray);
  788. cOTSParticle.SetXRayPos(new Point(100 + i, 100 + i));
  789. cOTSParticleClrs.Add(cOTSParticle);
  790. }
  791. //m_EDSHardwareMgr.SetResolution(int.Parse(tbRWidth.Text), int.Parse(tbRHeight.Text));
  792. bool result=m_EDSHardwareMgr.GetXRayByParts(cOTSParticleClrs, a_Milliseconds, false);
  793. if(!result)
  794. {
  795. log.Error("m_EDSHardwareMgr.GetXRayByPoints failed!");
  796. }
  797. int[] XData = new int[2000];
  798. uint nXrayCount = 0;
  799. for (int j = 0; j < 5; j++)
  800. {
  801. a_XrayData = cOTSParticleClrs[j].GetXray().GetXrayData();
  802. for (int i = 1; i <= 2000; i++)
  803. {
  804. XData[i - 1] = i;
  805. nXrayCount += a_XrayData[i - 1];
  806. }
  807. }
  808. //绑定数据源
  809. chartData(XData, a_XrayData);
  810. //显示Xray计数
  811. lbXrayCount.Text = nXrayCount.ToString();
  812. }
  813. }
  814. log.Info("Multipoint collection succeeded!");
  815. }
  816. catch (Exception ex)
  817. {
  818. //记录日志
  819. log.Error(ex.Message.ToString());
  820. }
  821. finally
  822. {
  823. string str = table["btnpointxray"].ToString();
  824. btnPointXRay.Text = str;
  825. btnPointXRay.Enabled = true;
  826. btnPointXRay.Refresh();
  827. btnDisplayXRay.Enabled = true;
  828. btnDisplayXRay.Refresh();
  829. btnAreaRay.Enabled = true;
  830. btnAreaRay.Refresh();
  831. btnClearData.Enabled = true;
  832. btnClearData.Refresh();
  833. }
  834. }
  835. private void btnAreaRay_Click(object sender, EventArgs e)
  836. {
  837. try
  838. {
  839. string str = table["str1"].ToString();
  840. btnDisplayXRay.Enabled = false;
  841. btnDisplayXRay.Refresh();
  842. btnPointXRay.Enabled = false;
  843. btnPointXRay.Refresh();
  844. btnAreaRay.Text = str;
  845. btnAreaRay.Enabled = false;
  846. btnAreaRay.Refresh();
  847. btnClearData.Enabled = false;
  848. btnClearData.Refresh();
  849. InitXRayData();
  850. if (ConnectionSem(connectionEnumType.EDSAreaXRay))
  851. {
  852. if (EDSInit())
  853. {
  854. //图像数据
  855. uint[] a_XrayData = new uint[2000];
  856. uint a_Milliseconds = 0;
  857. //采集时间
  858. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  859. //采集XRay数据
  860. var fea = new COTSFeatureClr();
  861. var segs = new List<COTSSegmentClr>();
  862. segs.Add(new COTSSegmentClr(5, 10, 12));
  863. segs.Add(new COTSSegmentClr(6, 10, 12));
  864. segs.Add(new COTSSegmentClr(7, 10, 12));
  865. fea.SetSegmentsList(segs, false);
  866. string ele = "";
  867. //设置图像分辨率
  868. int width = 0;
  869. int height = 0;
  870. //获取宽度
  871. //width = Convert.ToInt32(tbRWidth.Text);
  872. //height = Convert.ToInt32(tbRHeight.Text);
  873. //m_EDSHardwareMgr.SetResolution(width, height);
  874. bool isTrue = GetXRayBySingleFeature(a_Milliseconds, fea, ref a_XrayData,ref ele, false);
  875. int[] XData = new int[2000];
  876. uint nXrayCount = 0;
  877. for (int i = 1; i <= 2000; i++)
  878. {
  879. XData[i - 1] = i;
  880. nXrayCount += a_XrayData[i - 1];
  881. }
  882. //绑定数据源
  883. chartData(XData, a_XrayData);
  884. //显示Xray计数
  885. lbXrayCount.Text = nXrayCount.ToString();
  886. }
  887. }
  888. }
  889. catch (Exception ex)
  890. {
  891. //记录日志
  892. log.Error(ex.Message.ToString());
  893. }
  894. finally
  895. {
  896. string str = table["btnarearay"].ToString();
  897. btnPointXRay.Enabled = true;
  898. btnPointXRay.Refresh();
  899. btnDisplayXRay.Enabled = true;
  900. btnDisplayXRay.Refresh();
  901. btnAreaRay.Text = str;
  902. btnAreaRay.Enabled = true;
  903. btnAreaRay.Refresh();
  904. btnClearData.Enabled = true;
  905. btnClearData.Refresh();
  906. }
  907. }
  908. public bool GetXRayBySingleFeature(uint a_nXRayAQTime, COTSFeatureClr fea, ref uint[] a_XrayData, ref string ele, bool a_bElementInfo)
  909. {
  910. var eds = EDSController.GetEDSController(Convert.ToInt32(tbRWidth.Text),Convert.ToInt32(tbRHeight.Text),5000);
  911. var part = new COTSParticleClr();
  912. part.SetFeature(fea);
  913. var parts = new List<COTSParticleClr>();
  914. parts.Add(part);
  915. eds.GetXRayByFeatures(parts, a_nXRayAQTime, a_bElementInfo);
  916. a_XrayData = parts[0].GetXray().GetXrayData();
  917. ele = parts[0].GetXray().GetQuantifiedElementsStr();
  918. return true;
  919. }
  920. private void btnClearData_Click(object sender, EventArgs e)
  921. {
  922. try
  923. {
  924. InitXRayData();
  925. }
  926. catch (Exception ex)
  927. {
  928. //记录日志
  929. log.Error(ex.Message.ToString());
  930. }
  931. }
  932. public void InitXRayData()
  933. {
  934. try
  935. {
  936. //图像数据
  937. uint[] a_XrayData = new uint[2000];
  938. uint a_Milliseconds = 0;
  939. //采集时间
  940. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  941. //采集XRay数据
  942. int[] XData = new int[2000];
  943. uint nXrayCount = 0;
  944. for (int i = 1; i <= 2000; i++)
  945. {
  946. XData[i - 1] = i;
  947. nXrayCount += a_XrayData[i - 1];
  948. }
  949. //绑定数据源
  950. chartData(XData, a_XrayData);
  951. //显示Xray计数
  952. lbXrayCount.Text = nXrayCount.ToString();
  953. chartXRay.Refresh();
  954. ConnectionState = false;
  955. log.Info("Cleared successfully!");
  956. }
  957. catch (Exception ex)
  958. {
  959. //记录日志
  960. log.Error(ex.Message.ToString());
  961. }
  962. }
  963. #region 获取元素分析
  964. private void btnEanalysis_Click(object sender, EventArgs e)
  965. {
  966. try
  967. {
  968. string str = table["str1"].ToString();
  969. btnDisplayXRay.Enabled = false;
  970. btnDisplayXRay.Refresh();
  971. btnPointXRay.Enabled = false;
  972. btnPointXRay.Refresh();
  973. btnAreaRay.Enabled = false;
  974. btnAreaRay.Refresh();
  975. btnEanalysis.Text = str;
  976. btnEanalysis.Enabled = false;
  977. btnEanalysis.Refresh();
  978. btnClearData.Enabled = false;
  979. btnClearData.Refresh();
  980. InitXRayData();
  981. if (ConnectionSem(connectionEnumType.EDSAreaXRay))
  982. {
  983. if (EDSInit())
  984. {
  985. //图像数据
  986. uint[] a_XrayData = new uint[2000];
  987. uint a_Milliseconds = 0;
  988. //采集时间
  989. a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);
  990. //采集元素分析数据
  991. ValueType a_nElementNum = 0;
  992. string a_strResult = string.Empty;
  993. try
  994. {
  995. GetXRayElements(a_Milliseconds, ref a_XrayData, ref a_nElementNum, ref a_strResult);
  996. }
  997. catch (Exception ex)
  998. {
  999. log.Error("ControllerSettingForm_btnEanalysis_Click:--GetXRayElements()_Exception" + ex.Message.ToString());
  1000. }
  1001. int[] XData = new int[2000];
  1002. uint nXrayCount = 0;
  1003. for (int i = 1; i <= 2000; i++)
  1004. {
  1005. XData[i - 1] = i;
  1006. nXrayCount += a_XrayData[i - 1];
  1007. }
  1008. //绑定数据源
  1009. chartData(XData, a_XrayData);
  1010. //显示Xray计数
  1011. lbXrayCount.Text = nXrayCount.ToString();
  1012. //显示元素分析结果内容
  1013. ShowXRayElementResultForm showXRayElementResultForm = new ShowXRayElementResultForm((int)a_nElementNum, a_strResult);
  1014. showXRayElementResultForm.ShowDialog();
  1015. }
  1016. }
  1017. log.Info("Element analysis success!");
  1018. }
  1019. catch (Exception ex)
  1020. {
  1021. //记录日志
  1022. log.Error(ex.Message.ToString());
  1023. }
  1024. finally
  1025. {
  1026. string str = table["btneanalysis"].ToString();
  1027. btnPointXRay.Enabled = true;
  1028. btnPointXRay.Refresh();
  1029. btnDisplayXRay.Enabled = true;
  1030. btnDisplayXRay.Refresh();
  1031. btnAreaRay.Enabled = true;
  1032. btnAreaRay.Refresh();
  1033. btnEanalysis.Text = str;
  1034. btnEanalysis.Enabled = true;
  1035. btnEanalysis.Refresh();
  1036. btnClearData.Enabled = true;
  1037. btnClearData.Refresh();
  1038. }
  1039. }
  1040. public bool GetXRayElements(uint a_nXRayAQTime, ref uint[] a_XrayData, ref ValueType a_nElementNum, ref string a_strResult)
  1041. {
  1042. var eds = EDSController.GetEDSController(Convert.ToInt32(tbRWidth.Text), Convert.ToInt32(tbRHeight.Text), 5000);
  1043. var part = new COTSParticleClr();
  1044. var pos = new Point(10, 10);
  1045. part.SetXRayPos(pos);
  1046. var parts = new List<COTSParticleClr>();
  1047. parts.Add(part);
  1048. eds.GetXRayByParts(parts, a_nXRayAQTime, true);
  1049. a_XrayData = parts[0].GetXray().GetXrayData();
  1050. a_strResult = parts[0].GetXray().GetQuantifiedElementsStr();
  1051. a_nElementNum = parts[0].GetXray().GetElementQuantifyData().Count;
  1052. return true;
  1053. }
  1054. #endregion
  1055. }
  1056. }